본문으로 바로가기

Snort (네트워크 침입 차단,탐지 시스템) 실습

category 보안 2021. 5. 2. 18:52
반응형

Snort 실습을 진행 하려고 한다.

 

Snort란

자유-오픈소스 네트워크 침입 차단 시스템(NIPS: Network Intrusion Prevension System) 이자, 네트워크 침입 탐지 시스템(NIDS: Network instrusion Detection System) 이다. 트래픽 분석과 IP에서의 패킷 로깅을 수행할 수 있는 능력을 갖고 있으며 조사나 공격을 탐지하는데 사용될 수 있다. (포트스캐닝, 랜드어택 등등) 

 

실습을 하기위해 사용한 프로그램 으로는 GNS3상에서 Snort를 설치하여 방화벽 용도를 해줄 Centos7 한대, 공격을 받기 위한 웹서버(아파치)를 설치해둔 Centos7 한대, 공격을 진행할 칼리리눅스 한대 이렇게 준비했다.

구성도

 

 

각 CentOS7 들은 ip 설정을 해주었고 칼리 리눅스도 진행을 해줬다. Centos7 의 네트워크 설정은 많이해서 손에 익었지만 칼리 리눅스의 네트워크 설정은 처음이라 기록을 해놓는것이 좋을 것 같다.

 

칼리 리눅스 네트워크 설정

칼리 리눅스의 네트워크 설정파일 위치 /etc/network/interfaces 파일

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

auto eth0
iface eth0 inet static
address [원하는 ip ]
netmask[net mask ]
gateway[원하는 게이트웨이 주소]
dns-nameserver [ DNS 주소 ]

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

설정 후 네트워크 재시작

 

systemctl restart networking

 

네트워크 적용 완료.

 

 

위의 구성도를 보면 Snort 컴퓨터와 Apache 컴퓨터 사이에 라우터가 한대 있지만 저건 그냥 연결해주는 용도(스위치)로 사용할 것이고 실제로 Apache 웹서버 컴퓨터의 네트워크 게이트웨이는 Snort 컴퓨터의 40.40.40.40 으로 지정해 주었다.

문제는 컴퓨터는 자신에게 온 통신이 아니면 버리는 특성이 있어서 Snort 컴퓨터가 외부 네트워크와 통신을 할 때 40.40.40.44 에게 가는 통신은 자기에게 온것이 아니니 버릴 수가 있다는 점이다. 그래서 라우팅 기능을 수행할 수 있게 자신에게 온 통신이 아니면 다른곳으로 포워딩 해주는 설정을 해줘야 한다. (실제로 포워딩을 허용해주는 것은 보안상 좋지 않다고 한다.)

 

포워딩 설정 (Centos7 기준)

명령어 

sysctl -w net.ipv4.ip_forward=1

결과

net.ipv4.ip_forward = 1 (포워딩을 허용)

 

포워딩 설정을 해주었으니 Apache 웹 서버 컴퓨터가 외부 인터넷과 통신이 가능한지 실행해 보자. 

 

1) 오류 처음에는 실행이 잘 되지 않아서 확인을 해보니 외부 인터넷과 연결하는 라우터가 40번 네트워크 대역을 몰라서 되질 않았다. == 40번 네트워크 대역 라우팅 테이블 추가 후 해결 

conf -t 

ip route 40.40.40.0 255.255.255.0 [40번 대역으로 가기위해 통과 해야할 hop address]

 

2) 결과

 

이제 네트워크 구성이 전부 끝이 났다.

 

Snort 컴퓨터에 Snort 프로그램을 설치하자.

 

 

Snort 설치(url 주소는 수정될 수 있음. 2021.05.02 기준 CentOS7 버전)

wget http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/atomic-release-1.0-20.el7.art.noarch.rpm wget http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/atomic-release-1.0-21.art.noarch.rpm

wget http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/atomic-release-1.0-21.el7.art.noarch.rpm

rpm -Uvh atomic-release*rpm

yum install snort

 

