| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 클라우드기반 보안 시스템 구축/운영 실무
- DVWA#Brute#Force#Attack#Test#Kali#Linux#Medium#Level#sleep
- Kali#Linux#KALI#LINUX#INSTALL#github#설치
- 모듈프로젝트
- VMWARE#INSTALL#설치
- 개인정보보호
- 시스템-네트워크 보안 기술
- 인프라 활용을 위한 파이썬
- 모듈 프로젝트
- Case Study
- CERT
- 클라우드 보안 기반
- rocky linux#siem#project#threat detection#soc#onpremise#ids#python#csv#pipeline#kali linux#DVWA#security monitoring
- 클라우드 기반
- Foxyproxy#install#setting#firefox
- sk shieldus
- #루키즈
- Kali#Linux#Brute#Force#Attack#Test#DVWA#Hacking#Low#무차별#대입#공격#해킹
- DVWA#INSTALL#github#security#kali#linux
- 29기
- 루키즈
- 보고서
- kisa #보안관제
- 모의침투
- 기술 특강 및 OT
- 쉴더스
- AI #취업
- 클라우드 보안 기술
- 애플리케이션 보안 기술
- sk 쉴더스 루키즈
- Today
- Total
이것저것
[SK shieldus Rookies 29기] 16일차 본문
저번 시간에 이어서 마저 살피고 추가적으로 Snort까지 달려보자~
오늘은 좀 쉽지 않다. 마음을 단단히 먹고 따라와야 한다.
침입차단시스템(IPS) 필터 상세
IPS 7가지 핵심 필터

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

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

