ここの初心者。ファイアウォールを設定するための次のルールを見つけました(Linuxの仕組みの本から)
iptables -P INPUT DROP # the default policy
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp '!' --syn -j ACCEPT # accepting incoming
connections from everywhere except those initiating a connection hence syn
これまでのところ(またはそうだと思われる)。 DNSのルールを追加しようとすると問題が発生します。これは私が試したもので、正しくないようです(一度に1つずつ)。
INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -s 127.0.1.1 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -j ACCEPT
望ましい結果:外部からの接続の初期化(ssh、icmtp、...)を防ぎ、DNSルックアップとWebブラウジング(curl、wget、telnet ...)を有効にします。私はローカルでWebサーバーまたはデータベースサーバーを実行する可能性があります...
助けていただければ幸いです。
確立されたセッションの許可確立されたセッションにトラフィックの受信を許可できます。
Sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
上記の行が機能しない場合は、プロバイダーが拡張機能を利用可能にしていない去勢されたVPSにいる可能性があります。その場合、下位バージョンを最後の手段として使用できます。
Sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
特定のポートでの着信トラフィックの許可
Sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
トラフィックのブロック
Sudo iptables -A INPUT -j DROP
iptablesを編集してループバックを有効にする:
Sudo iptables -I INPUT 1 -i lo -j ACCEPT
不要なトラフィックのロギング:
Sudo iptables -I INPUT 4 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
変更が正常に行われたことを確認するには:
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere
iptables -L -v
を使用して詳細を取得します。
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh
0 0 LOG all -- any any anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
0 0 DROP all -- any any anywhere anywhere
空のiptables:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptablesの保存
今すぐマシンを再起動すると、iptablesの設定が消えます。ただし、再起動するたびにこれを入力するのではなく、構成を保存して、自動的に起動させることができます。
ファイアウォールルールをファイルに保存する
Sudo sh -c "iptables-save > /etc/iptables.rules"
スクリプト/etc/network/if-pre-up.d/iptablesloadには以下が含まれます。
#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0
および/etc/network/if-post-down.d/iptablessaveには以下が含まれます。
#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
iptables-restore < /etc/iptables.downrules
fi
exit 0
次に、必ず両方のスクリプトに実行権限を付与してください。
Sudo chmod +x /etc/network/if-post-down.d/iptablessave
Sudo chmod +x /etc/network/if-pre-up.d/iptablesload
次のようなすべての確立された関連トラフィックを許可する入力ルールを作成することをお勧めします。
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
また、ループバックデバイスを常に許可する必要があります。
#ループバックインターフェイスが何でもできるようにします。 $ IPTABLES -A INPUT -i lo -j ACCEPT $ IPTABLES -A OUTPUT -o lo -j ACCEPT
デフォルトの出力ポリシーが受け入れられている場合、ほとんどの問題は解消されています。それ以外の場合は、次も追加する必要があります。
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
hTTP、DNS、ICMP、または必要なポートを開きます。
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
https://en.wikibooks.org/wiki/Communication_Networks/IP_Tables