강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

ARP 스푸핑(ARP Spoofing) 감지를 위한 arpwatch

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문


ARP 스푸핑(ARP Spoofing) 감지를 위한 arpwatch



요즘 arp 스푸핑이 많이 발생하고 있다.
arp스푸핑을 이용하여 홈페이지 내용을 변경하건, 악성코드를 심거나, 페이지가 안 뜨게 하는 공격들이 많이 발생되고 있다. 심한 경우, 모든 서버가 불능인 상태에 이른다.



1. arp스푸핑이 뭐길레 이렇게 큰 장애를 일으킬까??
arp는 Address Resolution Protocol이다. 이는 IP주소 (ipv4에서는 32Bit주소)를 MAC(48Bit 주소)으로 변환 하는 것이다. arp는 IP에 대응하는 MAC를 찾기위해서 다음과 같은 방법으로 찾는다.
어떤 IP의 MAC알 알고자 할 때, 모든 물리적인 인터페이스에 요청하는 신호를 보낸다. 이 신호를 받은 호스트들은 자기 IP와 같다면, MAC을 응답하게 된다. 이 과정에서 공격자가 모든 IP에 대한 MAC응답을 해 버리면, 모든 IP는 하나의 MAC를 찾아가게 된다.
이 하나의 서버에서 사이트를 변조해 악성코드를 넣어 배포하는 경우가 많이 생기고 있다.
이런 경우 중복되는 MAC을 찾아 문제의 서버를 제거하면 끝나지만, MAC으로 서버를 찾는것은 그리 쉽지 않다.
arp는 기본적으로 20분간 캐싱을 한다. 더 실 수도 있고, 더 짧을 수 도 있다. 문제가 발생했을 때, 라우터의 arp테이블을 비우면 어느정도 해결된다. 하지만, 곶 문제가 발생하게 된다.



2. 서버에서 arp 테이블을 보려면?
서버에서 arp 테이블을 볼 수 있다. 물론 PC등 거의 모든 OS에서 다음 명령을 제공한다.
arp -a
? (192.168.100.2) at 00:04:0B:8F:7B:F8 [ether] on eth0
sw1 (192.168.100.1) at 00:18:6E:F8:7A:20 [ether] PERM on eth0
? (192.168.100.5) at 00:30:1E:12:A0:58 [ether] PERM on eth0
? (192.168.100.4) at 00:18:6E:71:E3:80 [ether] PERM on eth0



3. arp 스푸핑을 사전에 탐지 알 수 있나요?
arp 스푸핑을 사전에 탐지하기 위해서는 MAC을 관리하는 것이다. 하지만, 이는 아주 번거로운 일이다. 서버들 마다 MAC을 조사해도, 서버겨 교체되면 부지런히 갱신해야 한다.
라우터에서 중복된 MAC값을 찾아내더라도, 잘 관리되지 않으면 PC를 찾을 수 없다.



4. arpwatch 를 이용하면 해결 할 수 있습니다.
arpwatch는 arp broadcast 패킷을 모니터링해서 IP와 MAC 주소쌍을 arp.dat라는 파일에 저장해 둔다. 그리고 지속적으로 모니터링 하다 arp.dat 파일보다 신규 데이터거나, 변하는 것이 있으면 알려 주게 된다.
알려주는 방법은 프로그램을 실행시키고 있다면, 화면에 보이며, 메일 주소를 설정하였다면, 해당 메일으로 메시지를 보내게 된다.



5. arpwatch 설치법
요즘 대부분 배포판은 arpwatch 를 제공한다.
다음과 같은 방법으로 쉽게 설치할 수 있다.

1) Redhat, fedora, centos 등
yum install arpwatch
명령으로 쉽게 설치할 수 있으며, 데이터 파일 위치는 다음과 같다.
/var/arpwatch/arp.dat

2) 데비안, ubuntu등
apt-get install arpwatch
명령으로 쉽게 설치할 수 있으며, 데이터 파일 위치는 다음과 같다.
/var/lib/arpwatch/arp.dat


3) 기타 배포판
ftp://ftp.ee.lbl.gov/arpwatch.tar.gz
위 파일을 다운로드 받아서. 앞축을 풀고, 다음과 같은 절차에 따라 진행한다.
wget ftp://ftp.ee.lbl.gov/arpwatch.tar.gz
tar xvfpz arpwatch.tar.gz
cd arpwatch-2.1a15/
./configure
make
make install
위와 같은 방법으로 설치할 수 있다.



6. 실행 및 설정 ( redhat 계열 기준)
1) 환경 설정
먼저 /etc/sysconfig/arpwatch 파일을 열서 수정한다.
# -u : defines with what user id arpwatch should run
# -e : the where to send the reports
# -s : the -address
OPTIONS="-u pcap -e '메일주소' -s '보내는이(Arpwatch)' -n '192.168.100.0/24'"


위 옵션은 다음과 같은 의미를 가진다.
-e : 수신 Email 주소를 의미한다.
-s : 보내는이
-n : 감시할 IP대역
-u : arpwatch를 실행할 사용자 (기본 pcap이니 기본으로 두자)



2) 실행
service arpwatch start

위와같이 실행하면, arpwatch 데몬이 뜨면서 실행된다.
처음에는 새로운 호스트를 찾았다고 new station 이란 제목으로 메일이 잔뜩 오게 된다.
변경되는 경우 'changed ethernet address'이란 제목의 메일이,
맥이 중복되는 경우 'flip flop' 이런 제목의 메일이 오기도 한다.



7. 장애 대처법
이렇게 arpwatch 프로그램을 띄워두게 되면, 대부분은 호스트에 대한 IP와 MAC을 감지해, arp.dat파일에 기록되게 된다.
그 파일을 잘 활용하면, 장애가 발생했을 때, 쉽게 MAC으로 IP를 찾을 수 있을 것이다.



8. MAC에 대한 하드웨어 정보가 나온다?
새로운 호스트를 찾거나, 변경되거나 arpwatch는 MAC에 해당되는 장치 제조사를 조회하게 된다.
다음은 예제이다.

From: arpwatch (Arpwatch doly-desktop)
To: root
Subject: new station eth0

hostname:
ip address: 192.168.0.211
interface: eth0
ethernet address: 0:90:27:8d:3d:45
ethernet vendor: Intel Corporation [Intel]
timestamp: Sunday, January 13, 2008 20:23:13 +0900


위 MAC은 intel사에 제작한 것임을 알 수 있다.
그렇다면, 이 정보는 어디에서 가져오는 것일까?
/var/arpwatch/ethercodes.dat 파일에 저장되어 있다.
이 파일을 최신정보로 갱신하려면,
wget http://standards.ieee.org/regauth/oui/oui.txt
mv oui.txt /var/arpwatch/ethercodes.dat
이렇게 하면 최신 하드웨어 정보로 업데이트 된다.



9. 마치며
오랫동안 고생했다. 이런 좋은 방법을 미리 발견했다면, 많은 장애들을 사전에 처리했을 것인데..
비슷한 고생을 하신분께.. 도움이 되었으면 한다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  91 명