단말기 접속 요청
↓
[NAC 정책 서버 점검]
❶ 정상적인 장치/사용자 인증 확인?
❷ 안티바이러스(백신) 설치 여부?
❸ 최신 보안 패치 설치 여부?
↓
(NO) → [접근 차단] → [치료 유도]
(YES) → [접근 허용] → [Intranet Servers 접속]VPN (Virtual Private Network)
VPN 개념
정의: 인터넷과 같은 공중망(Public Network)을 이용하여 마치 사설망(Private Network)을 사용하는 것처럼 안전하게 연결하는 기술
핵심 기술:
- 터널링 (Tunneling): 가상 경로 생성
- 암호화 (Encryption): 데이터 보호
- 캡슐화 (Encapsulation): 암호화 헤더 추가
계층별 VPN 프로토콜
📊 VPN 프로토콜 비교
| 계층 (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 | 애플리케이션 레벨 보안 |
Cisco ASA VPN 유형
주요 VPN 구성 방식

1️⃣ Clientless SSL VPN
└─ 별도 클라이언트 설치 없이 웹 브라우저로 접속
└─ 포털 접속 방식
2️⃣ Client-Based Full-Tunnel SSL VPN (AnyConnect)
└─ 전용 클라이언트 설치
└─ 모든 트래픽이 VPN 터널을 통과
3️⃣ Site-to-Site IPsec VPN
└─ 본사(Enterprise)와 지사(Remote Site) 간의 상시 연결
└─ 라우터/방화벽 간의 터널링UTM (Unified Threat Management)
UTM 개념
정의: 다양한 보안 기능을 하나의 장비로 통합하여 제공하는 통합 위협 관리 시스템
장점:
- 투자 비용 절감
- 관리 편의성 증대
- 중소 규모 네트워크(SMB)에 적합
📦 UTM 통합 기능
[ UTM 장비 하나로 해결 ]
Firewall + VPN + IPS/IDS + Antivirus + URL Filtering + Anti-Spam
보안망 구성도 - 물리적 배치
Worker Zone & Server Zone 구성

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

전사적 통합 보안 아키텍처
엔터프라이즈급 보안망 구성

[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핵심 암기 사항
✅ 보안 장비 핵심
- IPS: 7가지 필터(방화벽, QoS, 서명, DoS, L7 등)로 능동적 방어
- WAF: 웹 전용 방화벽 (OWASP Top 10, 정보유출, 부정로그인 방지)
- NAC: 단말 무결성 검사 (백신, 패치, 인증 확인 후 접속 허용)
- UTM: 방화벽+IPS+VPN+백신 등을 하나로 통합 (비용 절감)
✅ VPN 프로토콜
- 2계층: PPTP, L2TP (보안 약함)
- 3계층: IPSec (사이트 간 연결 표준)
- 4계층: SSL (웹 브라우저 기반, 원격 접속 용이)
✅ 망 분리 및 존(Zone) 구성
- DMZ: 외부 서비스(Web, Mail) 위치, WAF/IPS 필수
- Server Zone: 중요 데이터(DB, WAS) 위치, DB접근제어 필수
- Worker Zone: 내부 사용자, NAC/백신 필수
NIDS 개요 (Snort && Suricata)
📌 Snort (스노트)
정의: 1998년 마틴 로쉬가 개발한 오픈소스 시그니처 기반 NIDS
특징:
- 네트워크 패킷을 수집하여 트래픽 모니터링
- 준비된 규칙(Rule)과 비교하여 침입 탐지 및 경고 발생
- 시그니처(Signature) 기반: 악의적인 문자열(패턴)을 탐지하여 판단
📌 Suricata (수리카타)
정의: 2010년 OISF에서 개발한 차세대 오픈소스 NIDS/IPS
특징:
- 멀티코어 및 멀티스레드 지원 (대용량 트래픽 처리에 유리)
- Snort Rule과 완벽 호환
- 하드웨어 가속 및 Lua 스크립트 지원
플젝할 때 수리카타 때문에 속이 확실하게 썩어서 기억이 안 날 수가 없네...
Snort 아키텍처

출처: ResearchGate(uploaded by Biju Issac)
5단계 처리 과정
Sniffer (스니퍼)
- 네트워크 인터페이스에서 패킷을 수집 (Promiscuous Mode)
Packet Decoder (패킷 디코더)
- 수집된 패킷을 데이터 링크 계층부터 상위 계층까지 파싱 및 정규화
Preprocessor (전처리기)
- 패킷을 탐지 엔진이 처리하기 좋게 가공 (예: 단편화된 패킷 재조립, 인코딩된 URL 디코딩)
- 플러그인 형태로 동작 (HTTP, FTP, SSH 등)
Detection Engine (탐지 엔진)
- 정의된 룰(Rule)과 패킷을 비교 매칭
- 가장 핵심적인 부분 (부하가 가장 많이 발생)
Alert/Log (경고/로그)
- 매칭된 룰에 따라 경고 발생 또는 로그 파일 저장
Snort Rule 구조
📌 기본 구조

출처: ResearchGate(uploaded by Youksamay Chanthakoummane)
- Rule Header: 처리 방식(Action), 프로토콜, IP/Port 주소, 방향 결정
- Rule Option:
()괄호 안에 탐지할 패턴과 세부 조건 정의
Rule Header 상세
1) Action (처리 방식)
| Action | 설명 | 비고 |
|---|---|---|
| alert | 경고를 발생시키고 로그 저장 | 가장 일반적 |
| log | 패킷을 로그로 저장 (경고 없음) | |
| pass | 패킷을 무시하고 통과 | |
| drop | 패킷을 차단하고 로그 저장 | IPS 모드 (In-line) |
| reject | 차단 + 로그 + TCP Reset(RST) 또는 ICMP Unreachable 전송 | 적극적 차단 |
| sdrop | 차단하지만 로그는 남기지 않음 |
2) Protocol
- tcp, udp, icmp, ip
3) IP Address & Port
- any => 모든 주소/포트
- ! => 부정 연산자 (예:
!80-> 80번 포트 제외) - [ ] => 여러 IP 지정 (예:
[192.168.1.1, 192.168.1.2]) - : => 포트 범위 (예:
1:1024-> 1~1024번)
4) Direction (방향)
->: 단방향 (왼쪽이 출발지, 오른쪽이 목적지)<>: 양방향 (상호 간 통신)
Rule Option - 일반 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
| 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
막간을 이용한 상식
- dpkg는 .deb 파일로 이루어진 패키지를 관리한다.
주로 패키지를 직접 다운로드하여 설치할 때 사용되며, 이를 통해 패키지를 수동으로 설치,삭제,정보 확인 등이 가능하다. - 옵션 :
- dpkg -i [패키지 이름]: 패키지 설치
- dpkg -r [패키지 이름]: 패키지 삭제
- dpkg -l [패키지 이름]: 패키지 설치 여부 확인
- dpkg --list: 설치된 패키지 목록 확인
- dpkg --configure [패키지 이름]: 설치 중 중단된 패키지 설정
이제
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분이다.
이제 자격증 공부해야겠지... 하하하하
'SK Shieldus Rookies 29' 카테고리의 다른 글
| [SK shieldus Rookies 29기] 18일차 (0) | 2025.12.05 |
|---|---|
| [SK shieldus Rookies 29기] 17일차 (0) | 2025.12.05 |
| [SK shieldus Rookies 29기] 15일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 14일차 (1) | 2025.12.04 |
| [SK shieldus Rookies 29기] 13일차 (0) | 2025.12.04 |
