之前使用CentOS6的时候一直使用的是iptables服务来进行防火墙策略的配置,但从CentOS7开始系统默认自带的防火墙工具是firewalld,想要使用iptables还得另外安装,刚好项目需要搭建一个测试环境,模拟网络隔离的场景,于是用firewalld试了一把。

firewalld的基本使用

要配置策略,前提是firewalld服务得启动,所以先来了解一下firewalld服务的一些常用命令吧!

CentOS7推荐使用systemctl来代替service命令的使用,它是融合了之前service和chkconfig的功能,刚开始使用还有点不太顺手。。

  • 查看firewalld的状态:systemctl status firewalld 在这里插入图片描述

  • 启动firewalld:systemctl start firewalld

  • 关闭firewalld:systemctl stop firewalld

  • 禁用firewalld:systemctl disable firewalld

查看防火墙配置

1. iptables命令

虽然CentOS默认不支持iptables服务了,但是iptables命令还是可以继续使用的,依然可以通过iptables -L -n来查看当前的防火墙配置。
在这里插入图片描述

2. firewall-cmd命令

firewall-cmd是firewalld服务的命令行工具,通过firewall-cmd命令也可查看当前配置的防火墙策略。

  • firewall-cmd --list-all 只显示public域下的策略
  • firewall-cmd --list-all-zones 显示所有的策略
    在这里插入图片描述

3. 配置文件

上面的命令行都是从配置文件中读取信息进行呈现的,对应的配置文件路径为:/etc/firewalld/zones/public.xml
里面的配置内容大致如下:

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <rule family="ipv4">
    <source address="10.10.3.21"/>
    <reject/>
  </rule>
</zone>

限制IP访问

防火墙的配置规则有很多,本文仅以限制IP访问为例来对配置方法进行介绍。

  • 需求:10.10.2.21这台机器上需要限制10.10.3.21机器进行访问。
  • 配置方法:
# 在2.21上执行如下命令
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=10.10.3.21 reject"
firewall-cmd --reload
  • 验证:
    配置之前,在3.21上ping2.21的机器,可以正常返回响应。
    在这里插入图片描述
    通过上述方法进行配置之后,再次ping2.21,已经显示不通了。
    在这里插入图片描述

REJECT和DROP

在配置防火墙策略的时候,我们要限制IP的访问,可以使用REJECT和DROP两种方式,那么它们有何区别呢?

  • DROP只是会将所有收到的包丢弃,不会返回响应,因此在请求侧在等待一段时间后会看到响应超时的提示。
    在这里插入图片描述

  • REJECT则会回复一个拒绝的数据包,因此请求侧会马上显示REFUSE的提示。
    在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