728x90
반응형
- -m : 모듈 사용
- conntrack : 세션 감시 모듈
- --ctstate (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED)
- NEW : 이전에 없던 패킷의 새로운 첫 연결 요청이 들어오는 패킷
- ESTABLISHED : NEW상태를 거친 이후의 패킷 / 새로운 연결 요청에 관한 그 후의 패킷들이 오고가는 상태
- RELATED : 새로운 연결 요청이지만, 기존의 연결과 관련된 패킷
- INVALID : 이전 상태 중 어떤 것도 적용되지 않는 패킷
- --ctstate (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED)
- limit : 시간당 패킷의 흐름(갯수) 제한
- string : 문자열 필터링
- conntrack : 세션 감시 모듈
iptables - 상태추적 (packet filtering, stateful insepection)
정책조건
- 비정상적인 패킷은 로그를 남긴 후 패킷을 DROP 한다.
설정
# iptables -A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "INVALID"
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP //유효하지 않은 상태의 패킷은 DROP
# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -m conntrack --ctstate INVALID -j LOG
# iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -m conntrack --ctstate INVALID -j LOG
# iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 상태추적 명령어는 각 체인별 명령어의 최상단에 입력하면된다.
iptables - 패킷 제한 (limit)
# 사용방법
iptables -A -string ㅇㅇㅇ -m limit --limit 패킷수/시간단위 -j ACCEPT
iptables -A ㅇㅇㅇ -j DROP
- 시간단위 :
시 : j 분 : m 초 : s
정책조건
- 방화벽은 초당 5개까지 ICMP 패킷을 허용할 수 있다. 초당 6번째 부터 차단되는 패킷은 로그로 기록해라.
설정
# iptables -A INPUT -p icmp -m limit --limit 5/s -j ACCEPT
# iptables -A INPUT -p icmp -j LOG --log-prefix "Flooding"
# iptables -A INPUT -p icmp -j DROP
위 명령어 확인 방법
- hping -1 --fast -c 10 192.168.100.100 //icmp패킷을 1초안에 10개를 보냄
iptables - 문자열이 포함된 패킷 필터링 (string)
# 사용방법
iptables -A ㅇㅇㅇㅇ -m string --string "문자열" --algo 알고리즘명 -j DROP
iptables -A ㅇㅇㅇㅇ -m string --hex-string "hex값" --algo 알고리즘명 -j DROP
- 알고리즘 : bm, kmp
정책조건
- 기본정책은 차단, 방화벽에는 7777번 포트로 동작하는 서버데몬이 있다.
- 이 서버데몬과 통신하는 것을 허용하되 메세지 중 “hack_data”라는 내용이 포함되어 있으면 이를 로그로 기록하고 차단한다.
설정
# iptables -A INPUT -p tcp --dport 7777 -m string --string "hack_data" --algo bm -j LOG --log-prefix "DROP_STRING"
# iptables -A INPUT -p tcp --dport 7777 -m string --string "hack_data" --algo bm -j DROP
# iptables -A INPUT -p tcp --dport 7777 -j ACCEPT
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
위 명령어 확인 방법
- yum install nc
- nc -l 7777
- ctrl+F2(커널전환 후 netstat -ntl 확인 시 nc가 열려있음을 확인가능)
- OfficePC에서 → echo “data” | nc fwlP(방화벽IP)
728x90
반응형