私は、Ubuntu サーバー 14.04 内に最小限の iptables ファイアウォールを構築するつもりです。ファイアウォールを正しく構築し、正しく実行していることを確認するために、検証のためにコミュニティで実行しています。その方法-o interface
と操作はよくわかりません。さまざまなファイアウォール ルールを確認するたびに、ルールの構成が異なっているため、ルールに関する-i interface
ルールの設定方法が複雑になります。私が理解している方法は次のとおりです。wan
lan
パソコン>-i interface
無線LAN -o interface
>-i interface
ワン -o interface
>インターネットNAT
これはテーブルにも当てはまります。 prerouting
>通信網 postrouting
バイパスforward
通信網。
これは、ファイアウォールを機能させるための一般的なルールセットです。私の理解が正しければ、 とwan
はeth0
次のとおりlan
ですeth1
。
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これは、 および である私のルールセットwan
です。eth0
lan
eth1
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT,ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD -j DROP
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT
iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
また、ファイアウォールの永続的な実行に関してですが、このルールセットを編集してsudo nano -w /etc/rc.local
使用するとsudo chmod 755 /etc/rc.local
、sudo reboot
デバイスが起動するたびにこのルールセットが永続的になりますか?
答え1
先に進む前に、「ネット フィルタ テーブル」( nftables
) を見てください。これは、iptables、iptables6、arptables などを置き換えます。
nftables は、使いやすく、より強力で、新しいものです。最近のシステムでは、iptables は nftables の (レガシー) フロントエンドです。
nftables ルール セットの例: ユーザーの直接ネットワーク アクセスをブロックしother
、プロキシの使用を強制します。テストで使用された 2 つのカウンターがまだあります (削除できます)。またaccept
、skuid "proxy-server" は不要です。これが現在のポリシーです。
#!/usr/sbin/nft -f
table ip my_table {}
flush table my_table
table ip my_table {
chain output {
type filter hook output priority 0; policy accept;
skuid "other" jump restrict_chain;
skuid "proxy-server" accept;
}
chain restrict_chain {
counter;
oifname != "lo" reject;
tcp dport != "1080" reject;
counter;
accept;
}
}