白小兔的小小站

既然选择了远方,便只顾风雨兼程

0%

CentOS7:防火墙规则配置

服务器如果没有恰当地设置防火墙,就会留下极大的安全隐患。现在的网络环境很复杂,一不小心就会成为别人的肉鸡,或者造成数据泄露,这里介绍了防火墙规则的一些简单配置方法。

前言

CentOS7/RHEL7系统默认的iptables管理工具是firewalld,它有图形界面和命令行两种管理方式,这里主要介绍命令行操作。

注意:如果使用的是云服务器,先要在云后台开放端口,然后关闭centos防火墙或者开放centos的对应端口,防止所有端口关闭后ssh登录不上!

基本概念

  1. 系统配置目录(/usr/lib/firewalld/services):存放定义好的网络服务和端口参数,系统参数,不能修改。

  2. 用户配置目录(/etc/firewalld/):可以通过修改配置文件的方式添加端口,也可以通过命令的方式添加端口,修改的内容会在本目录下的配置文件中体现。

    • 命令的方式添加端口

      1
      firewall-cmd --permanent --add-port=9527/tcp 

      参数介绍:

      1
      2
      3
      1. firewall-cmd:是Linux提供的操作firewall的一个工具
      2. --permanent:表示设置为持久
      3. --add-port:标识添加的端口

      另外,firewall中有Zone的概念,可以将具体的端口指定到具体的zone配置文件中。

      例如:添加8010端口

      1
      2
      3
      firewall-cmd --zone=public --permanent --add-port=8010/tcp

      # --zone=public:指定的zone为public

      如果-–zone=tom 这样设置的话,会在tom.xml文件中新增一条。

    • 修改配置文件的方式添加端口

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      <?xml version="1.0" encoding="utf-8"?>
      <zone>
      <short>Public</short>
      <description>For use in public areas.</description>
      <rule family="ipv4">
      <source address="122.10.70.234"/>
      <port protocol="udp" port="514"/>
      <accept/>
      </rule>
      <rule family="ipv4">
      <source address="123.60.255.14"/>
      <port protocol="tcp" port="10050-10051"/>
      <accept/>
      </rule>
      <rule family="ipv4">
      <!-- 允许指定ip、指定端口和协议 -->
      <source address="192.249.87.114"/>
      <port protocol="tcp" port="80"/>
      <accept/>
      </rule>
      <rule family="ipv4">
      <!-- 允许任意ip访问服务器的9527端口 -->
      <port protocol="tcp" port="9527"/>
      <accept/>
      </rule>
      </zone>

      上述配置文件可以看出:

      1. 添加需要的规则,开放源ip为122.10.70.234,端口514,协议tcp
      2. 开放源ip为123.60.255.14,端口10050-10051,协议tcp
      3. 开放源ip为任意,端口9527,协议tcp

常用命令

1
2
3
4
systemctl start/stop firewalld #启动/关闭服务
systemctl enable/disable firewalld #开机启动/禁用服务
service firewalld restart #重启服务
systemctl status firewalld #查看服务状态

如果系统中没有firewalld服务,可以通过以下命令安装:

1
yum -y install firewalld

设置规则

  1. 查看状态

    1
    firewall-cmd --state
  2. 获取活动的区域

    1
    firewall-cmd --get-active-zones
  3. 获取所有支持的服务

    1
    firewall-cmd --get-service
  4. 应急模式(阻断所有的网络连接)

    1
    2
    3
    4
    5
    firewall-cmd --panic-on #开启应急模式

    firewall-cmd --panic-off #关闭应急模式

    firewall-cmd --query-panic #查询应急模式
  5. 修改配置文件后,使用命令重新加载

    1
    firewall-cmd --reload
  6. 启用某个服务/端口

    1
    2
    3
    4
    5
    6
    7
    firewall-cmd --zone=public --add-service=https #临时

    firewall-cmd --permanent --zone=public --add-service=https #永久

    firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp #永久

    firewall-cmd --zone=public --add-port=8080-8081/tcp #临时

    如果是要删除,直接修改成remove-service或者remove-port

  7. 查看开启的端口和服务

    1
    2
    3
    firewall-cmd --permanent --zone=public --list-services #服务空格隔开,例如:dhcpv6-client https ss

    firewall-cmd --permanent --zone=public --list-ports #端口空格隔开,例如:8080-8081

    在每次修改 端口和服务后/etc/firewalld/zones/public.xml文件就会被修改。

  8. 设置某个ip访问某个服务

    1
    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.122.0/24" service name="http" accept" #ip 192.168.122.0/24 访问 http
  9. 其他命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    firewall-cmd -–list-all #查看防火墙规则
    firewall-cmd --state #查看防火墙状态,是否是running
    firewall-cmd --reload #重新载入配置,比如添加规则之后,需要执行此命令
    firewall-cmd --get-zones #列出支持的zone
    firewall-cmd --get-services #列出支持的服务,在列表中的服务是放行的
    firewall-cmd --query-service ftp #查看ftp服务是否支持,返回yes或者no
    firewall-cmd --add-service=ftp #临时开放ftp服务
    firewall-cmd --add-service=ftp --permanent #永久开放ftp服务
    firewall-cmd --remove-service=ftp --permanent #永久移除ftp服务
    firewall-cmd --add-port=80/tcp --permanent #永久添加80端口
    iptables -L -n #查看规则,这个命令是和iptables的相同的
    man firewall-cmd #查看帮助

切换为iptables防火墙

切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。

  1. 关闭firewall

    1
    2
    systemctl stop firewalld          # 关闭服务
    systemctl disable firewalld # 取消开机启动
  2. 安装iptables防火墙

    1
    yum install iptables-services #安装
  3. 具体操作方法,请查看另外一篇笔记iptables防火墙规则配置.md