在RHEL/CentOS Linux中使用Shorewall配置防火墙
如何配置防火墙提供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