每当登录时,我通常都会运行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
由于IPv6是由ip6tables
和而不是来处理的,因此请确保在一天内获得v6连接时有规则iptables
。