본문 바로가기
네트워크 (LAN,WAN)

arpwatch로 MAC 주소 관리를 편리하게

by 날으는물고기 2009. 8. 19.

arpwatch로 MAC 주소 관리를 편리하게

네트워크 관리자의 수많은 어려움 중 하나로 단말의 네트워크 카드에 할당돼 있는 MAC 주소 관리를 들 수 있을 것이다. 특히 중대 규모 이상의 네트워크를 운영할 때는 네트워크에 연결된 서버나 PC가 교체되거나 추가돼도 이를 일일이 보고하지 않기 때문에 분기나 반년 또는 1년을 주기로 일괄 조사해 정보를 업데이트하기도 한다.

또한 보안적인 관점에서 LAN 구간에서는 ARP라는 프로토콜을 통해 통신을 하게 되는데, 프로토콜 자체의 취약성이 많다 보니 MAC을 위조하는 형태의 공격에 취약하기 마련이다. 따라서 MAC 주소를 잘 관리하면 만약의 보안 사고를 예방할 수 있을 뿐만 아니라, 보안사고가 발생했을 때 문제 해결의 근거가 되기도 한다. 그렇다면 MAC 주소는 어떻게 관리할 수 있을까.

가장 쉽게 확인할 수 있는 것은 스위치나 라우터와 같은 네트워크 장비에서 확인하는 것이다. 다음 예제는 네이티브 IOS 기반의 스위치에서 확인할 수 있는 방법으로 어떤 MAC주소가 어떤 스위치 포트를 통해 주소를 받았는지(Learning) 알 수 있다. 이를 통해 어떤 포트에 어떤 MAC을 가진 장비가 연결돼 있는지 쉽게 알 수 있다.

IOS>show mac-address-table
Codes: * - primary entry

  vlan   mac address     type    learn qos            ports
------+----------------+--------+-----+---+------
*   92  0009.3d14.4a0b   dynamic  Yes   --  Gi9/6
*   30  000e.0c66.d765   dynamic  Yes   --  Fa4/43
*   90  0013.656a.9c00   dynamic  Yes   --  Gi3/8
*   20  000c.6ebe.bf7a   dynamic  Yes   --  Gi3/5
*   90  00c0.9f04.0f90   dynamic  Yes   --  Gi3/8
*   90  00c0.9f04.7dde   dynamic  Yes   --  Gi3/8
*   92  00d0.b7b8.cfd9   dynamic  Yes   --  Gi9/6

참고로 CatOS의 경우 다음과 같이 확인할 수 있다.

CatOS> show cam dynamic

VLAN Dest MAC/Route Des  [CoS]  Destination Ports or VCs / [Protocol Type]

1     00-e0-81-27-8d-63             4/8 [ALL]
1     00-00-f0-73-11-14             5/32 [ALL]
1     00-00-f0-73-13-fe             5/25 [ALL]
1     00-00-f0-73-15-b8             5/32 [ALL]
1     00-00-f0-73-19-d6             5/32 [ALL]
1     00-00-f0-73-1a-34             5/32 [ALL]
1     00-00-f0-73-1a-42             5/32 [ALL]
1     00-00-f0-73-1a-50             5/25 [ALL]
1     00-00-f0-73-1d-8e             5/32 [ALL]
1     00-00-f0-9f-54-4a             5/32 [ALL]
1     00-01-02-89-c8-97             5/19 [ALL]

다음의 명령어를 이용하면 IP와 MAC 주소를 매칭시킬 수 있다. 따라서 앞의 방법과 다음의 방법을 함께 이용하면, 스위치의 어떤 포트에 어떤 IP와 MAC 주소를 가진 장비가 연결돼 있는지 정리할 수 있을 것이다.
 
IOS>show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.81            6   0000.f073.19e8  ARPA   Vlan93
Internet  192.168.0.87          142   0014.2211.7fc8  ARPA   Vlan30
Internet  192.168.1.80            0   0000.f073.19de  ARPA   Vlan93
Internet  192.168.0.83            0   Incomplete      ARPA
Internet  192.168.0.85          142   0007.e906.bdf9  ARPA   Vlan30
Internet  192.168.1.82           56   0000.f073.1a58  ARPA   Vlan93

그런데, 수시로 조회할 수는 있어도 실시간으로 변동되거나 추가되는 MAC 정보에 대해서는 어떻게 확인할 수 있을까? 이럴 때 유용하게 사용할 수 있는 프로그램으로는 arpwatch라는 프로그램이 가장 대표적이다.
arpwatch의 작동 원리는 매우 간단한다. arp broadcast 패킷을 모니터링해 IP와 MAC 주소쌍을 arp.dat라는 파일에 저장해 두었다가 파일에 저장돼 있지 않은 신규 정보가 보이거나 기존의 정보에서 업데이트된 정보가 있을 경우, 해당 정보를 미리 지정한 관리자에게 메일로 통보하는 기능이다. 이제 arpwatch는 설치해 보자.
arpwatch는 매우 유용함에도 불구하고 공식 홈페이지는 없으며, 소스 파일은 다음 URL에서 다운로드할 수 있다.

