1. 개요
Redhat 계열, CentOS 6.x 이하에서는 방화벽으로 iptables를 사용한다.
그에 대한 간단한 소개와 정책 적용 방법에 대해서 소개한다.
2. 정책 확인
iptables -nL –line-numbers
3. 정책 삭제
### 모든 정책 삭제 iptables -F ### 특정 정책 삭제 iptables -D [INPUT/OUTPUT/FORWARD] [NUMBER]
4. 정책 추가
– 자주 사용하며 기본이 되는 정책
# 체인의 기본 정책 DROP 설정 iptables -P [INPUT/OUTPUT] DROP # 내부 → 외부 후 다시 내부로 들어오는 패킷에 대해 허용 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 1.2.3.4에서 접속하는 SSH 허용(INPUT) iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s 1.2.3.4 -j ACCEPT # 1.2.3.4에서 접속하는 SSH 허용(OUTPUT) iptables -A OUTPUT -p tcp --sport 22 -d 1.2.3.4 -j ACCEPT # eth0 인터페이스를 제외한 다른 인터페이스에서 들어오는 icmp 허용 iptables -A INPUT -p icmp ! -i eth0 -j ACCEPT # 192.168.1.0/24 대역에서 들어오는 패킷 DROP iptables -A INPUT -s 192.168.1.0/24 -j DROP # 1.2.3.0 - 1.2.3.255에서 들어오는 패킷 DROP iptables -A INPUT -p all -m iprange --src-range 1.2.3.0-1.2.3.255 -j DROP ### 1.2.3.4에서 접속하는 SSH에 대한 LOG 기록 # iptables log는 /var/log/messages에서 확인 가능 / tail -f /var/log/messages # -A 옵션은 정책 맨 아래에 추가 / -I 옵션은 정책 맨 위에 추가 # 로그명 "INPUT_ACCEPT_SSH" iptables -I INPUT -p tcp --dport 22 -s 1.2.3.4 -j LOG --log-prefix "INPUT_ACCEPT_SSH" # 로그명 "INPUT_ACCEPT_SSH"IP, TCP 상세정보(Header 구조 등), TCP seq 출력 iptables -I INPUT -p tcp --dport 22 -s 1.2.3.4 -j LOG --log-prefix "INPUT_ACCEPT_SSH" --log-ip-options --log-tcp-options --log-tcp-sequence ### INPUT 패킷의 ctstate 상태에 대해서 ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
OPTION
|
–
|
부가 내용
|
-A [chain]
|
A(Add) / I(Insert) / R(Replace) / D(Delete)
|
INPUT / FORWARD / OUTPUT
|
-p [protocol]
|
p(protocol)
|
tcp / udp / icmp / all
|
–sport
|
sport(source port)
|
[출발지 포트]
* 출발지 포트는 클라이언트 PC에서 1024이후 포트에서 접속하기 때문에 1024: (1024 이후)로 지정
|
–dport
|
dport(destination port)
|
[도착지 포트]
* 목적지 포트는 대상 서버의 포트 IP
|
-s
|
s(source IP)
|
[출발지 IP]
|
-d
|
d(destiation IP)
|
[도착지 IP]
|
-j [target]
|
j(jump)
|
ACCEPT(허용) / DROP(버림) / REJECT(거부) / QUEUE(패킷을 사용자 프로그램으로 넘김) / RETURN(stop 메시지 보냄)
* 패킷 처리를 어떻게 할 것인가
|