
저번 시간에 이어서 마저 살피고 추가적으로 Snort까지 달려보자~
오늘은 좀 쉽지 않다. 마음을 단단히 먹고 따라와야 한다.

| 순서 | 필터 명칭 | 주요 기능 |
|---|---|---|
| 1 | 방화벽 필터 | 액세스 제어 및 패킷 필터링 (IP, 포트 등) |
| 2 | QoS 필터 | 프로토콜별, 서비스별, IP 영역별 트래픽 모니터링 및 대역폭 제어 |
| 3 | 무결성 확인 필터 | FTP, DNS, Mail, Web 등 프로토콜 동작 표준 위반 패킷 조사 |
| 4 | Signature 필터 | 악성코드, 취약성, 웜(Worm)에 대한 탐지 및 차단 |
| 5 | DoS/DDoS 필터 | 서비스 거부 공격 및 스캔 공격 탐지/차단 |
| 6 | L7 필터 | TCP/IP 단편화, 웹 우회 공격 등 L7 프로토콜 디코딩을 통한 필터링 |
| 7 | 콘텐츠 필터 | 데이터 콘텐츠 내용을 기준으로 필터링 여부 결정 |
유해 패킷 → [공격 검사 필터] → [무결성 검사 필터] → [차단]
정상 패킷 → [공격 검사 필터] → [무결성 검사 필터] → [허용]
결함 패킷 → [공격 검사 필터] → [무결성 검사 필터] → [분석/로그]
정의: 웹 컨텐츠(HTTP/HTTPS)를 분석하여 웹 공격을 탐지 및 차단하는 기능을 가진 방화벽
특징:

1️⃣ 정보 유출 방지 (Data Leakage Prevention)
└─ 개인정보가 포함된 파일 업로드/다운로드 차단
└─ 게시판 내 개인정보(주민번호, 전화번호 등) 게시 차단
2️⃣ 부정 로그인 방지 (Anti-Credential Stuffing)
└─ 무작위 대입(Brute Force) 공격 차단
└─ 비정상적인 로그인 시도 제어
3️⃣ 웹사이트 위변조 방지 (Anti-Defacement)
└─ 해킹 후 웹사이트 변조 시도 탐지 및 대응
정의: 네트워크에 접속하는 단말의 보안 상태를 점검하여 안전한 단말만 네트워크 접속을 허용하는 시스템

단말기 접속 요청
↓
[NAC 정책 서버 점검]
❶ 정상적인 장치/사용자 인증 확인?
❷ 안티바이러스(백신) 설치 여부?
❸ 최신 보안 패치 설치 여부?
↓
(NO) → [접근 차단] → [치료 유도]
(YES) → [접근 허용] → [Intranet Servers 접속]
정의: 인터넷과 같은 공중망(Public Network)을 이용하여 마치 사설망(Private Network)을 사용하는 것처럼 안전하게 연결하는 기술
핵심 기술:
| 계층 (OSI Layer) | VPN 종류 | 암호화 프로토콜 | 비고 |
|---|---|---|---|
| 2계층 (Data Link) | L2TP VPN, PPTP VPN | L2TP, PPTP | 예전 방식, 보안성 낮음 |
| 3계층 (Network) | IPSec VPN | IPSec | 사이트 간 연결(Site-to-Site)에 주로 사용 |
| 4계층 (Transport) | SSL VPN | TLS | 웹 브라우저 기반, 별도 클라이언트 불필요 |
| 5계층 (Session) | SSL | SSL | - |
| 7계층 (App) | - | HTTPS, SSH | 애플리케이션 레벨 보안 |

1️⃣ Clientless SSL VPN
└─ 별도 클라이언트 설치 없이 웹 브라우저로 접속
└─ 포털 접속 방식
2️⃣ Client-Based Full-Tunnel SSL VPN (AnyConnect)
└─ 전용 클라이언트 설치
└─ 모든 트래픽이 VPN 터널을 통과
3️⃣ Site-to-Site IPsec VPN
└─ 본사(Enterprise)와 지사(Remote Site) 간의 상시 연결
└─ 라우터/방화벽 간의 터널링
정의: 다양한 보안 기능을 하나의 장비로 통합하여 제공하는 통합 위협 관리 시스템
장점:
[ UTM 장비 하나로 해결 ]
Firewall + VPN + IPS/IDS + Antivirus + URL Filtering + Anti-Spam


[Worker Zone] (사용자 영역)
↓
Switch
↓
[Intranet Zone] (내부망)
↓
IPS (침입방지)
↓
Router
↓
TAP 장비 → IDS (침입탐지)
↓
Web Proxy


