Linux的火墙策略优化
实验准备
- 需要3台机器用作实验
- 1台IP处于172.25.254网段
- 1台IP处于192.168.4网段
- 1台具有双网卡的设备同时拥有2个网段的IP
基础讲解
Linux系统中可以通过两个软件对iptables
进行控制,分别为firewalld
和iptables
.但同时只能用其中一个进行管理.RHEL7之前系统中没有firewalld
,RHEL8后系统中默认使用firewalld
.
对两者后进行比较的话,iptables
偏向与表格修改,而firewalld
的操作更类似Windows.
切换管理软件
systemctl disable --now firewalld
systemcel mask firewalld
dnf search iptables-services
dnf install iptables-services -y
systemctl enable --now iptables.service
##iptables的火墙状态查看命令
iptables -nL
其中target表示动作
port表示协议
source表示来源
destination表示目的地
Firewalld的操作
关于火墙的域
名称 | 含义 |
---|---|
trusted | 接受所有的网络连接 |
home | 用于家庭网络,默认允许ssh,mdns,dhcp-client,ipp-client |
work | 用于工作网络,默认允许ssh和ipp-client |
public | 用于公共网络,默认允许ssh和dhcp-client |
dmz | 军用网络,仅允许ssh |
block | 拒绝所有 |
drop | 丢弃所有数据并不进行任何回复 |
internal | 内部网络,默认允许ssh mdns ipp-client samba-client dhcp-client |
external | ipv4网络地址伪装转发,默认允许sshd |
##关于firewalld的配置
/etc/firewalld ##火墙配置文件
/lib/firewalld ##火墙模块目录
##对于域的操作
##查看所有的域
firewall-cmd --list-all-zones
##查看活跃的域
firewall-cmd --get-default-active-zones
##修改默认域为全信任
firewall-cmd --set-default-zone=trusted
firewall-cmd --state
running ##运行状态
not running ##非运行状态
firewall-cmd --list-all ##显示默认状态的火墙策略
firewall-cmd --list-all --zone=trusted ##显示域为trusted的火墙策略
firewall-cmd --get-default-zone ##显示默认的域
firewall-cmd --set-default-zone=trusted ##设置默认的域为trusted
firewall-cmd --add-service=http ##临时添加http到策略,不需要重启即刻生效
##缺点是重启服务后策略消失
firewall-cmd --permanent --add-service=http ##永久添加策略
firewall-cmd --permanent --add-port=8080/tcp ##永久添加8080/tcp端口到火墙策略中
/lib/firewalld/services
中采用xml格式存储了火墙中关于服务的策略,直接修改文件也能起到修改策略的效果.
IP的规则设定
##不允许172.25.254网段连接的设置方法
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block
##查看block域,设置成功
[root@Node1 ~]# firewall-cmd --list-all --zone=block
block (active)
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources: 172.25.254.0/24
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
##删除IP限制策略的方法
[root@Node1 ~]# firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block
success
[root@Node1 ~]# firewall-cmd --reload
success
[root@Node1 ~]# firewall-cmd --list-all --zone=block
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
分别对不同网卡设置不同规则
在同一台主机上拥有多块网卡时,可以分别对单个网卡设备设置对应的域.举个实际应用的例子就是两块网卡分别对应内部网络和外部网络,内部网络使用trusted
域,而外部网络使用public
域.
##删除网卡所在域策略
firewall-cmd --permanent --remove-inteface=网卡设备 --zone=目前所在域
##添加网卡到目标域策略
firewall-cmd --permanent --add-inteface=网卡设备 --zone=目标域
##修改网卡所在域策略
firewall-cmd --permanent --change-inteface=网卡设备 --zone=目标域
##删除和添加网卡所在域的方法
[root@Node1 ~]# firewall-cmd --list-all
public (active)
target: default
icm