百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

Centos7 firewalld详解,添加删除策略

qiyuwang 2024-10-22 16:26 9 浏览 0 评论

一、CENTOS7中FIREWALL防火墙

修改防火墙配置文件之前,需要对之前防火墙【/etc/firewalld/zones/public.xml】做好备份

重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙。

1.firewall-cmd --state #查看firewall的状态

firewall-cmd --list-all #查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)

firewall-cmd --list-all-zones #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)

firewall-cmd --reload #重新加载配置文件

2、关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

3、firewalld的基本使用

启动: systemctl start firewalld

查看状态: systemctl status firewalld

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

4.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

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

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

5.配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

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

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

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

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

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

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

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


二、防火墙配置文件

[root@node ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
FORWARD_direct  all  --  0.0.0.0/0            0.0.0.0/0           
FORWARD_IN_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
FORWARD_IN_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
FORWARD_OUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
FORWARD_OUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
FWDI_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination         
FWDO_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
FWDO_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_direct (1 references)
target     prot opt source               destination         

Chain FWDI_public (2 references)
target     prot opt source               destination         
FWDI_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
FWDI_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
FWDI_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FWDI_public_allow (1 references)
target     prot opt source               destination         

Chain FWDI_public_deny (1 references)
target     prot opt source               destination         

Chain FWDI_public_log (1 references)
target     prot opt source               destination         

Chain FWDO_public (2 references)
target     prot opt source               destination         
FWDO_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
FWDO_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
FWDO_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FWDO_public_allow (1 references)
target     prot opt source               destination         

Chain FWDO_public_deny (1 references)
target     prot opt source               destination         

Chain FWDO_public_log (1 references)
target     prot opt source               destination         

Chain INPUT_ZONES (1 references)
target     prot opt source               destination         
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain INPUT_direct (1 references)
target     prot opt source               destination         

Chain IN_public (2 references)
target     prot opt source               destination         
IN_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
IN_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
IN_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain IN_public_allow (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  172.17.134.13        0.0.0.0/0            tcp dpt:2181 ctstate NEW
ACCEPT     all  --  172.17.134.13        0.0.0.0/0           
ACCEPT     all  --  172.17.172.236       0.0.0.0/0         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8715 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW

Chain IN_public_deny (1 references)
target     prot opt source               destination         

Chain IN_public_log (1 references)
target     prot opt source               destination         

Chain OUTPUT_direct (1 references)
target     prot opt source               destination 

[root@node ~]# cat /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"/>
  <port protocol="tcp" port="8715"/>
  <port protocol="tcp" port="80"/>
  <rule family="ipv4">
    <source address="172.17.134.13"/>
    <port protocol="tcp" port="2181"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="172.17.134.13"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="172.17.172.236"/>
    <accept/>
  </rule>
</zone>

三、CENTOS7的FIREWALLD开启端口/IP、屏蔽IP

开启防火墙:systemctl start firewalld

查看开放的端口和服务以及屏蔽的IP:firewall-cmd --zone=public --list-all

查看系统中查看系统中可用的服务:firewall-cmd --get-services

添加端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)

查看:firewall-cmd --zone= public --query-port=80/tcp

添加端口段:firewall-cmd --zone=public --add-port=5060-5061/udp --permanent

添加IP+端口:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="0.0.0.0/24" port protocol="tcp" port="10050" accept"

删除端口:firewall-cmd --permanent --zone=public --remove-port=8080/tcp

删除IP+端口:firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.0.5.0/24" port protocol="tcp" port="10050" accept"

屏蔽IP(reject):firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=43.229.53.61 reject"

屏蔽IP(drop) : firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' drop"

热加载才能生效:firewall-cmd --reload

查看屏蔽结果:firewall-cmd --list-rich-rules

因为在/usr/lib/firewalld/services/中事先定义了ssh.xml的相应的规则


四、FIREWALLD防火墙 禁止/限制 特定用户的IP访问,DROP和REJECT区别

1.drop禁止特定ip连接ssh/22服务
  firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' service name='ssh' drop"
  firewall-cmd --reload ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
 
2.reject禁止特定ip连接ssh/22服务
  firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='x.x.x.x/24' service name='ssh' reject"
  firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='x.x.x.x/24' port port=22 protocol=tcp reject"
  firewall-cmd --reload
3.accept运行特定ip连接ssh/22服务
  firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' port port=22 procotol=tcp accept"
  firewall-cmd --reload
防火墙内的策略动作有DROP和REJECT两种,区别如下:
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
 
    至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。
 
    一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防

相关推荐

第二十六章 Bat文件(bat文件百科)

第二十六章Bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下输入批处理文件的名称,或者双击该批处理...

自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏

引言FFMpeg是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。但也拦不住,FFMpeg本身是命令行程序,可编写脚本,借助Bash轻松快速地构建自动化程序。...

批处理:创建和删除文件夹命令(批处理命令 删除文件夹)

上一期,我们学习了文件夹的查看命令:tree和dir,以及文件夹切换命令:cd,今天,我继续给大家讲解下批处理的目录(文件夹)操作命令:创建和删除。一.md:创建目录(文件夹)可以在当前文件夹下创建...

利用VBA创建新的工作簿(vba 创建工作簿)

【分享成果,随喜正能量】我告诫自己:你的话说得太多,你听别人倾诉得太多,你咖啡喝得太多,你在陌生的房间里坐的时间太长,你的睡眠质量太差,你醒着的时间太长,你平庸的事想得太多,你希望过多,你安慰自己太频...

实用小工具,注册表文件快速转换.bat文件

关于注册表注册表是Windows操作系统中的一个核心数据库,它用于存储系统和应用程序的设置信息。这个数据库文件控制着Windows操作系统的外观和如何响应外来事件的工作方式。注册表包含了各种参数,直接...

如何给自己的电脑做一个截图工具?现场教会你具体流程和步骤

做自媒体,经常要用到一些图片,有时候图片上有水印去不掉,这时候要是有一个能随意截图的工具该有多少呀!今天教授让大家自己设计一个截图工具。下面就是流程和步骤:1、在电脑页面的任意位置,点击鼠标右键,新建...

Windows使用批处理文件更改目录下的文件名(含序号)

从网上下载的图片,默认的名字是由许多字母和数字组成的比较长的一个字符串,不便于人记忆,使用起来比较麻烦。如下图所示:本文的目的是写一个批处理文件,将该目录中的所有扩展名为jpeg的文件改名为日期加序号...

学习VB编程第35天,如何调用bat批处理

今天学习了刘金玉老师零基础VB教程的第43期,学习的主要内容是如何调用bat批处理登录。一、什么是批处理1.什么是命令提示符(cmd)?在Windows开始菜单运行(windows+r键也可调出)中输...

利用bat让文件在指定时间自动进行备份

在很多时候,我们需要备份电脑中的一些文件,特别是企业服务器的备份,可能是有一些文件每天都会有更新,或者定期更新,而文件又是相对比较重要的,需要我们定时去备份。可有时候文件比较大,备份时间比较长,或者在...

BAT 批处理脚本教程(批处理脚本编写教程)

BAT批处理脚本教程第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处...

Windows系统bat批处理常用命令(一)

一、批处理中常用的命令:@命令:加在每个命令行的最前面,表示运行时不显示这一行的命令行。eg:@echooff//不显示后续命令行及当前命令行...

编写bat文件在windows上自动执行cmd命令

windows电脑上直接新建txt记事本文件,编写好要执行的命令后,将后缀修改成.bat,然后直接点击文件就可以执行里面的命令了#打开命令窗口startcmd#/k执行完命令不关...

不会C语言写bat脚本代码批量修改文件名,DeepSeek帮你解决!

哈喽大家好,我是小飞。今天给大家讲一下DeepSeek做了一个批量修改文件夹的bat脚本。·首先先让它这样修改一下,因为之前已经做过一个,然后它没有改,现在让它修改一下,把它修改一个很智能的BAT脚本...

BAT批处理命令之ren/rename(与Excel合作批量修改文件名)

写在前面一鸽就是半年...

使用批处理文件——autoexec.bat(批处理more)

1、dblspace.sys磁盘压缩。  drvspace.sys、dblspace和drvspace是Microsoft公司推出的磁盘压缩工具,可以将磁盘的空间增加许多,但由于它依靠对文件进行压...

取消回复欢迎 发表评论: