欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

防火墙-firewalld

程序员文章站 2022-12-25 22:09:15
转载:http://www.52wiki.cn/docs/linux/linux-1ao67g3qlteo0 一.简介 firewalld是centos7系统默认的防火墙,和iptables一样,是使用系统中netfilter内核模块的管理工具。 和iptables不一样的点firewalld 使用 ......

转载:

一.简介

firewalld是centos7系统默认的防火墙,和iptables一样,是使用系统中netfilter内核模块的管理工具。

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

优点:
支持动态的配置规则
有多个预设的区域,可以在不同环境下,简单方便的变更规则

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低

firewalld有的区域(zone)
block(拒绝)
dmz(非军事化)
drop(丢弃)
external(外部)
home(家庭)
internal(内部)
public(公开)
trusted(信任)
work(工作区)

文件:
/etc/firewalld/zones #用户自己定义的
/usr/lib/firewalld #系统配置文件,预定义配置文件

状态
防火墙-firewalld

target:目标
icmp-block-inversion:icmp协议类型黑白名单开关(yes/no)
interfaces:关联的网卡接口
sources:来源,可以是ip地址,也可以是mac地址
services:允许的服务
ports:允许的目标端口,即本地开放的端口
protocols:允许通过的协议
masquerade:是否允许伪装(yes/no),可改写来源ip地址及mac地址
forward-ports:允许转发的端口
source-ports:允许的来源端口
icmp-blocks:可添加icmp类型,当icmp-block-inversion为no时,这些icmp类型被拒绝;当icmp-block-inversion为yes时,这些icmp类型被允许。
rich rules:富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。

二.操作命令

启动
systemctl start firewalld

查看状态
systemctl status firewalld / firewall-cmd --state

停止
systemctl stop firewalld

禁用
systemctl disable firewalld

三.使用命令

firewall的状态

查看防火墙的状态
--state

重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置
--reload

重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
--complete-reload

紧急模式,强制关闭所有网络连接,–panic-off是关闭紧急模式
--panic-on

配置集

使用firewall-cmd添加的操作,重启会失效

添加–permanent可以写到配置文件里,永久生效
firewall-cmd --zone=public --add-service=http

区域

可以将配置写到不同与其中,例如public区域允许22端口,而external则允许80端口访问。这样登陆机器开启public,而提供服务的机器开启external。

查看支持的所有icmp类型
--get-icmptypes

查看所有区域
--get-zones

查看当前的默认区域
--get-default-zone

更改默认的区域
--set-default-zone=work

查看当前正在使用的区域
--get-active-zones

查看当前区域支持的服务
--get-services

查看当前区域开放的服务列表
--list-services

查看此区域内的所有配置,类似与iptables -l -n
--zone=public --list-all

查看所有区域配置
--list-all-zones

限制规则

add添加 remove删除/禁用

将网络接口添加到默认的区域内
--add-interface=eth0

将网络接口在默认的区域内删除
--remove-interface=eth0

添加端口到区域开放列表中
--add-port=12222/tcp

将端口范围添加到开放列表中
--add-port=5000-10000/tcp

添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
--add-service=ftp

区域内将http服务删除在开放列表中删除
--remove-service=ftp

添加源地址的流量到指定区域
--add-source=192.168.1.1

删除源地址的流量到指定区域
--remove-source=192.168.1.1

改变指定的接口到其他区域
--change-interface=eth1

确定该网卡接口是否存在于此区域
--query-interface=eth1

开启snat(源地址转换)
--add-masquerade

查询snat的状态
--query-masquerade

开启snat(源地址转换)
--add-masquerade

端口转发,本地513到其他机器的22端口,要开启masquerade
--add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101

四.例子

服务与端口

在public中添加一个允许访问http服务
firewall-cmd --zone=public --add-service=http

在public中拒绝访问http服务
firewall-cmd --zone=public --remove-service=http

允许访问12345端口的tcp流量
firewall-cmd --zone=public --add-port=12345/tcp

拒绝访问12345端口的tcp流量
firewall-cmd --zone=public --remove-port=12345/tcp

转发

将本地80端口的流量转发到本地12345端口上
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345

转发到另一台服务器上需要的区域中激活 masquerade。
firewall-cmd --zone=public --add-masquerade

将本地80端口转发到123.456.78.9的8080上
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9

将add变成remove就是去除这条
firewall-cmd --zone="public" --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9

五.丰富规则

列出你目前的丰富规则
firewall-cmd --list-rich-rules

允许192.168.0.14的所有ipv4流量
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept'

拒绝192.168.1.10的ipv4访问22端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'

允许10.1.0.3的ipv4访问80端口的tcp,并把流量转发到6532上
firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532'

六.实际操作

跳板机

跳板机通常只开放22端口,其它关闭,并且只允许某ip连接,其它需要拨vpn

选择public做默认区域
firewall-cmd --set-default-zone=public

允许指定ip访问固定端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address=10.10.10.140 port protocol="tcp" port="22" accept"

对外服务机器

允许所有访问80端口
firewall-cmd --add-port=80/tcp

允许固定ip访问所有端口
firewall-cmd --add-rich-rule 'rule family="ipv4" source address=10.10.10.140 accept'

允许跳板机ip访问22端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address=10.10.10.140 port protocol="tcp" port="22" accept"

内部应用服务器

允许所有端口访问
firewall-cmd --add-port=1-65535/tcp
firewall-cmd --add-port=1-65535/udp