CentOS7 防火墙详解

本贴最后更新于 1991 天前,其中的信息可能已经时移俗易

CentOS7 防火墙详解

centos 有两种防火墙 FirewallD 和 iptables 防火墙。

centos7 使用的是 FirewallD 防火墙。

FirewallD 是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

FirewallD 使用区域和服务而不是链式规则。
它动态管理规则集,允许更新规则而不破坏现有会话和连接。

FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。

1. firewalld 的基本使用

  • 启动: systemctl start firewalld
[root@ppl ~]# systemctl start firewalld
[root@ppl ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-10-28 23:08:50 EDT; 2s ago
     Docs: man:firewalld(1)
 Main PID: 13750 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─13750 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Oct 28 23:08:49 ppl systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 28 23:08:50 ppl systemd[1]: Started firewalld - dynamic firewall daemon.
[root@ppl ~]# 
  • 关闭: systemctl stop firewalld
[root@ppl ~]# systemctl stop firewalld
[root@ppl ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2018-10-28 23:07:40 EDT; 3s ago
     Docs: man:firewalld(1)
  Process: 673 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 673 (code=exited, status=0/SUCCESS)

Oct 18 23:06:19 ppl systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 18 23:06:22 ppl systemd[1]: Started firewalld - dynamic firewall daemon.
Oct 28 23:07:39 ppl systemd[1]: Stopping firewalld - dynamic firewall daemon...
Oct 28 23:07:40 ppl systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@ppl ~]# 
  • 查看状态: systemctl status firewalld
[root@ppl ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-18 23:06:22 EDT; 1 weeks 3 days ago
     Docs: man:firewalld(1)
 Main PID: 673 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─673 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Oct 18 23:06:19 ppl systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 18 23:06:22 ppl systemd[1]: Started firewalld - dynamic firewall daemon.
[root@ppl ~]# 
  • 开机禁用 : systemctl disable firewalld

  • 开机启用 : systemctl enable firewalld

2. systemctl 工具

systemctl 是 CentOS7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service

[root@ppl ~]# systemctl is-enabled firewalld.service
enabled
[root@ppl ~]#

查看已启动的服务列表:systemctl list-unit-files|grep enabled

[root@ppl ~]# systemctl list-unit-files|grep enabled
auditd.service                                enabled 
autovt@.service                               enabled 
chronyd.service                               enabled 
runlevel2.target                              enabled 
runlevel3.target                              enabled 
runlevel4.target                              enabled 
[root@ppl ~]# 

查看启动失败的服务列表:systemctl --failed

[root@ppl ~]# systemctl --failed
  UNIT            LOAD   ACTIVE SUB    DESCRIPTION
 postfix.service loaded failed failed Postfix Mail Transport Agent

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

1 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
[root@ppl ~]# 

3. 配置 firewalld-cmd

查看版本: firewall-cmd --version

[root@ppl ~]# firewall-cmd --version
0.4.4.4
[root@ppl ~]# 

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

[root@ppl ~]# firewall-cmd --state
running
[root@ppl ~]# 

查看所有打开的端口: firewall-cmd --zone=public --list-ports

[root@ppl ~]# firewall-cmd --zone=public --list-ports
80/tcp
[root@ppl ~]# 

更新防火墙规则: firewall-cmd --reload

查看区域信息: firewall-cmd --get-active-zones

[root@ppl ~]#  firewall-cmd --get-active-zones
public
 interfaces: ens33
[root@ppl ~]# 

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

4. 开启端口

  • 添加

    firewall-cmd --zone=public --add-port=80/tcp --permanent    --permanent永久生效,没有此参数重启后失效)
    

    命令含义:

    • zone #作用域

    • add-port=80/tcp #添加端口,格式为:端口/通讯协议

    • permanent #永久生效,没有此参数重启后失效

  • 重新载入

    firewall-cmd --reload
    
  • 查看

    [root@ppl ~]# firewall-cmd --zone=public --query-port=80/tcp
    yes
    [root@ppl ~]#
    
  • 删除

    [root@ppl ~]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
    success
    

技术改变人生 Q 群:702101215
爱学习:www.aixx123.com


  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 286 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...