管控Linux 7防火墙

2018-03-03 05:54
网络安全和信息化 2018年6期
关键词:日志命令端口

Linux 7防火墙的特点

在Linux 7防火墙中提供了Firewalld管理工具。因为普通用户无法直接操作内核空间的Netfilter组件,所以需要使用以上工具来进行管理。Firewalld是Linux 7默认的管理工具,为了防止和Iptables产生冲突,可以编写一个简单的脚本,包含“#!/bin/bash”、“for SERVICE in iptables ip6tables ebtables”、“s y s t e m c t l m a s k${SERVICE}.service”以 及“done”等行,执行“chmod 755 xxx.sh”、“./xxx.sh”命令,名称可以假设为“xxx.sh”,就可以禁用之前的管理工具了。Linux 7支持trusted、home、internal、work、public等区域。

使用富规则,实现灵活管控

FireWalld提 供 了“Direct rules”(直接规则)和“Rich Rules”(富 规 则)两个选项。前者主要用于使服务和应用程序能够增加规则,但灵活性较差,难以管理。富规则提供了更为复杂和精细的配置,其语法相对来说比较复杂,能够对数据包的源地址、目标地址进行过滤,针对服务、端口、协议、ICMP拦截、伪装、端口转发等动作进行控制,对流量可以进行更加精细的管控。并且可以将流量信息记录到日志和审计中,根据具体情况可以执行接受、拒绝和丢弃等操作。

例如执行“firewallc m d --p e r m a n e n t--zone=classroom -add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'”命令,对自定义区域“classroom”增加一条富规则,作用是针对IPv4流量进行控制,拒绝源地址为192.168.0.11的连接。执行“firewall-cmd --reload”、“firewall-cmd --list-richrules -zone=xxx”命令,列出“xxx”区域中的所有的富规则。执行firewall-cmd--remove-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'”命令,可以移除指定的富规则。

执 行“firewall-cmd--add-rich-rule='rule service name=ftp limit value=2/m accept'” 命令,对于当前区域增加一条富规则,作用是针对FTP连接进行控制,只允许在每分钟内接受两个新连接。 执 行“firewall-cmd--permanent --zone=xxx-add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 p o r t=7 9 0 0-8 0 0 0 protocol=tcp accept'”命令,对区域“xxx”增加一条富规则,作用是针对IPv4流量进行控制,允许源地址为192.168.1.0/24,端 口 来 自7900到8000的TCP连接通过防火墙。

为便于监控流量信息,还可将其记录到日志中。例 如 执 行“firewall-cmd--permanent --zone=xxx-add-rich-rule='rule service name="ssh" log prefix="ssh " level="notice" limit value="3/m" accept'”命令,表示针对区域“xxx”添加一条富规则,将服务名为“ssh”的流量放行,并记录到日志中。日志的级别包括emerg(恐慌)、alert(报警)、crit(紧急)、error(错误)等。执行“grep ssh /var/log/message”命令即可检索到这些日志信息。

执 行“firewall-cmd--add-rich-rule='rule family=ipv6 source address="2001:db8::/64"service name="dns" audit limt value="1/h" reject'-timeout=300” 命 令,可以为当前区域添加一条富规则,作用是针对IPv6流量进行控制,拒绝源地址为“2001:db8::/64”,服 务名为“dns”的流量,并对其进行审计,速率为每小时处理一条消息,该规则超时时间为300毫秒。当安装了HTTPD之后,执行“systemctl start https”命令,启动Web服务。执行“firewall-cmd--permanent --zone=public--add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=http log p r e f i x="N E W H T T P"level="notice" limit value="3/s" accept'”命令添加一条富规则,对源地址为172.16.1.0/24,服务名为“http”的连接进行记录,前日志前缀为“NEW HTTP”,速率为每秒3条,对这样的放行。执行“firewall-cmd --reload”命令加载,执行“tail -f /var/log/messages”命令,监视日志变化情况。

