firewall安全策略

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重新加载。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值