iptables
옵션
-A --append
-C --check
-D --delete
-I --insert
-R --replace
-L --list
-S --list-rules
-F --flush
-Z --zero
-N --new-chain
-X --delete-chain
-P --policy chain target
-E --rename-chain old-chain new-chain
-p, --protocol protocol
-s, --source address
-d, --destination address
-j, --jump target
-g, --goto chain
-i, --in-interface name
-o, --out-interface name
-f, --fragment
-c, --set-counters packets bytes
ssh 포트 열기
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
service iptables save (/etc/sysconfig/iptables 자동등록)
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -A INPUT -j DROP
-A :룰을 추가한다
INPUT : 패킷이 들어오는 체인에
-j :패킷의 운명을 결정한다.
DROP : 패킷을 버려라.
새로운 체인 만들기 (-N).
비어있는 체인을 제거하기 (-X).
※ 이 두옵션은 직접체인을 만들었을경우와 제어할경우에 해당된다.
기본체인(INPUT,OUTPUT,FORWARD) 에는 해당되지 않는다.
미리 만들어진 체인의 정책을 바꾸기 (-P)
어떤 체인의 규칙들을 나열하기 (-L)
체인으로부터 규칙들을 지우기 (-F)
체인내의 모든 규칙들의 패킷과 바이트의 카운드를 0 으로 만들기 (-Z)
# 스크립트로 등록하는 방법
/etc/rc.d/rc.local 에
if [ -f /etc/sysconfig/iptables ] ; then
/etc/sysconfig/iptables
fi
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
IP 주소 지정
신뢰할 만한 ip에 대해 모든 패킷을 허용
# iptables -A INPUT -s 192.168.0.3 -j ACCEPT
신뢰할 만한 ip 대역에 대해 모든 패킷을 허용
# iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
신뢰할 만한 ip 대역에 대해 모든 패킷을 허용
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
신뢰할 만한 ip와 MAC주소에 대해 모든 패킷을 허용
# iptables -A INPUT -s 192.168.0.3 -m mac --mac-source 00:50:80:FD:E6:32 -j ACCEPT
포트 범위지정
# iptables -A INPUT -p tcp --dport 6881:6890 -j ACCEPT
state - tcp/udp/icmp 등의 전송 프로토콜의 연결 '상태'를 가지고 확인한다
NEW - 세션을 만들 때의 첫 번째 패킷
ESTABLISHED - 이미 세션이 연결된 후에 오가는 패킷
INVALID - 열리지 않는 세션에 대한 데이터 전송 패킷
RELATED - 기존의 연결 세션을 바탕으로 새로 만들어지는 세션의 패킷
ip 대역으로 차단할때
# iptables -A INPUT ?-m iprange --src-range 1.169.0.0-1.169.255.255 -j DROP