iptables 및 ssh

iptables 및 ssh

저는 Arch Linux를 실행하고 있으며 LAN 외부에 있을 때 내 컴퓨터에 액세스할 수 있는 SSH 데몬을 실행하고 있습니다. 접속은 되는데 iptables가 계속 SSH 데몬을 차단해서 방화벽을 끄기 전까지는 접속이 안되네요. 포트 5000에서 SSH를 실행하고 있습니다.

내 iptables 규칙

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT 
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -j REJECT --reject-with tcp-reset 
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -j REJECT --reject-with icmp-proto-unreachable 

# SSH
-A INPUT -p tcp --dport 22 -j REJECT --reject-with icmp-host-unreachable
-A INPUT -p tcp --dport 5000 -j ACCEPT

# VNC
-A INPUT -p tcp --dport 5001 -j REJECT --reject-with icmp-host-unreachable
-A INPUT -p tcp -i lo -s 127.0.0.1/32 -d 127.0.0.1/32 --dport 5001 -j ACCEPT

# HTTP/HTTPS
-A INPUT -p tcp --dport 80 -j REJECT --reject-with icmp-host-unreachable
-A INPUT -p tcp --dport 8080 -j REJECT --reject-with icmp-host-unreachable
-A INPUT -p tcp --dport 443 -j REJECT --reject-with icmp-host-unreachable

-A INPUT -p tcp -i lo -s 127.0.0.1/32 -d 127.0.0.1/32 --dport 80 -j ACCEPT

답변1

iptables 규칙을 다시 정렬해야 합니다.

규칙은 한 줄씩 확인되므로 sshd에 연결할 수 없습니다. 그리고 당신은 iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset= 모든 TCP 트래픽을 거부했다고 말했습니다 . 나중에 그에게 포트 5000에서 연결을 수락하라고 지시하더라도 문제가 되지 않습니다. 이미 해당 연결을 거부했기 때문입니다.

따라서 iptables 규칙을 작성할 때 순서에 대해 생각하십시오. 먼저 허용하려는 항목을 삽입한 다음 나머지를 거부하십시오.

관련 정보