ローカルネットワークのユーザーがポート22を使用しないようにしたいと思います。私のLinuxサーバーはトラフィックを制御します。iptables
。どのルールが最も適切ですか?
iptables -A INPUT -i $LAN -p tcp --sport 22 -j DROP
または
iptables -A INPUT -i $LAN -p tcp --dport 22 -j DROP
重要:この規則は単なる例です。回答からポート例を選択できます。
dport
私はチェーンの合計がsport
どのシナリオで使用されるかを知りたいと思いますINPUT
。答えは他の例を使うことができます
PS:質問の目的は、ローカルLANネットワークユーザーがこのポート(または他のポート)にアクセスするのを防ぐことです。したがって、ルールはローカルLANネットワーク(WANではない)のインターフェイスのみをターゲットにする必要があります。$LAN
LAN インターフェイスの変数です (例enp2s1
:eth1
など)。
答え1
dport
私はチェーンの合計がsport
どのシナリオで使用されるかを知りたいと思いますINPUT
。
コンピュータのサービスへのアクセスを制限したい場合がよくあります。 TCPハンドシェイクの最初のパケットはクライアントからサーバーからなるため、チェーン内のdport
ローカルINPUT
サービスへのアクセスを制御したり、dport
チェーンからOUTPUT
削除されたサービス(ローカルホスト上)へのアクセスを制御したりするためによく使用されます。 )。
iptables -A INPUT -p tcp --dport 22 -j DROP // prevents access to a local SSH server
iptables -A OUTPUT -p tcp --dport 22 -j DROP // prevents access to a remote SSH server
ほとんどのTCPベースのプロトコルは、クライアントがバインドされているポートには興味がありません。管理者は特定のクライアントポートからのみローカルサービスへのアクセスを許可できますが(デフォルトでは、Linuxでは1024未満のポート番号にバインドするには追加の権限が必要であることに注意してください)、これは一般的ではありません。
答え2
iptables -A INPUT -p tcp --sport 22 -j DROP
SSHサーバーのINPUTフレームがブロックされます。これにより、外部SSHサーバーにアクセスできなくなります。
iptables -A INPUT -p tcp --dport 22 -j DROP
SSH クライアントの INPUT データフレームがブロックされます。これにより、誰もあなたのSSHサーバーにアクセスできなくなります。私はこれがあなたが望むものだと思います。
注:ホストを保護する一般的な方法は、すべてをブロックして必要なものを許可することです。おそらくufw
あなたを保護するのに役立ちます。ほとんどの要件を満たすより高いレベルのファイアウォールです。 (ufw
接続方向を処理します。iptable
データフレームの方向は低レベルです。)