Snort 프로그램 설정(etc/snort/snort.conf)

249번 라인 주석처리.  (Snort 프로그램이 Detection 할 때 참고하는 디렉토리 같은데 현재 그 디렉토리 가 없으니 주석 처리를 한다.)

 

506,507번 라인 주석처리(화이트리스트, 블랙리스트 파일이 없기 때문)

541~657번 까지 많은 rule 들이 설정 돼 있는데. 직접 rule파일을 만들어서 실습해볼 것이므로 라인 삭제)

541번 라인에서 d657G(라인삭제 vi편집기 단축키) 

Snort 설정

alert, log, pass ( 탐지만 하는 애들) Rule 헤더
drop,sdrop, reject (거부 하는 애들) : drop 은 로그를 남기고 sdrop은 로그를 안남김  

 

-기본 설정
[Rule헤더] [프로토콜] [출발지 IP] [출발지 포트] -> [도착지IP] [도착지 포트] [Rule 옵션]

[탐지] [icmp 프로토콜] [어디서 출발하고] [어느 포트던] [ICMP Detected] 라고 로그를 남기게 rule 파일을 만들었다.

 

이제 

(1).Snort 프로그램을 실행 시킨 후

(2).칼리 리눅스 컴퓨터에서 Apache 웹서버 컴퓨터로 핑을 날리면

(3)./var/log/snort 디렉토리 안에 alert라는 파일로 로그가 남게 될 것이다.

 

1.Snort 프로그램 실행

snort -i ens33 -c /etc/snort/snort.conf

실행에 성공하면 귀여운 돼지가 나온다

칼리리눅스에서 단순한 ping을 보냈으나 alert log 파일에 로그가 남지 않았다. 

지웠던 rule directory 를 찾아갈 수 있게 코드를 추가해준다 (snort.conf 파일)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 

include /etc/snort/rules/myrule << 추가 (myrule 디렉토리는 자신이 생성한 디렉토리명과 일치해야 한다.)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

2. 칼리 리눅스에서 핑

GNS3 프로그램이 오락가락 해서 연결이 잘 됐어도 핑이 갑자기 안나갈 때가 있다. 그럴 때 마다 선을 다른 네트워크대역으로 가는 선을 뺐다 꼽으니 해결됐다.

3. 로그 확인

 

Land Attack 공격 탐지

Land Attack 이란 먼저 Local Area Network Denial Attack 으로 ip스푸핑을 이용한 syn 공격이다.

공격자는 공격대상 시스템의 IP주소로 출발지 주소를 변경한 (spoofed) TCP SYN 패킷을 보낸다.

패킷을 받은 시스템은 TCP SYN-ACK를 자신에게 보내게 되고 유효시간 까지 빈 연결을 만들게 된다.

이과정으 반복하게 되면 시스템에는 빈 연결이 계속해서 쌓여 시스템 버퍼가 범람하게 되고, 결과적으로

서비스 거부(DoS) 상태가 된다.

출처:m.blog.naver.com/brickbot/220416019291

 

DDos 공격 - LAND ATTACK이란 뭘까?

- LAND ATTACK - Land Attack은 Local Area Network Denial Attack으로 IP스푸핑을 이...

blog.naver.com

 

1)rule 파일에 옵션 추가.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

alert ip any any -> any any (msg:"Land Attack Detected!!"; sameip; sid:100002;)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

2)Snort 실행 후 칼리 리눅스에서 Land Attack 공격 실행

 

hping3 [목적지 ip주소] -a [목적지 ip주소] --flood -S

 

3)Snort 컴퓨터 로그확인 (/var/log/snort/alert)

Land Attack 공격을 감지하고 로그를 남겼다. 

 

오늘 실습은 여기까지.. 여러가지 방어옵션(포트스캐닝에 대응 한다던지) 가 있지만 오늘은 간단히 

누가 ping을 보내서 icmp 프로토콜을 탐지한다던지, Land Attack을 탐지한다던지 두개를 진행 해 보았다.

 

재밌었다. 

반응형