iptables 설정하기
리눅스에 기본 설치된 네트워크 필터(방화벽)인 iptables의 규칙 추가/삭제 방법이다.
기본적으로 모든 포트를 막고, 필요한 포트를 허용하는 방식을 권장한다.(iptable -P INPUT DROP)
규칙의 우선순위는 위에서부터 적용된다.
# 모든 규칙 제거 $ iptables -F # 사용자가 만든 모든 체인을 제거한다. $ iptables -X # 등록된 규칙에 맞지 않는 트래픽은 허용한다.(거부하는 규칙이 없으면 모든 포트가 열리게 된다.) $ iptables -P INPUT ACCEPT $ iptables -P FORWARD ACCEPT $ iptables -P OUTPUT ACCEPT # 등록된 규칙에 맞지 않는 트래픽은 거부한다.(허용하는 규칙이 없으면 모든 포트가 막히게 된다.) $ iptables -P INPUT DROP $ iptables -P FORWARD DROP $ iptables -P OUTPUT DROP # 모든 입력 네트워크에서 HTTP, HTTPS를 허용한다. $ iptables -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT # IP 192.168.0.10 에서 모든 입력을 허용한다. $ iptables -A INPUT -s 192.168.0.10 -j ACCEPT # IP 192.168.0.0/24 네트워크에서 모든 입력을 허용한다. $ iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # 모든 입력 네트워크에서 ssh 접속을 거부한다. $ iptables -A INPUT --dport 22 -j DROP # 등록된 규칙을 보여준다. $ iptables -L -v Chain INPUT (policy ACCEPT 62027 packets, 38M bytes) pkts bytes target prot opt in out source destination 143K 20M ACCEPT tcp -- any any anywhere anywhere multiport dports http,https 384 31070 ACCEPT all -- any any 192.168.0.0/24 anywhere 2059 121K DROP tcp -- any any anywhere anywhere tcp dpt:ssh Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 189K packets, 169M bytes) pkts bytes target prot opt in out source destination # 등록된 규칙을 번호와 함께 보여준다. 번호는 규칙을 중간에 추가하거나 삭제할 때 사용된다. $ iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere multiport dports http,https 2 ACCEPT all -- 192.168.0.0/24 anywhere Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination # loopback 접근허용을 맨 처음(1번) 규칙으로 추가한다. $ iptables -I INPUT 1 -i lo -j ACCEPT $ iptables -I OUTPUT 1 -o lo -j ACCEPT # INPUT체인 2번 규칙을 제거한다. $ iptables -D INPUT 2
최신 댓글