netfilter:内核上有个安全插件netfilter(访问控制列表),这个列表里有许多详细的规则,当对这个规则允许或拒绝时,可以控制其他主机是否能访问,极大的提高了安全性。
iptables:管理netfilter的工具,通过iptables往netfilter表格里面写网络安全策略
iptables / firewalld:对iptables进行管理,用iptables / firewalld手段来写网络安全策略。
用iptables / firewalld这两个上层的管理工具去管理iptables,往iptables写网络安全策略时,iptables会把策略通过netfilter存在控制表格里。
在rhel8中默认使用的是firewalld
1)dnf install iptables-services -y
2)systemctl disable --now firewalld
3)systemctl mask firewalld
4)systemctl enable --now iptables
1)dnf install firewalld -y
2)systemctl disable --now iptables
3)systemctl mask iptables
4)systemctl enable --now firewalld
1)systemctl disable --now iptables
2)systemctl mask iptables
3)systemctl unmask firewalld
4)systemctl enable --now firewalld
trusted | 接受所有的网络连接 |
---|---|
home | 用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client |
work | 工作网络 ssh ipp-client dhcp-client |
public | 公共网络 ssh dhcp-client |
dmz | 军级网络 ssh |
internal | 内部网络 ssh mdns ipp-client samba-client dhcp-client |
external | ipv4网络地址伪装转发 ssh |
/etc/firewalld | 火墙配置目录 |
---|---|
/lib/firewalld | 火墙模块目录 |
/etc/firewalld
[火墙配置目录]
/lib/firewalld
[火墙模块目录]
firewall-cmd --state | 查看火墙状态 |
---|---|
firewall-cmd --get-active-zones | 查看当前火墙中生效的域 |
firewall-cmd --get-default-zone | 查看默认域 |
firewall-cmd --list-all | 查看默认域中的火墙策略 |
firewall-cmd --list-all --zone=work | 查看指定域的火墙策略 |
firewall-cmd --set-default-zone=trusted | 设定默认域 |
firewall-cmd --get-services | 查看所有可以设定的服务 |
firewall-cmd --permanent --remove-service=cockpit | 移除服务 |
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block | 指定数据来源访问指定域 |
firewall-cmd --reload | 重新加载 |
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block | 删除自定域中的数据来源 |
firewall-cmd --permanent --remove-interface=ens224 --zone=public | 删除指定域的网络接口 |
firewall-cmd --permanent --add-interface=ens224 --zone=block | 添加指定域的网络接口 |
firewall-cmd --permanent --change-interface=ens224 --zone=public | 更改网络接口到指定域 |
(默认情况下,两个网卡域都为public)
firewall-cmd --permanent --remove-interface=ens1s0 --zone=public | 删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens1s0 --zone=block | 添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens1s0 --zone=public | 更改网络接口到指定域
firewall-cmd --direct --get-all-rules | 查看高级规则 |
---|
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.5 -p tcp --dport 22 -j REJECT
(除了ip172.25.254.5可以进入22端口,其他都拒绝)
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
用5登陆105,显示的目的地地址是105
我们可以使用以下命令来对目的地地址进行转换
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=1.1.1.205
firewall-cmd --reload
此时用5登陆105主机,会发现地址改变为1.1.1.205,这就是目的地地址转换
实验前确保被转换的1.1.1.205主机可以与172.25.254.105可以通信,这个在前面的网络配置里有写到!!
input | 输入 |
---|---|
output | 输出 |
forward | 转发 |
postrouting | 路由之后 |
prerouting | 路由之前 |
filter | 经过本机内核的数据(input output forward) |
---|---|
nat | 不经过内核的数据(postrouting,prerouting,input,output) |
mangle | 当filter和nat表不够用时使用(input output forward postrouting,prerouting,) |
iptables -t | 指定表名称 |
---|---|
iptables -n | 不做解析 |
iptables -L | 查看 |
iptables -A | 添加策略 |
iptables -p | 协议 |
iptables --dport | 目的地端口 |
iptables -s | 来源 |
iptables -j | 动作 |
iptables -j ACCEPT | 允许 |
iptables -j DROP | 丢弃 |
iptables -j REJECT | 拒绝 |
iptables -j SNAT | 源地址转换 |
iptables -j DNAT | 目的地地址转换 |
iptables -N | 新建链 |
iptables -E | 更改链名称 |
iptables -X | 删除链 |
iptables -D | 删除规则 |
iptables -I | 插入规则 |
iptables -R | 更改规则 |
iptables -P | 更改默认规则 |
iptables -n | 不做解析
iptables -L | 查看
iptables -A | 添加策略
iptables -p | 协议
iptables --dport | 目的地端口
RELATED | 建立过连接的 |
---|---|
ESTABLISHED | 正在连接的 |
NEW | 新的 |
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
( 允许从回路接口进入)
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
( 允许所有主机进入80端口[httpd服务])
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
(允许所有主机进入53端口[dns服务])
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
(允许所有主机都可通过22端口[ssh服务]进入此主机)
iptables -A INPUT -m state --state NEW ! -s 192.168.0.66 -p tcp --dport 22 -j ACCEPT
(允许除192.168.0.66ip以外的主机通过22端口进入此主机)
测试
主机为192.168.0.66不能通过22端口进不去此主机
但23主机可以通过22端口进入
在进行上面的添加规则,链接等一系列操作时,若不永久保存,iptable -F 后,就会被完全刷新掉。
火墙策略的记录文件
/etc/sysconfig/iptables
[iptables 策略记录文件]
iptales-save > /etc/sysconfig/iptables
(永久保存)iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.205
做了源地址转换后,1网段的主机也可以和192网段的主机通信
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 1.1.1.23
做了目的地地址转换后,登陆192.168.0.205主机,ip地址显示的会是1.1.1.23ip