firewalld防火墙基本配置
1、firewalld的结构
与iptables一样,分为内核态和用户态,firewalld代替了iptables,是iptables的功能增强版。
比iptables增强的功能:
1.增强了对IPv6的支持
2.增加了9个基本安全区域,使基本配置更简单。
3.向下兼容iptables的语法。
4.支持图形化界面配置
2、firewalld数据处理流程
1.将数据包中的源IP地址,定义到指定的安全区域,先执行安全区域的规则。
2.如果源地址未关联的指定区域,则使用接收数据的网卡所指定的安全区域规则。
3.如果网卡没有指定安全区域,则执行默认区域的规则。
3、firewalld的安全区域
1.trusted区域:信任区域,允许任何数据流入。
2.public区域:公共区域,允许任何数据输出,拒绝数据输入,除ssh dhcp-client dhcpv6-client 是默认区域。
3.work区域:办公区域,允许输出,拒绝输入,除ssh dhcp-client ipp-client(办公类应用)。
4.home区域:家庭区域,允许输出,拒绝输入,除ssh dhcp-client ipp-client(办公类应用),dns,samba-client
5.internal区域:内部区域,(内网区域),允许输出,拒绝输入,除ssh dhcp-client ipp-client(办公类应用),dns,samba-client
6.external区域:外部区域,(外网区域),允许输出,拒绝输入,默认配置了地址伪装功能,除ssh
7.dmz区域:隔离区域,允许输出,拒绝输入,除ssh
8.block区域:限制区域(黑名单区域),允许输出,拒绝输入
9.drop区域:丢弃区域,允许输出,拒绝输入,并且没有ICMP错误响应
4、firewalld配置语句
firewall-cmd 选项 命令子句 条件
1.查看所有区域的规则信息:
firewall-cmd --list-all-zones
public(active) #active当前活动的区域,区域中添加网络接口或源地址。
interface: ens33 #加入区域的接口
sources: ip地址 #加入区域的源地址
services: 服务名 #加入区域的服务,允许在区域访问的服务
ports: 端口号 #加入区域的端口
protocols: 协议类型 #tcp udp icmp等协议
masquerade: no #地址伪装,PAT地址转换
forward-ports:端口号 #转发端口号
sourceports:端口号 #加入源端口号
icmp-blocks:icmp消息类型 #icmp消息过滤
rich rules:富语言规则
2.查看服务名
firewall-cmd --get-services
3.查看默认区域
firewall-cmd --get-default-zone
4.查看活动区域
firewall-cmd --get-active-zones
5.添加接口到指定区域
firewall-cmd --zone=internal --add-interface=ens33
6.从指定区域删除接口
firewall-cmd --zone=internal --remove-interface=ens33
7.添加服务到指定区域
firewall-cmd --zone=internal --add-service=http
8.从指定区域删除服务
firewall-cmd --zone=internal --remove-service=http
9.添加端口号或端口范围到指定区域
firewall-cmd --zone=internal --add-port=80/tcp
firewall-cmd --zone=internal --add-port=8000-9000/tcp
10.删除指定区域中的端口
firewall-cmd --zone=internal --remove-port=80/tcp
11.查看指定区域的端口号
firewall-cmd --zone=internal --list-port
12.查看指定区域的规则信息
firewall-cmd --zone=internal --list-all
13.禁止别人ping本地主机
firewall-cmd --zone=internal --add-icmp-block=echo-request
firewalld高级配置
1、firewalld的临时策略与永久策略
--permanent 将策略保存到策略配置表,但是策略当时不生效,需要重新加载策略配置表才能生效。
--reload 重新加载策略配置表。
例:
firewall-cmd --permanent --zone=internal --add-service=http
2、firewalld的直接规则
例:将192.168.10.2的主机加入到黑名单,并且每1分钟写一次日志。
1.创建以IPv4为地址结构的黑名单。
firewall-cmd --direct --add-chain ipv4 raw blacklist
2.将192.168.10.2的地址加入到黑名单。
firewall-cmd --direct --add-rule ipv4 raw PREROUTING 0 -s 192.168.10.2 -j blacklist
语法格式说明:
--add-rule 添加规则条目
PREROUTING 0 目标地址转换之前
-s 192.168.10.2 指定源地址
-j blacklist 动作,加入黑名单
3.设置每分钟记录一次日志
firewall-cmd --direct --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklog"
语法格式说明:
blacklist 0 写入黑名单之前
-m limit --limit 1/min 特殊语法:表示时间周期,每1分钟
--log-prefix "blacklog" 指定日志名称
4.将加入黑名单的数据包丢弃
firewall-cmd --direct --add-rule ipv4 raw blacklist 1 -j DROP
3、富语言规则
firewalld针对iptables的语句结构做的加强语法,对于不会iptables的人群来说,也能直接上手配置。
语法:
source :源IP地址,可以是IPv4或者IPv6的地址
语法:source address=192.168.10.2
destination:目标IP地址。
语法:destination addres=192.168.20.0/24
service name :服务名
语法:service name=http
port :端口号,可以是连续的端口范围4000-5000
语法:port port=8000
protocol:协议,tcp,udp,icmp,可以单独定义或跟在port后面
语法:protocol=tcp
icmp-block:icmp的丢弃信息
语法:icmp-block name=icmp类型
masquerade:地址伪装
forward-port:转发端口,地址转换
语法:forward-port port=80 protocol=tcp to-port=80 to-addr=192.168.10.2
log: 日志
语法:log prefix=前缀文本(头部信息) level=日志级别 limit values=日志数量/时间周期(h,m,s,d) 2/m