ftp://ftp.ee.lbl.gov/arpwatch.tar.gz

arpwatch는 사용자 레벨의 패킷 캡처를 위해 패킷 캡처 라이브러리인 libpcap이 먼저 설치돼 있어야 하므로 혹 설치되어 있지 않으면 http://rpmfind.net/  또는 ftp://ftp.ee.lbl.gov/libpcap.tar.gz에서 다운로드 후 설치하도록 한다. 이후 다운로드 받은 arpwatch를 압축 해제하고 컴파일해 설치한다.

# wget ftp://ftp.ee.lbl.gov/arpwatch.tar.gz
# tar zxvfp arpwatch.tar.gz
# cd arpwatch-2.1a15
# ./configure; make; make install

이제 설치가 끝났으니, 실행해 보자. 먼저 다음과 같이 실행해 정상적인 arp.dat 데이터베이스 파일을 생성해야 한다.

# arpwatch -d

이렇게 간단히 실행해도 되지만, 이 경우 현재 IP의 네트워크 정보를 자동 인식해 이외의 네트워크 대역은 bogon(비할당 IP 주소 공간)으로 출력한다. 이를테면 한 VLAN에 1개의 C 클래스 대역만 사용하면 문제가 되지 않지만, 다른 대역도 한 VLAN에서 서비스된다면 그 대역을 함께 명기해 줘야 한다. 이런 경우 -n 옵션을 주면 되는데, 다음과 같은 경우 두 개의 IP 대역을 지정해 준다는 의미가 된다.

# arpwatch -n 192.168.0.0/20 -n 10.1.0.0/24 -d

따라서 위 IP 대역 이외의 IP 대역이 보인다면 이는 bogon으로 출력된다. 잠시 후 데이터베이스 초기화 작업이 끝난 후, arp.dat 파일을 보면 다음과 같이 ‘MAC : IP주소 : 업데이트된 날짜’ 형태로 저장되는 것을 알 수 있다.

0:2:fc:8:c6:80  192.168.70.254   1166009605
0:e:c:5c:f9:3d  192.168.69.173   1166009594
0:2:b3:23:32:d4 192.168.68.185   1166009005

이후 다음과 같은 옵션을 준 후 실행한다.

# arpwatch
# arpwatch -n 192.168.0.0/20 -n 10.1.0.0/24

잠시 후 root@ 계정으로 다음과 같은 arp 추가나 변경에 대한 경고 메일이 발송되는 것을 알 수 있다. 여기에서 호스트 이름은 IP에 대한 ‘reverse lookup’을 실행한다는 의미이며, 이더넷 장비업체는 OUI에 의해 MAC 주소의 장비업체를 출력해 주는 것이다.
참고로 이 파일은 소스 디렉토리에 있는 ethercodes.dat 파일을 참고하는데, 최신 정보는 http://standards.ieee.org/regauth/oui/oui.txt에서 다운로드받을 수 있다. 그리고 이 arp 정보가 발견됐을 당시 날짜 등의 정보도 보인다.
 
 Subject : new station
        hostname: <unknown>
          ip address: 192.168.69.123
    ethernet address: 0:13:d3:59:d0:a4
     ethernet vendor: MICRO-STAR INTERNATIONAL CO., LTD.
           timestamp: Wednesday, December 13, 2006 20:38:49 +0900

이 예제에서는 처음 보인 정보이기 때문에 ‘new station’으로 보였지만, 이외에도 ‘flip flop’이나 ‘changed ethernet address’ 등과 같이 보일 수 있다. 이는 사전에 arp.dat 파일에 정의된 IP나 MAC 정보가 변경됐을 경우 나타난다. 인터페이스 카드를 변경한 적이 없는데 알람을 받는다면, arp 스푸핑 여부를 의심해 봐야 한다.
만약, 수신하는 메일 주소를 변경하고자 한다면 소스 디렉토리에 있는 addresses.h 파일을 열어 다음과 같이 변경한 후 재컴파일하면 된다. 이 경우 경고 메일이 root 대신 antihong@tt.co.kr으로 전송된다.

#define WATCHER "antihong@tt.co.kr"
#define WATCHEE "arpwatch (Arpwatch)"

arpwatch의 기능은 이것이 전부다. 사실 이 기능 외에 그다지 다른 기능이 필요하지도 않다. arpwatch와 비슷한 기능을 하지만 좀 더 많은 부가기능이 있는 프로그램으로는 arpalert라는 것이 있다. 이 프로그램도 동일한 원리로 작동되는데, 자세한 내용은 홈페이지(http://www.arpalert.com/)를 참고하기 바란다.

작성자 : 홍석법 | 오늘과내일 과장 
작성일 : 2007년 1월

출처 : http://www.ionthenet.co.kr/

728x90

댓글