ubuntu防火墙配置工具 – shorewall
ubuntu下配置iptable防火墙,手工一条条写比较繁琐,有个方便的工具可以胜任这个工作,那就是shorewall,iptable防火墙配置工具。
安装
sudo apt-get install shorewall-common shorewall-doc shorewall-perl
copy配置文件
sudo cp /usr/share/doc/shorewall-common/examples/one-interface/* ./
examples目录下有one-interface/three-interfaces/two-interfaces三个目录,分别代表你有单网卡(外网)、双网卡(内外网)、三网卡(内外网+DMZ)三种模式,我的是外网服务器,所以选择one-interface
定义网络区域
nano /etc/shorewall/zones
fw firewall
net ipv4
定义fw、net两个区域,fw防火墙本身,net外网
定义网络接口
nano /etc/shorewall/interfaces
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
定义防火墙策略
nano /etc/shorewall/policy
$FW net ACCEPT
net $FW DROP info
net all DROP info
all all REJECT info
定义最普通的防火墙策略,ACCEPT就是允许;DROP就是不允许,不能通过;REJECT是抵制(被这个选项控制的网络会发生地址冲突的问题)。
第一行定义的是:允许本地网络访问外部网络。
第一行定义的是:禁止外部网络访问本地网络。
第二行定义的是:不允许外部网络访问所有的网络。info是只在DROP连接的同时log文件中会有信息提示。
第三行定义的是:所有网络的默认连接规则是抵制。(建议将REJECT修改为DROP,防止网络被REJECT)
定义防火墙规则
nano /etc/shorewall/rules
Ping/ACCEPT net $FW
ACCEPT $FW net icmp
ACCEPT net $FW tcp 22
ACCEPT net $FW tcp 80
定义防火墙规则
第一行,允许外部网络ping防火墙接口,如果想禁ping的话,将Ping/ACCEPT改为Ping/DROP
第二行,允许内部网络ping防火墙接口
第三行,允许外部网络访问服务器22端口
第四行,允许外部网络访问服务器80端口
启动防火墙
sudo shorewall start
启动防火墙后,shorewall会使用perl编译器,complie iptable规则
停止防火墙
sudo shorewall stop
这里需要注意一点,停止防火墙并不会完全清除规则,它会置input链的状态为Drop,造成外网不能访问服务器,所以在停止之前,要执行sudo shorewall clear。
清除规则
sudo shorewall clear
显示规则状态
sudo shorewall show
show 还可以现次细分状态,如下
actions|capabilities|classifiers|config|connections|filters|ip|log|macros|mangle|nat|raw|routing|tc|vardir|zones