[Internet]
↓
DDOS 차단 시스템
↓
외부 방화벽 (L2)
↓
백본 스위치 (Backbone)
│
├─ [DMZ Zone]
│ Web Server / Mail Server / DNS
│ WAF / IPS 적용
│
├─ [Server Zone] (통합 서버존)
│ L4 Switch (로드밸런싱)
│ WAS (Web Application Server)
│ DB Server (DB 방화벽 적용)
│ Storage (SAN Switch)
│
├─ [Management Zone]
│ ESM (통합 보안 관제)
│ SMS (서버 관리)
│ NMS (네트워크 관리)
│ VPN Gateway
│
└─ [User Zone] (업무망)
L3 Switch
내부 방화벽
NAC / 백신 관리 서버
사용자 PC
정의: 1998년 마틴 로쉬가 개발한 오픈소스 시그니처 기반 NIDS
특징:
정의: 2010년 OISF에서 개발한 차세대 오픈소스 NIDS/IPS
특징:
플젝할 때 수리카타 때문에 속이 확실하게 썩어서 기억이 안 날 수가 없네...

출처: ResearchGate(uploaded by Biju Issac)
Sniffer (스니퍼)
Packet Decoder (패킷 디코더)
Preprocessor (전처리기)
Detection Engine (탐지 엔진)
Alert/Log (경고/로그)

출처: ResearchGate(uploaded by Youksamay Chanthakoummane)
() 괄호 안에 탐지할 패턴과 세부 조건 정의| Action | 설명 | 비고 |
|---|---|---|
| alert | 경고를 발생시키고 로그 저장 | 가장 일반적 |
| log | 패킷을 로그로 저장 (경고 없음) | |
| pass | 패킷을 무시하고 통과 | |
| drop | 패킷을 차단하고 로그 저장 | IPS 모드 (In-line) |
| reject | 차단 + 로그 + TCP Reset(RST) 또는 ICMP Unreachable 전송 | 적극적 차단 |
| sdrop | 차단하지만 로그는 남기지 않음 |
!80 -> 80번 포트 제외)[192.168.1.1, 192.168.1.2])1:1024 -> 1~1024번)->: 단방향 (왼쪽이 출발지, 오른쪽이 목적지)<>: 양방향 (상호 간 통신)| 옵션 | 설명 | 예시 |
|---|---|---|
| msg | 경고 발생 시 출력할 메시지 | msg:"Malicious Traffic"; |
| sid | 룰 식별 번호 (고유 ID) | sid:1000001; |
| rev | 룰 버전 (수정 횟수) | rev:1; |
| classtype | 공격 유형 분류 | classtype:web-application-attack; |
| priority | 룰 우선순위 (1이 가장 높음) | priority:1; |
💡 SID 범위 참고
0 ~ 99: 예약됨100 ~ 1,000,000: Snort 공식 룰1,000,001 ~: 사용자 정의 룰 (Local Rules)
<이따가 실습 시간에 신나게 쓴다>
우선 Ubuntu 설치를 시작하자!
설치는 구글링 뒤지면 고수형님들이 잘 알려주니까 그걸 참고하자.
설치된 걸로 알고 이제 실습 준비를 하자! 그리고 지금 정신이 나갈 것 같기 때문에 의식의 흐름대로 말을 편하게 쓰겠다.
기본적인 우분투 세팅을 마쳤으면 국룰의 명령어를 입력하기
sudo apt-get update
이것도 설치를 진행
sudo apt install -y net-tools
설치 잘 됐는지 확인 진행
dpkg -l net-tools
막간을 이용한 상식
이제
ifconfig
를 입력해보면 사소한 문제 하나를 느낄 수 있다. 바로 ens33으로 설정이 되어 있다. 이것이 왜 문제냐!

너무 힘들어서 드립 한 번 함
사실 그냥저냥 쓰려면 별 상관 없지만 이상하게 Snort는 eth0일 때 좀 더 수집을 잘한다 카더라...
구글링을 해봤지만 너무 케바케라 외국 쪽은 그냥 ens33쓰던데..?
아무튼 변경을 하라고 하니까 일단 변경을 진행하자!
nano /etc/default/grub
#나노 편집기 안에서 편집을 하자!
GRUB_CMDLINE_LINUX="find_pressed=/preseed.cfgauto noprompt priority=critical locale=en_US net.ifnames=0 biosdevname=0"
#편집하고 저장하고 아래 명령어 입력
grub-mkconfig -o /boot/grub/grub.cfg
명령어에 대한 간단 설명
Snort의 랜카드를 항상 동일하게 인식시키는 과정
eth0, eth1 형태의 옛 네이밍유지 => net.ifnames=0
BIOS가 자동으로 네트워크 장치이름 지정하는것을 비활성화 =>biosdevname=0
설정파일을갱신 => grub-mkconfig-o /boot/grub/grub.cfg
reboot #재부팅해야 적용된다.

