admin管理员组文章数量:1642331
firewall安全策略
Firewall代替iptables有更加人性化的操作方式,使得防火墙规则的配置变得非常的简单。Firewall可以简单地使用
firewall-cmd --permanent --add-port=80/tcp
开放一个端口,但是很快发现这个格式并不能设置请求来源的IP。查阅很多资料发现如下命令
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=122.x.x.234 port port=80 protocol=tcp accept'
该命令中address可以指定开放的IP,protocol指定协议类型,family指定IP协议。
配置文件修改规则
我个人并不喜欢使用命令行形式来定义规则,所有我推荐使用直观可见的配置文件形式。Firewall所有空间(zone)的规则都以且只以/etc/firewall/zones/下的xml文件配置为准,当我们使用命令行时,firewall会自动在该目录下添加配置。这里以public作为例子。
public.xml:
<zone>
<short>Public</short>
<description>....</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<port protocol="tcp" port="10086"/>
</zone>
这里<port/>标签表示允许所有10086端口的请求通过。若需要限制IP可以使用<rule/>
<zone>
<short>Public</short>
<description>....</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<rule family="ipv4">
<source address="192.168.1.1/24"/>
<port protocol="tcp" port="10086"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="127.0.0.1"/>
<port protocol="tcp" port="10086"/>
<accept/>
</rule>
</zone>
Rule中familly表示IP协议类型;
source的address指定IP,可以使用单IP和网关形式
Port表示端口号
<accept/>表示允许,可以更换为<drop/>
使用Service管理规则
对于小型的服务器需求,如上的配置已经可以满足需求;在需求比较复杂的服务器上,可能会出现如下情况:
<zone>
<short>Public</short>
<description>....</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<rule family="ipv4">
<source address="192.168.1.1/24"/>
<port protocol="tcp" port="1"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="IP2"/>
<port protocol="tcp" port="1"/>
<port protocol="tcp" port="2"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="IP3"/>
<port protocol="tcp" port="1"/>
<port protocol="tcp" port="2"/>
<port protocol="tcp" port="3"/>
<port protocol="tcp" port="4"/>
<accept/>
</rule>
....................................................... .......................................................
</zone>
若此时我们的项目需要将端口1改为端口5,我们只有修改每一条rule的规则,并且多次检查防止出现错误。Firewall也考虑到了这一点,它可以使用service将这些规则进行统一的管理和维护。
Firewall拥有很多预定义的service,它们放在/usr/lib/firewall/service/目录下,当我们需要添加新的service时,可以参照已有的模板。下面是ssh服务的service配置:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>ssh</description>
<port protocol="tcp" port="22"/>
</service>
该service配置了tcp的22端口,当我们需要给该service配置多个port时,只需要添加多个<port/>标签即可。
test1.xml:
<service>
<short>test1</short>
<description>test1</description>
<port protocol="tcp" port="1"/>
<port protocol="tcp" port="2"/>
</service>
test2.xml
<service>
<short>test2</short>
<description>test2</description>
<port protocol="tcp" port="3"/>
<port protocol="tcp" port="4"/>
</service>
配置好service后,我们重新配置public.xml。
<zone>
<short>Public</short>
<description>....</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<rule family="ipv4">
<source address="192.168.1.1/24"/>
<port protocol="tcp" port="1"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="IP2"/>
<service name=”test1”/>
<accept/>
</rule>
<rule family="ipv4">
<source address="IP3"/>
<service name=”test1”/>
<service name=”test2”/>
<accept/>
</rule>
....................................................... .......................................................
</zone>
此时若想将test1的1端口改为4,只需要修改/usr/lib/firewall/service/test1.xml文件配置即可,没必要修改每一个rule。
PS:若/etc/firewall/zones/下没有xml文件,可以在/usr/lib/firewall/zones/中找到默认配置,你可以在这里面找到所有zone的默认配置,若想修改它,只需要将对应的xml文件复制到/etc/firewall/zones/下并且修改即可。
PS: 一切修改完成后,需要使用firewall-cmd --reload重新加载。
版权声明:本文标题:firewall安全策略 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729336501a1197052.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论