回答:
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つのコマンドは、一部のアプリケーションで正しく機能するために必要なループバックトラフィックを許可します。-s source_ip
オプションを使用して、特定のIPからのSSHアクセスを制限できます。
上記の順序でコマンドを実行すると、現在のSSHセッションがハングします。これは、iptablesコマンドがすぐに有効になるためです。それらをリモートで実行するときにマシンに接続できなくなるのを防ぐために、それらをシェルスクリプトで実行する必要があります。
このようなもの:
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
-i lo
ないと思います-s lo
。繰り返しになりますESTABLISHED
が、必要なのは州のルールだけ--sport 22
であり、おそらくそこにもaがあるはずです。なぜ誰もがそんなに許可しRELATED
たいのですか?
RELATED
ping返信やDNS返信など、TCP以外のものの照合に実際に役立ちます。少なくとも、それは私がいつも想定していたことです。
--state RELATED
最後のルールでは不要です。--state ESTABLISHED
十分です また、DNSトラフィックを許可したい場合もあり、おそらくループバックインターフェイスで何でも許可する必要があります。そうしないと、あらゆる種類の動作が非常に奇妙に動作する可能性があります。