Debian/Ubuntu Linux:安装和配置Shoreline防火墙(Shorewall)
时间:2020-01-09 10:38:03 来源:igfitidea点击:
我知道如何在RHEL/Fedora和CentOS Linux下快速设置防火墙。
如何在Debian或Ubuntu Linux服务器或台式机系统下设置基于主机的防火墙?
如何在Debian或Ubuntu Linux下安装Shoreline防火墙(Shorewall)实用程序以基于Netfilter构建防火墙?
Shorewall是一个基于iptables的开源工具Linux。它使管理更复杂的配置方案变得更加容易。它为使用文本文件描述规则提供了更高层次的抽象。 Shorewall主要用于保护DMZ,LAN或由Debian或Ubuntu 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中的条目在每个区域中指定主机。
配置
通过编辑/etc/default/shorewall
文件打开防火墙,输入:
# vi /etc/default/shorewall
将启动变量设置为1,以允许Shorewall启动:
startup=1
保存并关闭文件。
步骤1:定义网络区域
编辑/etc/shorewall/zones,输入:
# vi /etc/shorewall/zones
追加以下代码:
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4
其中:
- fw防火墙区域名称。指定防火墙本身。您必须只有一个防火墙区域。防火墙区域不允许使用任何选项。您在"区域"列中输入的名称将存储在shell变量$FW中,您可以在其他配置文件中使用该变量来指定防火墙区域。
net ipv4
区域名称。这是标准的Shorewall区域。
步骤2:创建接口
创建界面文件,如下所示:
# 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
过滤smurfs的数据包(以广播地址为源的数据包)- dhcp接口通过DHCP获得其IP地址
- net eth1 detect dhcp eth1是我的网络区域接口。这是我的无线接口。
- net ppp + detect dhcp ppp +(ppp0,ppp1等)是我的净区接口。由pppd使用(例如,pptp vpn客户端)
步骤3:定义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 互联网区域。
- 在此示例中,Im允许来自防火墙(计算机)的所有流量。但是,所有来自净区域的流量都将被丢弃。换句话说,Im允许来自桌面的所有传出流量,但是默认情况下不允许任何传入连接,并以syslog级别KERNEL.INFO进行记录。
- 最后一行拒绝/删除所有连接,并记录在KERNEL.INFO级别。
步骤4:打开所需的端口(如果有)
编辑/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
在此示例中,我接受ISP路由器转发的TCP/UDP端口9500上的bittorrent通信。
您可以使用以下规则打开smtp和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
保存并关闭文件。
如何启动/停止/重新启动shoewall?
使用以下命令:
/etc/init.d/shorewall start /etc/shorewall/rules stop /etc/shorewall/rules restart
如何查看当前加载的防火墙规则?
# shorewall show | less
输出示例:
horewall 4.4.11.6 filter Table at wks01 - Sat Aug 18 03:19:49 IST 2012 Counters reset Sat Aug 18 03:18:53 IST 2012 Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 23 3176 dynamic all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID,NEW RELATED,ESTABLISHED 0 0 Reject all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix `Shorewall:INPUT:REJECT:' 0 0 reject all -- * * 0.0.0.0/0 0.0.0.0/0 [goto] Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 dynamic all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID,NEW Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 30 4184 fw2net all -- * eth0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain Drop (1 references) pkts bytes target prot opt in out source destination 0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 reject tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:113 /* Auth */ 0 0 dropBcast all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 3 code 4 /* Needed ICMP types */ 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 11 /* Needed ICMP types */
如何查看防火墙当前正在跟踪的IP连接?
# shorewall show connections
如何看到区域?
# shorewall show zones
输出示例:
Shorewall 4.4.11.6 Zones at wks01 - Sat Aug 18 03:21:30 IST 2012 fw (firewall) net (ipv4) eth0:0.0.0.0/0 eth1:0.0.0.0/0 ppp+:0.0.0.0/0
如何查看防火墙日志?
hits命令从当前日志文件中的Shorewall日志消息生成多个报告:
# shorewall hits
输出示例:
Shorewall 4.4.11.6 Hits at wks01 - Sat Aug 18 03:23:09 IST 2012 HITS IP DATE ---- --------------- ----- 3955 192.168.1.2 Aug 17 2059 192.168.1.2 Aug 13 1939 192.168.1.2 Aug 15 1 209.133.67.35 Aug 17 HITS IP PORT ---- --------------- ---- 4523 192.168.1.2 59092 264 192.168.1.2 48698 216 192.168.1.2 37711 160 192.168.1.2 45371 48 192.168.1.2 56431 42 192.168.1.10 22 1 209.133.67.35 0 HITS DATE ---- ----- 3956 Aug 17 2080 Aug 13 1939 Aug 15 960 Aug 14 645 Aug 18 592 Aug 16 555 Aug 12 HITS PORT SERVICE(S) ---- ----- --------- 4523 59092 1955 41859 1595 35511 464 35351 160 45371 48 56431 42 22 ssh