在RHEL/CentOS Linux中使用Shorewall配置防火墙

时间:2019-11-20 08:52:46  来源:igfitidea点击:

如何配置防火墙提供RHEL/CentOS的系统的安全性?
如何安装和配置Shorewall?

Shoreline防火墙(也称为Shorewall)是基于Netfilter(iptables)的防火墙,可以在专用防火墙系统或者服务器上使用。

什么是Shorewall?

平时,我们都是使用/etc/sysconfig/iptables或Shell脚本编写一组复杂的防火墙规则。
但是,通过Shorewall,您可以使用一组配置文件中的条目来描述防火墙/网关的要求。

Shorewall会读取这些配置文件,并通过iptables,iptables-restore,ip和tc等工具来配置Netfilter和Linux网络子系统。

在CentOS或RHEL上安装Shorewall

启用EPEL repo,安装Shorewall软件包

# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
# yum install shorewall

配置文件

  • 默认配置目录位于/etc/shorewall /
  • Shorewall全局配置文件位于/etc/shorewall/shorewall.conf中。该文件设置了适用于整个Shorewall的选项。
  • /etc/shorewall/zones文件声明了您的网络区域。关于允许哪些流量和拒绝哪些流量的规则以区域表示。
  • /etc/shorewall/interfaces文件用于定义到Shorewall的防火墙网络接口。
  • /etc/shorewall/policy文件为"/etc/shorewall/zones"中定义的区域之间的连接定义了高级策略。
  • /etc/shorewall/rules用于添加规则。使用此文件可以打开或关闭端口等。
  • /etc/shorewall/blacklist文件,用于将IP,应用程序,MAC地址和子网列入黑名单。

配置Shorewall

Shorewall使用区域的概念。对于两个网络接口配置,您需要使用一组区域来定义网络,如下所示:

#NAME                  DESCRIPTION
fw                     The firewall itself
wan                    The Internet
lan                    Your Local Network

配置/etc/shorewall/zones

# vi /etc/shorewall/zones

如下更新文件:

fw      firewall
wan     ipv4                            
lan     ipv4

Shorewall将防火墙系统识别为自己的区域。指定防火墙本身的区域名称(通常如上文件所示为fw)存储在外壳变量$FW中,该变量可在整个Shorewall配置中用于引用防火墙区域。 wan和lan是我们的标准IPv4 Shorewall区域类型,如果将此列留空,则是默认值。

配置/etc/shorewall/interfaces

接下来,您需要在区域中定义主机。您可以使用/etc/shorewall/interfaces文件将区域与网络接口关联。

# vi /etc/shorewall/interfaces

添加下面内容:

wan     eth1    -       routefilter,blacklist,tcpflags,logmartians,nosmurfs
lan     eth0

其中, WAN接口eth1具有针对常见Internet攻击的其他高级保护:

  • routefilter为此接口打开内核路由过滤,即打开反欺骗测量。
  • blacklist对照/etc/shorewall/blacklist文件检查到达此接口的数据包。黑名单文件用于执行静态黑名单。您可以按源地址(IP或MAC)或应用程序将其列入黑名单。
  • tcpflags检查到达此接口的数据包是否存在TCP标志的某些非法组合,例如x mas或空或无效数据包。在/var/log/messages文件中登录后,丢弃被发现具有这种标志组合的数据包 。
  • logmartians打开内核火星日志记录(记录不可能的源地址的数据包)。强烈建议您在接口上设置routefilter的同时还要设置logmartians。
  • nosmurfs过滤smurfs的数据包(以广播地址为源的数据包),即打开anti-smurf保护。

配置/etc/shorewall/policy

在/etc/shorewall/policy中定义了从一个区域到另一区域的连接的默认策略。

可以是

  • ACCEPT接受连接。
  • DROP忽略连接请求。
  • REJECT将适当的错误返回到连接请求。
# vi /etc/shorewall/policy

添加策略:

## 允许lan-to-all和firewall-to-all,但不允许从wan到lan的流量
lan     all     ACCEPT
$FW     all     ACCEPT
wan     all     DROP    info
# 这行必须是最后一条规则
all     all     REJECT  info

配置/etc/shorewall/rules

该文件中的条目通过定义/etc/shorewall/policy文件中列出的策略的例外来控制连接的建立。

使用此文件打开或关闭TCP/UDP端口。

还可以设置是否允许访问/usr/share/shorewall/macro.*文件中定义的应用程序服务器,例如FTP,HTTP,HTTPS等。语法如下:

ACTION SOURCE  DEST    PROTO   DEST    SOURCE  RATE    USER/
                               PORT(S) PORT(S) LIMIT   GROUP

或者

ACTION    SOURCE        DEST      PROTO      DEST
                                             PORT(S)

例如,要打开从WAN(互联网)到防火墙的端口22,请输入:

ACCEPT     wan           $FW       tcp        22

WAN/Internet接口不应接收任何源在RFC 1918保留的范围之一(即私有或不可路由的地址)中的数据包。如果您的内核中启用了数据包处理或连接跟踪匹配,则其目标地址由RFC 1918保留的数据包也将被拒绝。添加以下DROP规则:

Rfc1918/DROP    wan     $FW

以下例外允许您从WAN/Internet ping您的防火墙:

Ping/ACCEPT     wan     $FW

配置/etc/shorewall/blacklist

# vi /etc/shorewall/blacklist

添加拦截的网络和IP地址:

202.53.1.0/24
190.1.2.3

检查防火墙配置是否有错误

执行以下命令:

# vi /etc/shorewall/shorewall.conf

STARTUP_ENABLED=No

改成

STARTUP_ENABLED=Yes

Shorewall配置编译器读取配置文件并生成Shell脚本。
如果编译步骤未发现任何错误,那么将执行shell脚本。

检查配置是否正确:

# shorewall check

保存现有的防火墙规则

使用iptables-save命令将iptable的内容保存到文件中:

# iptables-save > /root/old.firewall.config

建议您使用以下命令在CentOS/RHEL上保存和禁用iptables服务:

# service iptables save
# service iptables stop
# chkconfig iptables off

如何启动/停止/重启Shorewall?

注意,错误的防火墙配置可能会导致远程连接断开,操作时需谨慎

# service shorewall start
# service shorewall stop
# service shorewall restart
# service shorewall status

或者

# /etc/init.d/shorewall start
# /etc/init.d/shorewall stop
# /etc/init.d/shorewall restart
# /etc/init.d/shorewall status

设置Shorewall服务开机自启动

# chkconfig shorewall on

shorewall如何查看防火墙规则?

执行以下命令:

# shorewall show
# shorewall show | less

如何查看防火墙当前正在跟踪的IP连接?

# shorewall show connections

如何查看shorewall防火墙日志?

# shorewall show hits
# shorewall show hits|less

如何显示iptables功能?

# shorewall show capabilities

如何查看shorewall中所有宏?

# shorewall show macros
# shorewall show Web