linux防火墙相关命令与使用

1.linux 防火墙介绍

在 Fedora、CentOS、Red Hat 和一些类似的发行版本上,默认安装的防火墙软件是 firewalld,通过 firewall-cmd 命令来配置和控制,本文主要讲解firewalld。

  • 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
  • 支持IPv4、IPv6防火墙设置以及以太网桥
  • 支持服务或应用程序直接添加防火墙规则接口
  • 拥有两种配置模式
  • 运行时配置(临时配置)
  • 永久配置

Firewalld和iptables的关系

netfilter

位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”
Firewalld/iptables

CentOS 7默认的管理防火墙规则的工具(Firewalld)
称为Linux防火墙的“用户态”

在这里插入图片描述

Firewalld iptables
配置文件 /usr/lib/firewalld,/etc/firewalld /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失链接
防火墙类型 动态防火墙 静态防火墙

2.firewalld启动、查看、关闭

#启动: firewalld
systemctl start firewalld
#查看状态: 
systemctl status firewalld
#查看firewall运行状态
firewall-cmd --state
#停止:
systemctl stop firewalld
#禁用:
systemctl disable firewalld
#重新加载firewall 一般是修改firewalld以后需要重新加载
firewall-cmd --reload
#重启firewalld
systemctl restart firewalld

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

4.firewalld放行端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放8080端口(TCP协议)任何ip都可以访问此端口
firewall-cmd --permanent --add-port=8080/tcp
# 移除上一个命令新建的规则
firewall-cmd --permanent --remove-port=8080/tcp
# 新建永久规则,批量开放一段端口(TCP协议)9001-9100区间的端口都开放
firewall-cmd --permanent --add-port=9001-9100/tcp

#添加或者移除规则后重新加载firewall后配置才会生效
firewall-cmd --reload

5.firewalld放行白名单ip

# 新建永久规则,开放192.168.1.1单个源IP的访问
firewall-cmd --permanent --add-source=192.168.1.1
# 新建永久规则,开放192.168.1.0/24源IP段的访问 
#192.168.1.0/24这个网络是指192.168.1.1-192.168.1.255之间的ip,24代表网络位24位,主机位8位
firewall-cmd --permanent --add-source=192.168.1.0/24
# 移除上述规则
firewall-cmd --permanent --remove-source=192.168.1.1


6.配置规则

# 允许指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
# 允许指定IP段访问本机8080-8090端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'
# 禁止指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'
#移除第一条规则(所有的移除规则基本都是add改成remove)
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'


命令解释:
accept 允许 reject 拒绝 drop 拒绝
–add-rich-rule 添加设置
–remove-rich-rule 移除设置
–permanent 永久生效, 需要重新载入后生效

7.防火墙zone(域)的概念

#可以得到所有的域

firewall-cmd --get-zones 

1、丢弃(drop):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用 iptables -j drop。使用丢弃规则意味着将不存在响应。
2、阻塞(block):阻塞区域会拒绝进入的网络连接,返回 icmp-host-prohibited,只有服务器已经建立的连接会被通过即只允许由该系统初始化的网络连接。
3、公共(public):只接受那些被选中的连接,默认只允许 ssh 和 dhcpv6-client。这个 zone 是缺省 zone。
4、外部(external):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,即 ssh,而其它的连接将被丢弃或者不被接受。
5、隔离(dmz):如果想要只允许给部分服务能被外部访问,可以在 dmz 区域中定义。它也拥有只通过被选中连接的特性,即 ssh。
6、工作(work):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许 ssh,ipp-client 和 dhcpv6-client。
7、家庭(home):这个区域专门用于家庭环境。它同样只允许被选中的连接,即 ssh,ipp-client,mdns,samba-client 和 dhcpv6-client。
8、内部(internal):这个区域和工作区域(work)类似,只有通过被选中的连接,和 home 区域一样。
9、信任(trusted):信任区域允许所有网络通信通过。记住:因为 trusted 是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 trusted 是允许所有连接的。

猜你喜欢

转载自blog.csdn.net/tian830937/article/details/132657710