Linux--Firewall

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

一般情況下,FirewallLinux 系統中爲默認安裝

在這裏插入圖片描述

如果 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

無法訪問
在這裏插入圖片描述

reloadcomplate-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.130192.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

在這裏插入圖片描述

測試端

ssh [email protected]

這時候,我們遠程連接的真實 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 主機

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章