네트워크 보안 실습 6
Snort 실습
- 환경설정
우분투에서 Apache 실행
- Apache 서버를 실행하여 웹 서버 환경을 구축
Snort 설정 파일 열기
/etc/snort/snort.conf
파일을 열기
HOME_NET 설정
- 자신의 IP 주소를
HOME_NET
으로 설정 - 예시:
1
var HOME_NET 10.10.10.11
- 우분투가 서버이자 IPS 역할을 수행
- 자신의 IP 주소를
- 기본 명령어
커스텀 룰 추가 후 적용
- Snort 설정 파일이 정상적으로 작동하는지 테스트
1
snort -T -c /etc/snort/snort.conf
- Snort 설정 파일이 정상적으로 작동하는지 테스트
스노트 검사 실행 (패킷 모드)
- 패킷을 실시간으로 확인
1
snort -c /etc/snort/snort.conf -v
- 패킷을 실시간으로 확인
스노트 검사 실행 (모니터 모드)
- 콘솔 모드로 경고 메시지를 출력
1
snort -A console -q -u snort -g snort -c /etc/snort/snort.conf
- 콘솔 모드로 경고 메시지를 출력
모니터 모드를 주로 사용함
- 커스텀 룰 설정 실습
- 룰 파일 수정
/etc/snort/rules/local.rules
파일에 커스텀 룰을 추가
ICMP Echo Request 탐지 룰 추가
Snort 탐지 시나리오 및 규칙
- 문제 1: ICMP Echo Request (Ping) 탐지
- 목표: 10.10.10.10에서 10.10.10.11으로 전송되는 ICMP Echo Request 패킷을 탐지
- Snort Rule:
1
alert icmp 10.10.10.10 any -> 10.10.10.11 any (msg:"ICMP Echo Request detected!"; sid:1000001;)
- 테스트 명령 :
1
ping 10.10.10.11
- 문제 2: TCP SYN 스캔 탐지
- 목표: 10.10.10.10에서 10.10.10.11의 80번 포트로 SYN 스캔을 시도할 경우 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 80 (flags:S; msg:"TCP SYN scan detected!"; sid:1000002;)
테스트 명령 :
1
nmap -sS 10.10.10.11 -p 80
- 문제 3: UDP 스캔 탐지
- 목표: 10.10.10.10에서 10.10.10.11의 53번 포트로 UDP 스캔을 시도할 경우 탐지
Snort Rule:
1
alert udp 10.10.10.10 any -> 10.10.10.11 53 (msg:"UDP scan detected!"; sid:1000003;)
테스트 명령 :
1
nmap -sU 10.10.10.11 -p 53
- 문제 4: HTTP GET 요청 탐지
- 목표: 10.10.10.10에서 10.10.10.11의 웹 서버로 HTTP GET 요청을 보낼 경우 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 80 (msg:"HTTP GET request detected!"; content:"GET"; sid:1000004;)
테스트 명령 :
1
curl http://10.10.10.11
- 문제 5: 특정 문자열 포함 탐지
- 목표: 10.10.10.10에서 10.10.10.11으로 전송되는 패킷에 “attack” 문자열이 포함된 경우 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 any (msg:"Possible attack detected!"; content:"attack"; sid:1000005;)
테스트 명령 :
1
echo "attack" | nc 10.10.10.11 80
- 문제 6: Nmap 스캔 탐지
- 목표: Nmap을 이용한 스캔 시도를 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 any (msg:"Nmap scan detected!"; content:"Nmap"; sid:1000006;)
테스트 명령 :
1
nmap 10.10.10.11
- 문제 7: SQL Injection 공격 탐지
- 목표: 웹 서버에 대한 SQL Injection 공격 시도를 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 80 (msg:"Possible SQL Injection attack!"; content:"UNION SELECT"; sid:1000007;)
테스트 명령 :
1
curl "http://10.10.10.11/index.php?id=1 UNION SELECT 1,2,3--"
- 문제 8: Cross-site Scripting (XSS) 공격 탐지
- 목표: 웹 서버에 대한 XSS 공격 시도를 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 80 (msg:"Possible XSS attack!"; content:"<script>"; sid:1000008;)
테스트 명령 :
1
curl "http://10.10.10.11/index.php?name=<script>alert('XSS')</script>"
- 문제 9: DoS 공격 탐지 (Ping Flood)
- 목표: ICMP Echo Request (Ping) 패킷을 이용한 DoS 공격을 탐지
Snort Rule:
1
alert icmp 10.10.10.10 any -> 10.10.10.11 any (msg:"Possible ping flood attack!"; threshold: type threshold, track by_src, count 100, seconds 1; sid:1000009;)
테스트 명령 :
1
ping -f 10.10.10.11
- 문제 10: 특정 포트 접근 시도 탐지 (SSH)
- 목표: 10.10.10.10에서 10.10.10.11의 22번 포트로 접근 시도를 탐지
Snort Rule:
1
alert tcp 10.10.10.10 any -> 10.10.10.11 22 (msg:"SSH access attempt detected!"; sid:1000010;)
테스트 명령 :
1
ssh root@10.10.10.11
- 문제 11: DDoS 공격 탐지
- 목표: 다수의 출발지에서 10.10.10.11으로 향하는 Ping Flood 공격을 탐지
Snort Rule:
1
alert icmp any any -> 10.10.10.11 any (msg:"Possible ping flood attack from changing source!"; threshold: type threshold, track by_dst, count 100, seconds 1; sid:1000011;)
테스트 명령 :
1
nmap -f -sP 10.10.10.11