Firewall
作爲內核的管理軟件 firewall-cmd
,通過使用這個軟件來間接管理 Linux
內核的開啓與關閉及其它功能,而 firewall-cmd
軟件本身支持 firewall-cmd
(命令)和 firewall-config
(圖形管理工具) 兩種管理模式來管理 kernel netfilter
Firewall
能將不同的網絡連接歸類到不同的信任級別,Zone提供了以下幾個級別:
drop
(丟棄)丟棄所有進入的包,而不給出任何響應
block
(拒絕)拒絕所有外部發起的連接,允許內部發起的連接
public
(公共)允許指定的進入連接,僅接受ssh或dhcpv6-client服務連接,爲firewalld的默認區域
external
(外部)對僞裝的進入連接,一般用於路由轉發,僅接受ssh服務連接
dmz
(非軍事區)僅接受ssh服務連接
work
(工作)允許受信任的計算機被限制的進入連接,僅接受ssh、ipp-client(網絡打印機)或dhcpv6-client服務連接
home
(家庭)允許受信任的計算機被限制的進入連接,僅接受ssh、mdns、ipp-client、samba-client或dhcpv6-lient服務連接
internal
(內部)允許受信任的計算機被限制的進入連接,僅接受ssh、mdns、ipp-client、samba-client或dhcpv6-lient服務連接
trusted
(信任)信任所有連接
實驗環境
需要三臺主機
第一臺主機(真實主機或虛擬主機)
單網卡
廣播域:
172.25.254.30/24
vim /etc/sysconfig/network-scripts/ens33
編輯網卡配置文件
DEVICE=ens33
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
IPADDR=172.25.254.30/24
NETMASK=255.255.255.0
systemctl restart network
測試網絡
ping 172.25.254.130
網絡可達
第二臺主機(虛擬主機)
雙網卡
第一塊網卡
廣播域:
172.25.254.130/24
第二塊網卡
廣播域:
192.168.0.130/24
添加第二塊虛擬網卡設備
vim /etc/sysconfig/network-scripts/eth0
編輯第一塊網卡eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
IPADDR=172.25.254.130
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scripts/eth0 /etc/sysconfig/network-scripts/eth1
vim /etc/sysconfig/network-scripts/eth1
編輯第二塊網卡eth1
DEVICE=eth1
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.0.130
NETMASK=255.255.255.0
systemctl restart network
測試網絡
ping 172.25.254.131
網絡可達
ping 192.168.0.230
網絡可達
第三臺主機(虛擬主機)
單網卡
廣播域:
192.168.0.230/24
vim /etc/sysconfig/network-scripts/eth0
編輯網卡配置文件
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.0.230
NETMASK=255.255.255.0
systemctl restart network
測試網絡
ping 192.168.0.130
網絡可達
安裝 Firewall
一般情況下,
Firewall
在Linux
系統中爲默認安裝如果
systemctl stats firewalld
查看,未找到Firewall
服務
yum install firewalld firewall-cmd -y
安裝 Firewall
安裝 Apache
yum install httpd -y
systemctl start httpd
開啓 Apache
systemctl enable httpd
開機自啓
實驗流程
systemctl stop firewalld
關閉防火牆
systemctl start firewalld
開啓防火牆
systemctl enable firewalld
開機自啓防火牆
systemctl disable firewalld
開機關閉自啓防火牆
firewall-cmd 命令
firewall-config
圖形化界面管理防火牆
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --get-default-zone
firewall-cmd --get-zones
firewall-cmd --zone=public --list-all
firewall-cmd --list-all
查看默認域所有配置
firewall-cmd --get-services
firewall-cmd -list-all-zones
firewall-cmd --set-default-zone=home
Apache 測試防火牆服務
主機
172.25.254.30
瀏覽器輸入
172.25.254.130
Apache 已開啓,無法訪問,防火牆 Apache 服務未開啓
firewall-cmd --add-source=172.25.254.30 --zone=trusted
主機
172.25.254.30
瀏覽器輸入
172.25.254.130
正常訪問
firewall-cmd --remove-source=172.25.254.30 --zone=trusted
主機
172.25.254.30
瀏覽器輸入
172.25.254.130
無法訪問
ifconfig eth0
172.25.254.130
ifconfig eth1
192.168.0.130
firewall-cmd --list-all
firewall-cmd --remove-interface=eth1 --zone=public
firewall-cmd --add-interface=eth1 --zone=trusted
主機
192.168.0.230
瀏覽器輸入
192.168.0.130
正常訪問
firewall-cmd --list-all --zone=trusted
firewall-cmd change-interface=eth1 --zone=public
主機
192.168.0.230
瀏覽器輸入
192.168.0.130
無法訪問
reload
和 complate-reload
服務端
firewall-cmd --list-all
查看默認域裏全部配置信息
firewall-cmd --permanent --zone=public --add-service=dns
添加 public 域 dns 服務
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --permanent --zone=public --remove-service=dns
移除 public 域 dns 服務
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --reload
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --reload
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --list-all
查看有 ssh 服務
firewall-cmd --permanent --remove-service=ssh
移除 ssh 服務
firewall-cmd --reload
firewall-cmd --list-all
ssh root172.25.254.230
防火牆 ssh 服務未關閉之前連接成功
irewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
當我們移除 ssh 服務並且使用 reload 後,已連接的 ssh 服務不會斷開,只會在下次生效
172.25.254.230 端 df 命令正常使用
firewall-cmd --complete-reload
172.25.254.230 端 命令行已被停止使用(命令行卡住,無法正常使用)
拒絕訪問
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 22 -j REJECT
防火牆規則:172.25.254.250主機 禁止通過 ssh 22 端口 遠程連接本機
firewall-cmd --reload
地址僞裝
雙網卡主機端
sysctl -a | grep net.ipv4.ip_forward
查看內核路由功能是否開啓
net.ipv4.ip_forward=1
內核路由功能已開啓
net.ipv4.ip_forward=0
未開啓內核路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -a | grep net.ipv4.ip_forward
再次查看
net.ipv4.ip_forward=1
內核路由功能已開啓
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
firewall-cmd --list-all
開啓防火牆地址僞裝功能
測試端
ifconfig
ping 192.168.0.130
ping 雙網卡主機
網絡可達
ping 172.25.254.30
網絡不可達
不在一個廣播域
編輯網卡配置文件
GATEWAY
172.25.254.130
或192.168.0.130
添加網關:雙網卡主機任意一個 ip 地址
systemctl restart network
ping 192.168.0.130
網絡可達
ping 172.25.254.30
網絡可達
雙網卡主機端
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.30
雙網卡主機設置地址轉換功能
任何 ip 遠程登錄本機 端口 22 號 sshd 服務都將被連接到 ip 172.25.254.30 主機
firewall-cmd --reload
測試端
這時候,我們遠程連接的真實 ip 是172.25.254.30 主機
需要認證密碼爲 172.25.254.30 主機的 root 密碼
當我們輸入正確密碼進入後,可以看到本機 ip 爲 172.25.254.30
w -i
查看到來源 ip 是172.25.254.130 主機而不是172.25.254.230 主機