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.confShorewall全局配置文件。
  • /etc/shorewall/interfaces接口文件用于定义到Shorewall的防火墙网络接口。
  • /etc/shorewall/policyShorewall策略文件,用于在/etc/shorewall/zones配置文件中定义的区域之间的连接。
  • /etc/shorewall/rulesShorewall规则文件。
  • /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