Debian/Ubuntu Linux如何安装和配置Shoreline防火墙(Shorewall)
时间:2019-11-20 08:53:11 来源:igfitidea点击:
在Debian或Ubuntu Linux服务器中,如何设置防火墙?
如何安装Shoreline防火墙?
如何在RHEL/Fedora和CentOS Linux下快速设置防火墙?
Shorewall
Shorewall是一个基于iptables的开源工具Linux。它使复杂的防火墙配置变得更加容易。
如何安装Shorewall?
以root用户身份执行以下命令:
# apt-get install shorewall shorewall-common shorewall-shell
Shorewall的配置文件
所有配置文件位于/etc/shorewall /
目录中:
/etc/shorewall/shorewall.conf
Shorewall全局配置文件。/etc/shorewall/interfaces
接口文件用于定义到Shorewall的防火墙网络接口。/etc/shorewall/policy
Shorewall策略文件,用于在/etc/shorewall/zones配置文件中定义的区域之间的连接。/etc/shorewall/rules
Shorewall规则文件。/etc/shorewall/zones
/etc/shorewall/zones文件声明您的网络区域。您可以通过/etc/shorewall/interfaces或/etc/shorewall/hosts中的条目在每个区域中指定主机。
配置shorewall
编辑/etc/default/shorewall
文件:
# vi /etc/default/shorewall
将启动变量设置为1,允许Shorewall启动:
startup=1
定义网络区域
编辑/etc/shorewall/zones:
# vi /etc/shorewall/zones
添加下面内容:
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4
其中
fw
防火墙区域名称。指定防火墙本身。您必须只有一个防火墙区域。防火墙区域不允许使用任何选项。在"zone"列中输入的名称将保存在shell变量$FW中,在其他配置文件中可以使用该变量来指定防火墙区域。net ipv4
区域名称。这是标准的Shorewall区域。
创建接口
创建接口文件:
# vi /etc/shorewall/interfaces
添加如下内容:
#ZONE INTERFACE BROADCAST OPTIONS net eth0 detect tcpflags,logmartians,nosmurfs net eth1 detect dhcp net ppp+ detect dhcp
在此示例中,定义了到Shorewall的防火墙网络接口(eth0)。
其中:
net
是eth0接口的区域。必须与/etc/shorewall/zones中声明的区域名称相对应。eth0
网域的eth0接口。detect
这是可选的,但是如果您使用特殊值detect
,则如果您的iptables和内核包括Address Type匹配支持,Shorewall将为您检测广播地址。tcpflags,logmartians,nosmurfs
以逗号分隔的选项列表:tcpflags
检查到达此接口的包中是否存在某些非法的TCP标志组合。logmartians
打开内核火星日志记录,即记录具有不可能的源地址的数据包。对于充当路由器的系统,这是必须的。nosmurfs
过滤蓝精灵的数据包(以广播地址为源的数据包)dhcp
接口通过DHCP获得其IP地址net eth1 detect dhcp
eth1是网络区域接口。在这里,是我的无线接口。net ppp + detect dhcp
ppp +(ppp0,ppp1等等)是我的网络区域接口。供pppd使用(例如,pptp vpn客户端)
定义shorewall政策
编辑/etc/shorewall/policy:
# vi /etc/shorewall/policy
添加下面代码:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST fw all ACCEPT net all DROP info # The FOLLOWING POLICY MUST BE LAST all all REJECT info
其中
fw
防火墙区域(即计算机本身)。net
网络区域。- 在此示例中,允许来自防火墙(计算机)的所有流量。但是,所有来自net区域的流量都将被丢弃。换句话说,w我只允许来自桌面系统的所有传出流量,但是默认情况下不允许任何传入连接,并使用syslog级别KERNEL.INFO进行记录。
- 最后一行拒绝/删除所有连接,并记录在KERNEL.INFO级别日志。
打开需要开放的端口
编辑/etc/shorewall/rules:
# vi /etc/shorewall/rules
添加下面代码:
############################################################################################################# #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP ACCEPT net $FW:192.168.1.5 TCP 9500 ACCEPT net $FW:192.168.1.5 UDP 9500 # Drop Ping from the "bad" net zone.. and prevent your log from being flooded.. Ping(DROP) net $FW
接收路由器转发的TCP/UDP端口9500上的链接。
下面的示例将打开http和ssh端口:
#Forward all ssh and http connection requests from the internet to local system 192.168.1.5 #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST ACCEPT net $FW:192.168.1.5 tcp ssh,http
如何启动/停止/重启shorewall?
使用以下命令:
/etc/init.d/shorewall start /etc/shorewall/rules stop /etc/shorewall/rules restart
如何查看当前加载的防火墙规则?
# shorewall show | less
如何查看防火墙当前正在跟踪的IP连接?
# shorewall show connections
如何看到防火墙区域?
# shorewall show zones
如何查看防火墙日志?
使用hits子命令查看Shorewall日志消息报告数量:
# shorewall hits