화면과 같이 진행하면 된다!!
리부트 때리고 ip 설정을 다시 진행해야 한다.
왜? ->랜 카드를 다시 설정했으니깐(어차피 연결 안된다고 친절하게 알려줌)

전에 했던 설정 그대로 진행시켜!
이제 바뀌었는지 확인을 해보자


굳굳 잘 바뀌었다!

이렇게 나오면 이렇게 설정주고 탭치고 ok버튼 때리라
인자 잘 깔았는지 확인 타임

반가운 돼지새끼가 보인다!
정상적이다.
혹시 모르니까 다시 한 번 확인 때리고

이제 본격적으로 실습을 위한 세팅을 드가자

그렇다면 이 snort.conf 파일이 무엇이냐
✓ Snort의 주요 설정파일
✓ Snort의 전체 동작 방식을 제어
✓ Snort가 동작 시 필요한 환경변수 정의, 로그위치, rule파일, 탐지옵션 등을 지정
✓ 네트워크 주소범위나 포트 등의 환경변수 지정
✓ Rule 포함 영역정의, 어떤 rule 파일을 사용할 지를 지정하는부분
✓로깅 경로설정, snort가 탐지로그를 저장할 기본경로
라고 한다.
궁금하면 확인하면 됨
근데 이 위에 rules라는 디렉이 보인다 뭐가 있는지 확인해보자

무슨무슨 rules가 엄청 많다.
그럼 이게 다 뭐냐?
지금까지 알려진 공격들에 대한 탐지 룰을 Snort에서 탑재해놓은 것이다. 이중에서 우리가 봐야 하는 것은 local.rules임
local.rules는 사용자 지정으로 탐지 룰을 지정할 수 있다 이말임
그렇다면 뭐냐 실습용으로 딱이지
그러면 안에 뭐가 들어잇나 보자

싹 까보니까 이래 나온다 뭐 전부 주석이라 별 의미도 없다.
이제 명령어 드가자 나노편집기 신나게 열고 명령어 입력한다.

alert icmp any any -> any any (msg:"First Test"; sid:3000001;)
이제 잘 됐는지 확인을 해야 한다.
# Rule 테스트 및 오류 검사
sudo snort -T -c /etc/snort/snort.conf

성공했단다. 다행히 명령어를 똑바로 입력했다
sudo snort -i eth0 -c /etc/snort/snort.conf
# Rule 을 인터페이스에 적용

좋아 이제 rule에 문제가 없으니까 어제 설정했던 거 싹 다 키자

아까 했던 이거는 꺼두지 말고 새로 터미널을 하나 더 열자
그리고 아래 명령어를 입력하자
#탐지 로그확인
sudo tail -f /var/log/snort/snort.alert.fast
그럼 우분투에서는 2개의 터미널에서 모두 돌아가고 있있어야 한다잉
이제 칼리 드가서 핑 한 번 때리자
# <공격자 Kali> #root로 진행하자
ping 192.168.10.20

이제 우분투로 돌아오면 로그가 찍히는 것을 확인할 수 있다

굳굳 성공했다!!
이제 고작 rule 하나 했을 뿐이다. 이제 추가 드간다.
alert tcp any any -> 192.168.10.0/24 21 (msg:"FTP Admin Access";content:"USER msfadmin";nocase; sid:3000002;)

추가된 것을 확인할 수 있다.
아까 했던 거 반복하자 기억이 안나면 위로 올라가서 다시 보고와라
sudo snort -T -c /etc/snort/snort.conf # Rule 테스트 및 오류 검사
sudo snort -i eth0 -c /etc/snort/snort.conf # Rule 을 인터페이스에 적용
하지만 난 친절하니까...


성공적으로 완료했다
잠깐 우분투는 멈추어놓고 칼리로 돌아가자
# <공격자 kali>
ftp 192.168.10.20
이번에는 metasploitable에 ftp 서비스를 이용해보려고 한다.
위에 명령어 칼리에다 박아주기 전에 와이어샤크 켜서 수집 한 번 해보자

그동안 배웠던게 보인다 3-way handshake도 보인다. 안 보이면 다시 복습을 하자
이렇게 전체로 보지 말고 저번에 배웠던 display filter을 이용해보자

