通常、ログインするたびにiptablesルールを実行します。端末から入力します。
sudo sh firewall.sh
妹のコンピューターをセットアップして、基本的なファイアウォール保護を彼女に与えたいと思います。彼女は管理者としてログインすることはなく、単なる標準アカウントです。パスワードを入力せずにログインするたびにファイアウォールスクリプトを実行するにはどうすればよいですか?
妹のコンピューター用に書いたスクリプトには以下が含まれています。
#!/bin/sh
modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP
iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
firewall.shとして彼女のホームフォルダーに配置し、実行可能に設定しました(ファイルを右クリックし、[アクセス許可]タブで[プログラムとして実行ファイルを許可する]オプションをオンにします)。
rootとして端末からこのスクリプトを実行すると問題なく動作します。
入力後
sudo sh firewall.sh
ターミナルに入力しました
sudo iptables -L -v
そして私は得る
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP tcp -- any any anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN
0 0 DROP udp -- any any anywhere anywhere
0 0 DROP icmp -- any any anywhere anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 DROP icmp -- any any anywhere anywhere
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:https
0 0 ACCEPT udp -- any any anywhere anywhere udp spts:32768:61000 dpt:domain
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:http
0 0 ACCEPT all -- any lo anywhere anywhere
このスクリプトをログイン時に自動的に実行したり、姉妹コンピューター用にこれらのルールを永続的に保存したりするにはどうすればよいですか?rc.localメソッドとiptables-saveでの私の最初の試みはあまり成功していないため、詳細なコードを教えてください。再起動するたびに、すべてのINPUT、OUTPUT、およびFORWARDチェーンがACCEPTにリセットされ、入力時にポリシーがリストされません。sudo iptables -L -v
ip6tables
いつかv6接続を取得する場合は、IPv6はip6tables
でなくIPv6で処理されるため、ルールがあることを確認してくださいiptables
。