iptables 규칙 세부 확인
iptables 규칙 세부 확인
1. 현재 iptables 규칙 확인
1
2
3
4
5
6
7
8
9
iptables -L INPUT --line-numbers -n # -L : List, INPUT : input 규칙, --각 규칙 번호 확인, -n : 포트 번호 확인
# Chain INPUT (policy ACCEPT)
# num target prot opt source destination
# 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
# 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
# 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
# 4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:123
# ...생략...
# 9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
위의 규칙중 3번에 해당하는
1
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
에 의해서 80포트가 ACCEPT 될거라고 예상했는데, 실제로는 9번에 의해서 REJECT 되었다.
2. 실제 적용되는 규칙 확인
위에서 80포트가 REJECT 된 이유는 아래와 같다.
1
2
3
4
5
6
7
8
9
iptables -S
# -P INPUT ACCEPT
# -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# -A INPUT -p icmp -j ACCEPT
# -A INPUT -i lo -j ACCEPT
# -A INPUT -p udp -m udp --sport 123 -j ACCEPT
# ... 생략 ...
# -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# -A INPUT -j REJECT --reject-with icmp-host-prohibited
위의 규칙 중 아래 내용을 확인해보면, 모든 src, dest, port에 대해서 ACCEPT하는 규칙이 lo(=loopback) interface에만 적용되고 있다.
1
-A INPUT -i lo -j ACCEPT
3. 해결
80 포트에 해당하는 규칙을 추가한다. 단, 맨 마지막에 규칙을 추가하면 REJECT 규칙에 의해 접속이 막히므로 중간에 insert(-I) 한다. (위에서 아래로 순차 규칙 체크)
1
iptables -I INPUT 9 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
4. 수정한 규칙 저장
1
2
# sudo apt install iptables-persistent
sudo netfilter-persistent save
This post is licensed under CC BY 4.0 by the author.