빨간색 밑줄을 보자

칼리창에서 입력했던게 전부 노출된다.
이런 노출을 탐지하기 위해서 우리가 지금 snort rule을 만들었다.
이제 왜 이런 snort rule을 정한 건지 알 수 있당
그러면 이제 이해를 모두 했으니까 snort로 로그를 한 번 찍어서 탐지를 진행해보자
아까 rule 1처럼 ubuntu에 터미널 2개 키고
sudo snort -i eth0 -c /etc/snort/snort.conf
위에 명령어로 킨 터미널은 계속 실행되게 두고 나머지 터미널에서
sudo tail -f /var/log/snort/snort.alert.fast
이 명령어를 실행해보자
이제 다시 칼리에게 했던 명령어를 다시 입력하자

전에 했던 로그의 잔재가 많이 있지만 빨간 밑줄을 보면 잘 탐지를 한 것을 알 수 가 있다.
이제 rule 2가 끝이 났다. 그치만 뒤에 3개나 더 있어
rule 3 들어가자. 일단 여기서 한 번 끊고
rule 3를 시~~ 작~~ 하겠습니다.

alert tcp 192.168.10.10 any -> 192.168.10.20 any (msg:"Xmas Port Scan Detection";flags:UPF;sid:3000003;)
보면 알겠지만 저번에 배웠던 포트스캔을 감지할 것이다.
아까처럼 우분투 터미널 2개 돌리고
sudo snort -i eth0 -c /etc/snort/snort.conf
위에 명령어로 킨 터미널은 계속 실행되게 두고 나머지 터미널에서
sudo tail -f /var/log/snort/snort.alert.fast
이 명령어를 실행해보자
그리고 칼리 드가서 때리자
<공격자 Kali>
nmap –sX 192.168.10.20


엄청 잘 잡힌다!! 이 정도면 관제하다 깜놀할 듯...
rule 3은 성공적으로 로그를 탐지하였다. 이제 rule 4 드가자!
alert tcp 192.168.10.20 23 -> any any (msg: "Telnet Fail"; content:"login incorrect"; nocase; sid:3000004;)
다시 한 번 신나게 나노 편집기 열고 변경 뒤 저장

rule 4는 Password Cracking Attack Detection Rule이다.
그리고 그거.. 그래 그거 2개 돌리자

와 ! 에러다....하하하
문구를 보니까 sid를 id라고 적었다....
후다닥 수정했다....(위 명령어는 수정했음)

바꾸니까 성공했다. 식겁했네
칼리 들어가서 때리자
telnet 192.168.10.20


텔넷에 접속했다고 나온다.


화면이 작아서 잘 안 보이지만 착한 눈 뜨면 다 보인다.
정상적으로 Telnet Fail이 출력되는 것을 확인할 수 있다.
찐막 rule 5 시작
rule 5는 SYN Flooding Attack Detection Rule이다.
alert tcp any any -> 192.168.10.0/24 80 (msg:"TCP SYN Flooding Attack"; flags:S; threshold:type threshold, track by_src, count 2, seconds 10; sid:3000005;)

이쯤 왔으면 뭐 해야 될 지 아시죠?
그러면 돌리시고 칼리로 갑니다.
hping3 --rand-source 192.168.10.20 –p 80 –S --flood
익숙하시죠..어제 했으니까요


칼리 때리니까 무섭게 로그가 찍힌다. 근데 아무리 봐도 우리가 원하는 메시지가 출력이 안 될 것 같아서 중단을 했다.
어케 해야 되누..?
그럴 땐 grep을 쓰자
sudo tail -f /var/log/snort/snort.alert.fast | grep "TCP SYN Flooding Attack"
이걸로 변경하고 다시 칼리를 때리자!

Great ! 내가 원하는 것만 아주 잘 나온다~~
마지막까지 완벽하게 로그 탐지를 성공!!!!!!!!!!!!!!!!!!!
alert tcp any any -> 192.168.10.0/24 80 (msg:"TCP SYN Flooding Attack"; flags:S; threshold:type threshold, track by_src, count 2, seconds 10; sid:3000005;)
이 명령어를 잘 보면 위에서 복습을 안 한게 있는데 이건 내일 Snort 마무리 할 때 같이 정리하도록 하겠다. 오늘은 장표가 너무 길어... 어제도 길었던 것 같은데..
다들 고생하셨고 저도 고생하셨고 내일도 달릴 기운은 없지만 달리기는 해야죠ㅠㅠ
벌써 00시 40분이다.
이제 자격증 공부해야겠지... 하하하하