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ルールを並べ替える必要があります。

ルールは1行ずつチェックされるため、sshdに接続できません。そして、あなたはiptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset=すべてのTCPトラフィックを拒否したと言いました。後で彼にポート5000で接続を受け入れるように指示しても問題はありません。すでにその接続を拒否しているからです。

したがって、iptablesルールを作成するときの順序について考えてください。まず、許可する項目を挿入してから残りを拒否します。

おすすめ記事