IPTables: SSHアクセスのみを許可し、それ以外の入出力は許可しない

IPTables: SSHアクセスのみを許可し、それ以外の入出力は許可しない

IPTablesをどのように設定すればのみSSHを許可し、他のトラフィックを許可しないまたは?

何か安全上の注意事項をお勧めいただけますか?

私はサーバーを持っています信じるGoDaddyから移行が完了し、信じる現在は使用されていません。

でも、何が起こるかわからないから、確かめておきたいんです。:)

これは GoDaddy の仮想専用サーバーであることに注意してください...つまり、バックアップはなく、実質的にサポートもありません。

答え1

INPUT チェーンと OUTPUT チェーンでデフォルトのポリシーを DROP に設定するだけです。

SSH を許可するには、次のコマンドが必要です。

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

最後の 2 つのコマンドは、一部のアプリケーションが正しく機能するために必要なループバック トラフィックを許可します。オプションを使用して、特定の IP からの SSH アクセスを制限できます-s source_ip

上記のようにコマンドを順番に実行すると、現在の SSH セッションがハングします。これは、iptables コマンドが即座に有効になるためです。リモートで実行するときにマシンへの接続機能が失われないようにするには、シェル スクリプトで実行する必要があります。

答え2

このようなもの:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

関連情報