地址伪装和端口转发

Linux 7防火墙机制中提供了地址伪装和端口转发功能。在防火墙主机上至少需要安装两块网卡,分别连接内网和外网。执行“firewall-cmd -listall”命令,在默认情况下当前区域的规则列表中的“masquerade:”栏 中 显示“no”,说明伪装并未打开。 执 行“firewall-cmd--permanent --zone=public-add-masquerade”命令,为Public区域添加伪装。

执 行“firewall-cmd--reload”和“firewall-cmd-list-all”命令,显示伪装功能已打开。因为在上面的例子中,已经为Public区域设置了相应富规则,允许172.16.1.0/24网段主机通过防火墙访问外网,而且将连接内外网的接口添加到了Public区域的“interrface”接口列表中,这样伪装效果就发挥了出来,内网中该网段内的主机就可以通过防火墙访问外网Web主机了。对端口转发来说,即可从本机的端口转发到另一个端口,也可转发到另一个系统,这只是在伪装接口下有用。注意,端口转发只是用于Ipv4。

创建自定义区域和服务

处理使用系统自带的区域和服务外,Linux 7的防火墙也允许用户自定义所需的区域和服务。防火墙配置文件分别存储在“/usr/lib/firewalld” 和“/etc/firewalld”目录中。前者是系统默认,后者是当前使用的。如果要自定义区域和服务,需要以前者为模版。防火墙区域的定义信息存储在“.xml”格式文件中,进入“/etc/firewalld/zones”目录中,执行“cat public.xml”命令,显示Public区域的配置信息,其中包含该区域的所有规则信息。可以直接添加规则,实现灵活编辑。

进 入“/u s r/l i b/firewalld/zones”目录,其中显示了各种默认的区域配置信息。执行“cat public.xml”命令,查看默认的区域配置信息,但并未包含任何规则。了解了这些内容,实现自定义区域操作就很简单了。例如执行“firewall-cmd--new-zone --permanent--new-zone=workzone”,“firewall-cmd --reload”命令,可以自定义一个名为“workzone”的区域。进入“/etc/firewalld/zones”目录中,可以看到该区域配置文件。当然,该文件默认配置信息为空。

执 行“f i r e w a l lc m d --l i s t-a l l--zone=workzone”命令,显示不包含任何规则信息。之后可以按照上面的方法为其添加所需规则。例如执行“firewall-cmd --changeinterface=enoxxxxxx -zone=workzone”命令,将指定的网络接口添加到该自定义区域。执行“firewall-cmd-zone=workzone --addservice=ssh --permanent”,“firewall-cmd --reload”命令添加SSH服务,即允许连接SSH服务。这样,在客户端连接与之相关的IP时,即可访问该机的SSH服务了。

当然,也可以进入“/etc/firewalld/zones” 目录中,执行“vi workzone.xml”命令进行编辑,添加“”行,就 开 放 了FTP服务。创建自定义服务的方法与上述大体相同,配置文件分别存储在“/usr/lib/firewalld/services”和“/etc/firewalld/services”目录中。执行“firewall-cmd--new-service=newservice--permanent”、“firewallcmd --reload”命令,可以自定义一个名为“newservice”的服务。该服务默认为空,进 入“/etc/firewalld/services”目录,会显示名为“newservice.xml”的文件,其内容为空。可参阅系统默认提供的服务配置文件进行适当的修改,添加开放的端口和模块,来满足实际的需要。执行“firewall-cmd--add-service=newservice-z o n e=w o r k z o n e--permanent”命令,可以将该服务添加到“workzone”区域中。

猜你喜欢
日志命令端口
只听主人的命令
一名老党员的工作日志
一种端口故障的解决方案
扶贫日志
硬件解耦三端口变换器的软开关分析与仿真
多按键情况下,单片机端口不足的解决方法
雅皮的心情日志
移防命令下达后
游学日志
这是人民的命令