firewalld防火墙
防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。
windows防火墙
Linux防火墙
CentOS6x中防火墙叫做iptables
CentOS7.x 中默认使用的防火墙是firewalld
firewalld = fire 火 wall 墙 daemon 守护进程
firewalld防火墙的概念
区域
firewalld增加了区域的概念,所谓区域(zone)是指,firewalld预先准备了几套防火墙策略的集合,类 似于策略的模板,用户可以根据需求选择区域。 常见区域及相应策略规则(即:哪些端口或服务可以通过防火墙,哪些不可通过)
区域 | 默认策略 |
---|---|
trusted(信任区域) | 允许所有数据包 |
home(家庭区域) | 拒绝流入的流量,除非与流出的流量相关,允许 ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过 |
internal(内部区域) | 等同于home |
work(工作区域) | 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6- client服务通过 |
public(公共区域) | 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通 过 |
external(外部区域) | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
dmz(隔离区域|非军事区域) | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
block(限制区域) | 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作。有响 应消息 |
drop(丢弃区域) | 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作。无响 应消息 |
案例:在linux系统中安装httpd服务(web服务),占用80端口
# yum install httpd -y
扩展: 卸载:yum remove 服务名称
# systemctl start http
安装启动完成后,在浏览器中输入:http://服务器的ip地址,即可访问httpd服务的页面
以上操作,无法进行正常访问,因为firewalld防火墙,已经把httpd(80端口)屏蔽了,所以无法访问这台服务器的80端口,即httpd服务
临时解决
# systemctl stop firewalld
管理firewall配置
命令:firewall-cmd
作用:管理firewall具体配置
语法:
#firewall-cmd [参数选项1] ....[参数选项n]
查看默认使用的区域
用法一:firewall-cmd 选项
示例代码:
#firewall-cmd --get-default-zone
含义:查看默认使用区域,当前默认使用区域为public
查看所有可用区域
用法二:firewall-cmd 选项
示例代码:
#firewall-cmd --get-zones
含义:查看所有可用区域
列出当前使用区域配置
用法三:firewall-cmd 选项
示例代码:
#firewall-cmd --list-all
含义:查看所有可用区域
target: default: 没有指定特定的目标规则集,可能是使用默认的规则集。
icmp-block-inversion: no: 不反转 ICMP 阻塞规则,即不对 ICMP 进行特殊处理。
interfaces: ens33: 规则应用于 ens33 网络接口。
services: ssh dhcpv6-client: 允许通过防火墙的流量服务包括 SSH 和 DHCPv6 客户端。
ports:: 没有特定端口被指定,这可能意味着允许所有端口的流量通过。
protocols:: 没有指定特定的协议,这可能意味着允许所有协议的流量通过。
masquerade: no: 不对流量进行伪装,即不修改数据包的源地址。
forward-ports:: 没有指定端口转发规则,这可能意味着不进行端口转发。
source-ports:: 没有指定源端口规则,这可能意味着允许所有源端口的流量通过。
icmp-blocks:: 没有指定 ICMP 阻塞规则,这可能意味着 ICMP 流量不受阻碍。
rich rules:: 没有提供详细的规则,通常用于指定更复杂的防火墙规则
列出所有区域的配置
用法四:firewall-cmd 选项
示例代码:
#firewall-cmd --list-all-zones
含义:查看所有可用区域
添加允许通过的服务或端口
用法五:firewall-cmd 选项
通过服务名称添加规则
语法:
# firewall-cmd --zone=区域名称 --add-service=服务名称
示例:
#firewall-cmd --zone=public --add-service=ftp
含义:在public区域,添加允许ftp服务通过的规则
#firewall-cmd --zone=public --add-service=http
含义:在public区域中,添加允许http服务通过的规则
备注:服务必须存储在/usr/lib/firewalld/services目录中
案例:把http服务添加到防火墙的规则中,允许通过防火墙
# firewall-cmd --zone=public --add-service=http
通过端口号添加规则
语法:
#firewall-cmd --zone=要添加到的区域名称 --add-port=端口号/协议
如何查看端口号:
1、usr/lib/firewalld/service/服务名.xml
2、ss -naltp | grep 服务名称
示例代码:
#firewall-cmd --zone=public --add-port=1024/tcp
含义:在public区域,添加允许tcp协议的1024端口通过的规则
案例: 把80/tcp添加到防火墙规则中,允许通过防火墙
查看服务端口的命令:
# ss -naltp | grep 服务名称
如:
# ss -naltp | grep sshd
# firewall-cmd --zone=public --add-port=80/tcp
去掉允许通过的服务或端口
用法六:firewall-cmd 选项
示例代码:
#firewall-cmd --zone=public --remove-port=1024/tcp
含义:在public区域,去掉允许tcp协议的1024端口通过的规则
#firewall-cmd --zone=public --remove-service=ftp
含义:在public区域,去掉允许ftp服务通过的规则
运行模式和永久模式
运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件。重启就失效
永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效。
firewalld默认采用运行模式
永久模式参数permanent
用法七:firewall-cmd 选项
示例代码:
#firewall-cmd --permanent --zone=public --add-port=1024/tcp
含义:在public区域,使用permanent参数,永久添加允许1024端口通过的规则
#firewall-cmd --permanent --zone=public --add-service=http
含义:在public区域,使用permanent参数,永久添加允许http服务通过
重新加载配置reload
用法七:firewall-cmd 选项
示例代码:
#firewall-cmd --reload
含义:重新加载配置 相当于 systemctl reload firewall