首页 > 系统相关 >CentOS7中firewall防火墙详解和配置

CentOS7中firewall防火墙详解和配置

时间:2023-05-09 17:24:40浏览次数:44  
标签:firewall cmd 防火墙 firewalld CentOS7 -- systemctl

提示

修改防火墙配置文件之前,需要对之前防火墙做好备份

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

firewalld的基本使用

#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示not running,开启后显示running)
firewall-cmd --state
#查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all
#查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
firewall-cmd --list-all-zones
#重新加载配置文件
firewall-cmd --reload

# 启动:
systemctl start firewalld
# 查看状态:
systemctl status firewalld
# 停止:
systemctl disable firewalld
# 禁用:
systemctl stop firewalld

拓展

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
# 查看已启动的服务列表:
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表:
systemctl --failed

防火墙内的策略动作有DROP和REJECT两种

# 防火墙内的策略动作有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的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓******的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。

配置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

那怎么开启一个端口呢

# 添加(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新载入
firewall-cmd --reload
# 查看
firewall-cmd --zone= public --query-port=80/tcp
# 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

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

Centos7的firewalld开启端口、屏蔽IP

# 开启防火墙
systemctl start firewalld
# 查看开放的端口和服务以及屏蔽的IP
firewall-cmd --zone=public --list-all
# 查看系统中查看系统中可用的服务
firewall-cmd --get-services

开启端口

# 添加端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 添加端口段
firewall-cmd --zone=public --add-port=5060-5061/udp --permanent
# 删除端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
# 热加载才能生效
firewall-cmd --reload

屏蔽IP

# 屏蔽IP
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=43.229.53.61 reject"
# 查看屏蔽结果
firewall-cmd --list-rich-rules

firewalld防火墙禁止/限制特定用户的IP访问

drop禁止特定ip连接某服务

# 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 --list-all-zones不会显示刚加上的规则
firewall-cmd --reload

reject禁止特定ip连接某服务

# 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 --list-all-zones不会显示刚加上的规则
firewall-cmd --reload

accept运行特定ip连接ssh/22服务

# 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

firewalld 添加删除策略

# firewalld 添加删除策略
sudo 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 --reload
# 删除:
sudo firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.0.5.0/24" port protocol="tcp" port="10050" accept"
# 加载:
firewall-cmd --reload

标签:firewall,cmd,防火墙,firewalld,CentOS7,--,systemctl
From: https://www.cnblogs.com/HJ-study/p/17385634.html

相关文章

  • Centos7安装Mysql5.7.42
    安装前的清理查看是否安装了Mysql版本yumlistinstalledmysql*rpm–qa|grepmysql*如果安装了请自行卸载查看是否安装了MariaDBrpm-qa|grepmariadb如果安装了MariaDB,则进行删除操作rpm-e--nodepsmariadb-libs下载Mysql5.7.42wgethttps://cdn.mysql.com//Downl......
  • Centos7搭建Minio环境(配置开机自启)
    Minio添加环境变量#设置控制台账号最少3位exportMINIO_ACCESS_KEY=admin#设置密码最少8位exportMINIO_SECRET_KEY=12345678为启动程序授权chmod+xminio执行启动./minioserver/mnt/data--console-address":9001"/mnt/data是minio本地存储的路径。在......
  • Centos7安装JDK1.8详细步骤
    JDK解压JDK安装文件。在终端中,进入你下载的JDK安装文件所在的目录,然后执行以下命令:tar-zxvfjdk-<版本号>-linux-x64.tar.gz其中,<版本号>是你下载的JDK版本号。这个命令将会解压JDK安装文件到当前目录中。将JDK安装文件移动到/usr/local/目录下。在终端中,执行以下命令......
  • Centos7安装MySQL详细步骤(配置开机自启)
    MySQL检查系统是否安装过mysql//检查系统中有无安装过mysqlrpm-qa|grepmysql//查询所有mysql对应的文件夹,全部删除whereismysqlfind/-namemysql卸载CentOS7系统自带mariadb#查看系统自带的Mariadb[root@CDH-141~]#rpm-qa|grepmariadbmariadb-libs-5.5......
  • Centos7安装Redis详细步骤(配置开机自启)
    Redis获取redis安装包使用tar命令解压。$tar-zxzfredis-6.2.6.tar.gz编译和安装redis进入redis目录,执行make编译。$cdredis-6.2.6/$make编译完成后,执行makeinstall命令进行安装。$makeinstall移动redis到/usr/local/redismvredis-6.2.6/usr/local/r......
  • Centos7安装nacos详细步骤(配置开机自启)
    Nacos解压文件创建数据库nacos,导入nacos的sql文件创建数据库nacos,导入nacos的sql文件修改启动文件(根据系统选择)[root@localhostbin]#cdnacos/bin/[root@localhostbin]#lsshutdown.cmdshutdown.shstartup.cmdstartup.sh[root@localhostbin]#vimstartu......
  • Nacos 使用 CentOS7 进行集群部署
    有了上篇博客的Nacos单机部署经验,对于集群搭建就容易多了。要想搭建Nacos集群,至少需要3个节点。为了统一访问地址,因此需要使用nginx进行转发。本篇博客仍然采用Nacos当前最新的版本2.2.2进行集群搭建。Nacos官网上也有集群搭建的说明,不过有点简略。Nacos的集群搭......
  • Centos7安装Docker CE
    @目录1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker1.4.配置镜像加速2.CentOS7安装DockerCompose2.1.下载2.2.修改文件权限2.3.Base自动补全命令:3.Docker镜像仓库3.1.简化版镜像仓库3.2.带有图形化界面版本3.3.配置Docker信任地址Docker分为CE和EE两大版本。......
  • CentOS7之yum仓库配置
    一、指定本地光盘作为yum仓库1.首先挂载光驱,然后新建目录并进行挂在操作,建议删除/etc/yum.repos.d下面的文件,如下所示:12[root@node01/]#mkdircentos7[root@node01/]#mount/dev/cdrom/centos7/2.然后切换到/etc/yum.repos.d目录下面创建一个repo文件,......
  • CentOS7之yum仓库配置
    (1)准备本地软件仓库挂载CentOS7光盘将光盘内的所有文档拷贝到/repo/cos7dvd/目录下(2)设置yum使用本地仓库作为软件源添加新的软件源,指向前一步准备的本地软件仓库清理yum缓存数据列出软件仓库列表,确认结果1.2步骤实现此案例需要按照如下步骤进行。步骤一:准备本地软件仓库(1)挂载......