IPS: 탐지, 차단은 선택/IDS: 탐지 중점, 차단 가능은 함
기본 개념
기본 정책
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
- ACCEPT : 허가 → 디폴트
- REJECT : 반송
- DROP : 폐기 → 주로 쓰임
- LOG : 로그기록
- RETURN : 룰 연계
iptables 룰
ESTABLISHED : 연결이 되어있는 패킷
NEW : 새로운 연결을 요청하는 패킷
RELATED : 기존 연결 이외 다른 새로운 연결 요청 (ex: FTP데이터 전송포트(20/tcp)를 다른 포트로 사용하고자할때 / 꺼지기 전까지는 연결된 상태 유지)
INVALID : 어디에도 속하지 않은 패킷
백업 : iptables-save > /backup/ip.bak
초기화 : iptables -F → service iptables-save (저장) → service iptables restart (적용)
복구 : iptables-restore /backup/ip.bak
정책 enum확인 : iptables -L INPUT --line
내부 핑 허용 iptables -A INPUT -i lo -j ACCEPT
ssh 접속을 위한 옵션 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
예제 1. 도착지 X 출발지 패킷만 허용
iptables -A FORWARD -s 10.10.10.10 -p icmp -j ACCEPT
iptables -A FORWARD -s 20.20.20.20 -p icmp -j ACCEPT
icmp 는 request:8
reply:0
네트워크 대역 허용
iptables -A FORWARD -s 10.10.10.0/24 -p icmp -j ACCEPT
iptables -A FORWARD -s 20.20.20.0/24 -p icmp -j ACCEPT
인터페이스 허용 (모든 포트 개방)
ifconfig ens33:0 192.168.10.100
-> ens33:0# Generated by iptables-save v1.4.21 on Thu Jun 13 14:34:18 2024
*nat
:PREROUTING ACCEPT [210:13992]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [2:152]
:POSTROUTING ACCEPT [12:624]
-A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.10:80
-A POSTROUTING -o ens33 -j MASQUERADE
COMMIT
# Completed on Thu Jun 13 14:34:18 2024
# Generated by iptables-save v1.4.21 on Thu Jun 13 14:34:18 2024
*filter
:INPUT DROP [0:0]
:FORWARD DROP [66:4812]
:OUTPUT ACCEPT [113:14856]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A FORWARD -i ens32 -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -o ens32 -p udp -m udp --sport 53 -j ACCEPT
-A FORWARD -i ens32 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 443 -j ACCEPT
-A FORWARD -i ens32 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 80 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -i ens32 -p tcp -m tcp --sport 80 -j ACCEPT
COMMIT
# Completed on Thu Jun 13 14:34:18 2024
외부에서 들어오는 내용만 잘 처리하면 됨A FORWARD -i ens32 -j ACCEPT
-A FORWARD -o ens32 -p udp -m udp --sport 53 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 443 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 80 -j ACCEPT
NAT 지우기
tptables -t nat -F
# Generated by iptables-save v1.4.21 on Thu Jun 13 16:41:18 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.10:80
-A PREROUTING -d 192.168.10.100/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.10.10.10:443
-A PREROUTING -d 192.168.10.200/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.10.10.10:53
-A POSTROUTING -o ens33 -j MASQUERADE
COMMIT
# Completed on Thu Jun 13 16:41:18 2024
# Generated by iptables-save v1.4.21 on Thu Jun 13 16:41:18 2024
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [24:2576]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A FORWARD -i ens34 -j ACCEPT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<칼리 인터넷
-A FORWARD -o ens34 -p udp -m udp --sport 53 -j ACCEPT
-A FORWARD -o ens34 -p tcp -m tcp --sport 80 -j ACCEPT
-A FORWARD -o ens34 -p tcp -m tcp --sport 443 -j ACCEPT
-A FORWARD -i ens32 -j ACCEPT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<서버 인터넷
-A FORWARD -o ens32 -p udp -m udp --sport 53 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 80 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --sport 443 -j ACCEPT
-A FORWARD -o ens32 -p tcp -m tcp --dport 443 -j ACCEPT <<<<<<< 서비스 DNAT 포트
-A FORWARD -o ens32 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -o ens32 -p udp -m udp --dport 53 -j ACCEPT
COMMIT
# Completed on Thu Jun 13 16:41:18 2024
$TTL 1D
@ IN SOA @ root.sevas10.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS @
IN A 10.10.10.10
ns IN A 192.168.10.200
www IN A 192.168.10.100
fw IN A 192.168.10.10
DOS공격 차단 정책 ⇒ ping 속도 제한 ( ping -i 0.1 )
-A INPUT -p icmp -m limit --limit 40/min -j ACCEPT -- 일부 승인후 지연(1분에 40개)
-A INPUT -p icmp -m limit --limit 10/min --limit-burst 10 -j ACCEPT -- 10개 검사 후, 일부 승인 후 지연(1분에 10개)
-A INPUT -p icmp -m limit --limit 60/min --limit-burst 20 -j ACCEPT -- 일반 ping은 통과, ping 0.1 은 지연을 검
-A INPUT -p icmp -j DROP -- 이외는 거부 → 마지막에 필수/위의 제한들은 한개씩
연결 제한
로그 남기기
-A FORWARD -d 10.10.10.10 -p tcp --dport 80 -m recent --set --name flood_list
-A FORWARD -d 10.10.10.10 -p tcp --dport 80 -m recent --update --seconds 10 --hitcount 10 --name flood_list -j LOG --log-prefix "[http flood attack]"
-A FORWARD -d 10.10.10.10 -p tcp --dport 80 -m recent --update --seconds 10 --hitcount 10 --name flood_list -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT → 제한은 해당 문구 위에서 진행
iptables 로그 만들기
ALL SYN 차단(nmap 등.. SYN ATTACK, flooding)