개요
- Linux kernel에 내장된 netfilter 기능을 관리하기 위한 툴로 rule기반의 패킷 필터링 기능
- 주요 기능으로 Filtering, Logging, NAT, Forwarding 등의 기능 제공
rule 구조
# iptables [command] [chain] [rule option] [target]
예시
iptables -A INPUT -p TCP --dport 80 -j DROP
command
- rule에 대한 생성, 수정, 삭제, 삽입 시 사용
명령어 | 설명 |
-N (--new-chain) | 새로운 체인을 만듬 |
-L (--list) | 설정된 규칙을 출력 |
-A (--append) | 새로운 규칙을 추가(맨아래) |
-I (--insert) | 새로운 규칙을 삽입(맨 앞쪽) |
-F (--flush) | 체인의 모든 규칙을 삭제 |
-D (--delete) | 규칙을 삭제 |
-X (--delete-chain) | 비어있는 체인 삭제 |
-R (--replace) | 새로운 규칙을 교체 |
-P (--policy) | 기본 정책을 변경 |
-C (--check) | 패킷을 테스트 |
chain
- 패킷 이동 방향에 따른 설정
정책 | 설명 |
INPUT | 외부에서 내부로 이동 시 정책 설정 |
FORWARD | 해당 서버의 경유가 필요한 경우 정책 설정 |
OUTPUT | 내부에서 외부로 이동 시 정책 설정 |
rule option
- rule 정책 설정 시 사용
정책 | 설명 |
-s (--source) | 출발지 주소 (address/mask) |
-d (--destination) | 목적지 주소 |
--sport | 출발지 포트 |
--dport | 목적지 포트 |
-p (--protocol) | 프로토콜 (tcp, udp, icmp ... ) |
-i (--in-interface) | 패킷이 들어오는 네트워크 인터페이스 |
-o (--out-interface) | 패킷이 나가는 네트워크 인터페이스 |
-f (--fragment) | 세분화된(fragment) 패킷 |
-j (--jump) | 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시 |
target
- 패킷에 대한 수신/차단 등의 정책 설정
정책 | 설명 |
ACCEPT | 패킷을 수신 |
DROP | 패킷을 차단 후 응답 없음 |
REJECT | 패킷을 차단 후 응답 패킷 전송 |
LOG | 패킷 기록만 수행(syslog) |
iptables 예시
현재 iptables 정책 목록 확인
# iptables -L
현재 iptables 1번 정책 제거
# iptables -D INPUT 1
현재 iptables 정책 초기화
# iptables -F
규칙 추가 후 저장 (*제일 중요)
# service iptables save
tcp 프로토콜 패킷 모두 허용
# iptables -A INPUT -p TCP -j ACCEPT
192.168.0.10의 icmp 패킷 차단
# iptables -A INPUT -s 192.168.0.10 -p icmp -j DROP
80번 포트를 향하는 tcp 패킷 차단
# iptables -A INPUT -p TCP --dport 80 -j DROP
22~30 포트의 tcp 패킷 차단
# iptables -A INPUT -p tcp --dport 22:30 -j DROP
imap 서비스를 192.168.0.0 대역 허용 새 정책 설정
# iptables -I INPUT -s 192.168.0.0/255.255.255.0 -p udp --dport 143 -j ACCEPT
# iptables -I INPUT -s 192.168.0.0/24 -p udp --dport 143 -j ACCEPT
포트 80 -> 8880으로 교체
# iptables -R INPUT 2 -p tcp --dport 8880 -j ACCEPT
ip-access_log 파일에 있는 모든 ip의 모든 접속 포트를 차단 (여러 IP에 대한 차단 시 유용)
# cat ip_access_log | awk '{print $1}' | sort | uniq | awk '{print "iptables -A INPUT -s "$1" -j DROP"}' | /bin/bash
'*Security > [ SO ] 보안 솔루션' 카테고리의 다른 글
[SO - 04] TCP Wrapper 실습 (0) | 2022.01.10 |
---|---|
[SO - 03] TCP Wrapper 개요 (0) | 2022.01.06 |
[SO - 02] Router ACL 실습 (Cisco) (0) | 2021.12.29 |
[SO - 01] Router ACL 개요(Cisco) (0) | 2021.12.28 |