目錄
第一部分: 基本信息
一. 火牆介紹
1.netfilter
2.iptables
3.iptables|firewalld
二. 火牆管理工具切換
在rhel8中默認使用的是firewalld
1. firewalld----->iptables
安裝 iptables
dnf install iptables-services -y
停止firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
啓動iptables
systemctl enable --now iptables
2. iptales -------> fiewalld
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
第二部分:iptables
一. iptables 的使用
/etc/sysconfig/iptables ##iptables 策略記錄文件
永久保存策略
iptables-save > /etc/sysconfig/iptables
service iptables save
二. 火牆默認策略
默認策略中的5條鏈
input ##輸入
output ##輸出
forward ##轉發
postrouting ##路由之後
prerouting ##路由之前
默認的3張表
filter ##經過本機內核的數據(input output forward)
nat ##不經過內核的數據(postrouting,prerouting,input,output)
mangle ##當filter和nat表不夠用時使用(input output forward postrouting,prerouting)
iptables命令
iptables
-t ##指定表名稱
-n ##不做解析
-L ##查看
-A ##添加策略
-p ##協議
--dport ##目的地端口
-s ##來源
-j ##動作
ACCEPT##允許
DROP##丟棄
REJECT##拒絕
SNAT##源地址轉換
DNAT##目的地地址轉換
-N ##新建鏈
-E ##更改鏈名稱
-X ##刪除鏈
-D ##刪除規則
-I ##插入規則
-R ##更改規則
-P ##更改默認規則
數據包狀態
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
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW ! -s 192.168.1.18 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -j REJECT
service iptables save
[root@localhost ~]# iptables -A INPUT -m state --state RELAtED,EStABLISHED -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW ! -s 192.168.1.18 -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -m state --state NEW -j REJECT
nat表中的dnat snat
內核路由需要開啓
查看內核路由狀態:
配置雙網卡:
ip1 : 192.168.1.10
ip2 : 172.25.254.20
兩臺不同網段的主機:
192.168.1.20
172.25.254.30
爲172.25.254.30 主機配置網關爲 172.25.254.20
在172.25.254.30中:
ping 192.168.1.20
ping 不通
設定火牆策略:
snat
iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.1.10
可以ping 通
dnat
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
在192.168.1.20 主機登陸 192.168.1.10
實際登錄的是172.25.254.30
第三部分:firewalld
一. firewalld的開啓
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
二. 關於firewalld的域
trusted ##接受所有的網絡連接
home ##用於家庭網絡,允許接受ssh mdns ipp-client samba-client dhcp-client
work ##工作網絡 ssh ipp-client dhcp-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 ##火牆模塊目錄
四. 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 --reload
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 ##更改網絡接口到指定域
五. firewalld的高級規則
firewall-cmd --direct --get-all-rules ##查看高級規則
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.0/24 -p tcp --dport 22 -j ACCEPT
六. firewalld中的NAT
SNAT
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
[root@localhost ~]# firewall-cmd --permanent --add-masquerade
success
[root@localhost ~]# firewall-cmd --reload
success
DNAT
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30
firewall-cmd --reload