1. 程式人生 > >Linux就該這麽學 20181005(第八章防火墻)

Linux就該這麽學 20181005(第八章防火墻)

.com ssh gre iptable 防火墻 network 拒絕 udp linux

參考鏈接https://www.linuxprobe.com/

vim /etc/sysconfig/network-scripts/ifcfg-ens32 網絡配置0
nmtui 網絡配置1
nm-connection-editor網絡配置2
iptables,firewall-cmd,firewall-config

考試時用REJECT

cat /etc/services |grep ssh

Firewalld

firewall-cmd    命令
firewall-config    圖形化

--permanent
firewall-cmd --reload 立即使用這個策略

firewall
-cmd --zone=public --query-service=ssh 查詢當前服務 端口轉發 888端口轉到22 firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.161.45 firewall-cmd --reload 富規則策略 優先級比一般規則高 firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address=
"192.168.161.0/24" service name="ssh" reject" 圖形界面 firewall-config iptables與firewall只是定義防火墻策略的防火墻管理工具 IPtable將策略交給內核岑冕的netfilter網絡過濾器來處理 firewall服務則把其交給 內核層面的nftables包過濾框架處理 Iptables 在進行路由器選擇處理數據包 PREROUTING 處理流入的數據包 INPUT 處理流出的數據包 OUTPUT 處理轉發的數據包 FORWARD 在進行路由選擇後處理數據包 POSTROUTING ACCEPT(允許流量通過)、REJECT(拒絕流量通過)、LOG(記錄日誌信息)、DROP(拒絕流量通過)。 DROP來說,它是直接將流量丟棄而且不響應;REJECT則會在拒絕流量後再回復一條“您的信息已經收到,但是被扔掉了”信息,從而讓流 量發送方清晰地看到數據被拒絕的響應信息。 如果設置為reject 會返回不可達響應 如果設置為drop 無法判斷流量是被拒還是主機不在線 四表五鏈
-P 設置默認策略 -F 清空規則鏈 -L 查看規則鏈 -A 在規則鏈的尾部加入新規則 -I 在規則鏈頭加入新規則 -D num 刪除某一條規則 -s 匹配來源IP/MASK 加感嘆號!表示除這個IP外 -d 匹配目標地址 -i 網卡名 匹配從這塊網卡流入的數據 -o 網卡名 匹配從這個網卡流出的數據 -p 匹配協議 tcp udp icmp --dport num 匹配目標端口號 --sport num 匹配來源端口號 #把INPUT規則鏈的默認策略設置為拒絕 iptables -P INPUT DROP #向input鏈中添加拒絕所有人訪問本機1234端口的策略 #iptables -I INPUT -p tcp --dport 1234 -j REJECT #iptables -I INPUT -p udp --dport 1234 -j REJECT #向INPUT規則鏈添加拒絕10.0.0.1主機訪問本機80端口的規則 #iptables -I INPUT -p tcp -s 10.0.0.1 --dport 80 -j REJECT #向INPUT規則鏈中添加拒絕所有主機訪問本機1000-1024端口策略 #iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 最後保存 service iptables save FIREWALLD擁有CLI命令行界面和基於GUI圖形用戶界面的兩種管理方式 firewalld中常用的取悅名稱和策略規則 trusted 允許所有數據包 home 拒絕流入的流量,除非流出的流量相關,如果流量與ssh,mdns相關,則允許流量 internal 等同home區域 work 拒絕流入的流量,除非與流出的流量數相關,如果流量與ssh相關,則允許流量 public 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、dhcpv6-client服務相關,則允許流量 external 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量 dmz 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量 block 拒絕流入的流量,除非與流出流量相關 drop 拒絕流入的流量,除非與流出流量相關 firewall-cmd是firewalld防火墻的管理工具,他參數是以‘長格式’來提供,TAB能補齊 firewall-cmd中使用的參數及作用 --get-default-zone 查詢默認的區域名稱 --set-default-zone=<區域名> 設置默認的區域,使其永久生效 --get-zones 顯示可用的區域 --get-services 顯示預先定義的服務 --get-active-zones 顯示當前正在使用的區域與網卡名稱 --add-source= 將源自此IP或子網流量包導向指定的區域 --remove-source 不再將源自此IP或子網的流量導向某個指定的區域 --add-interface=<網卡名> 將源自該網卡的所有流量導向某個指定區域 --change-interface=<網卡名> 將某個網卡與區域進行關聯 --list-all 顯示當前區域的網卡配置參數,資源,端口以及服務等信息 --list-all-zones 顯示所有區域的網卡配置參數,資源,端口以及服務等信息 --add-service=<服務名> 設置默認區域允許該服務的流量 --add-port=<端口號/協議> 設置默認區域允許該端口的流量 --remove-service=<服務名> 移除默認區域不再允許該服務 --remove-port=<端口號/協議> 移除默認區域不再允許該端口 --reload 讓‘永久生效’的規則立即生效,並覆蓋當前的配置規則 --panic-on 開啟應急狀態模式 --panic-off 關閉應急狀態模式 --permannent 表示永久生效 #查看firewall服務當前所使用的區域 #firewall-cmd --get-default-zone 查詢eno16777728網卡在firewalld服務中的區域: [root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728 public 把firewalld服務中eno16777728網卡的默認區域修改為external,並在系統重啟後生效。分別查看當前與永久模式下的區域名稱: [root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=eno16777728 success [root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728 public [root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=eno16777728 external 把firewalld服務的當前默認區域設置為public: [root@linuxprobe ~]# firewall-cmd --set-default-zone=public success [root@linuxprobe ~]# firewall-cmd --get-default-zone public 啟動/關閉firewalld防火墻服務的應急狀況模式,阻斷一切網絡連接(當遠程控制服務器時請慎用): [root@linuxprobe ~]# firewall-cmd --panic-on success [root@linuxprobe ~]# firewall-cmd --panic-off success 查詢public區域是否允許請求SSH和HTTPS協議的流量: [root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh yes [root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https no 把firewalld服務中請求HTTPS協議的流量設置為永久允許,並立即生效: [root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https success [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https success [root@linuxprobe ~]# firewall-cmd --reload success 把firewalld服務中請求HTTP協議的流量設置為永久拒絕,並立即生效: [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http success [root@linuxprobe ~]# firewall-cmd --reload success 把在firewalld服務中訪問8080和8081端口的流量策略設置為允許,但僅限當前生效: [root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp success [root@linuxprobe ~]# firewall-cmd --zone=public --list-ports 8080-8081/tcp 把原本訪問本機888端口的流量轉發到22端口,要且求當前和長期均有效: 流量轉發命令格式為firewall-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口 號>:toaddr=<目標IP地址> [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward- port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10 success [root@linuxprobe ~]# firewall-cmd --reload success 在客戶端使用ssh命令嘗試訪問192.168.10.10主機的888端口: [root@client A ~]# ssh -p 888 192.168.10.10 The authenticity of host [192.168.10.10]:888 ([192.168.10.10]:888) cant be established. ECDSA key fingerprint is b8:25:88:89:5c:05:b6:dd:ef:76:63:ff:1a:54:02:1a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added [192.168.10.10]:888 (ECDSA) to the list of known hosts. root@192.168.10.10s password:此處輸入遠程root管理員的密碼 Last login: Sun Jul 19 21:43:48 2017 from 192.168.10.10 firewalld中的富規則表示更細致、更詳細的防火墻策略配置,它可以針對系統服務、端口號、源地址和目標地址等諸多信息進行更有針對 性的策略配置。它的優先級在所有的防火墻策略中也是最高的。比如,我們可以在firewalld服務中配置一條富規則,使其拒絕 192.168.10.0/24網段的所有用戶訪問本機的ssh服務(22端口): [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" success [root@linuxprobe ~]# firewall-cmd --reload success 在客戶端使用ssh命令嘗試訪問192.168.10.10主機的ssh服務(22端口): [root@client A ~]# ssh 192.168.10.10 Connecting to 192.168.10.10:22... Could not connect to 192.168.10.10 (port 22): Connection failed. 8.3.2 圖形管理工具 在各種版本的Linux系統中,幾乎沒有能讓劉遄老師欣慰並推薦的圖形化工具,但是firewall-config做到了。它是firewalld防火墻配置管 理工具的GUI(圖形用戶界面)版本,幾乎可以實現所有以命令行來執行的操作。毫不誇張的說,即使讀者沒有紮實的Linux命令基礎,也 完全可以通過它來妥善配置RHEL 7中的防火墻策略。firewall-config的界面如圖8-2所示,其功能具體如下。 1:選擇運行時(Runtime)模式或永久(Permanent)模式的配置。 2:可選的策略集合區域列表。 3:常用的系統服務列表。 4:當前正在使用的區域。 5:管理當前被選中區域中的服務。 6:管理當前被選中區域中的端口。 7:開啟或關閉SNAT(源地址轉換協議)技術。 8:設置端口轉發策略。 9:控制請求icmp服務的流量。 10:管理防火墻的富規則。 11:管理網卡設備。 12:被選中區域的服務,若勾選了相應服務前面的復選框,則表示允許與之相關的流量。 13:firewall-config工具的運行狀態 SNAT 前面在講解firewall-config工具的功能時,曾經提到了SNAT(Source Network Address Translation,源網絡地址轉換)技術。SNAT是一 種為了解決IP地址匱乏而設計的技術,它可以使得多個內網中的用戶通過同一個外網IP接入Internet。該技術的應用非常廣泛,甚至可以 說我們每天都在使用,只不過沒有察覺到罷了。比如,當我們通過家中的網關設備(比如無線路由器)訪問本書配套站點 www.linuxprobe.com時,就用到了SNAT技術。 大家可以看一下在網絡中不使用SNAT技術(見圖8-6)和使用SNAT技術(見圖8-7)時的情況。在圖8-6所示的局域網中有多臺PC,如果網關 服務器沒有應用SNAT技術,則互聯網中的網站服務器在收到PC的請求數據包,並回送響應數據包時,將無法在網絡中找到這個私有網絡的 IP地址,所以PC也就收不到響應數據包了。在圖8-7所示的局域網中,由於網關服務器應用了SNAT技術,所以互聯網中的網站服務器會將響 應數據包發給網關服務器,再由後者轉發給局域網中的PC。 8.4 服務的訪問控制列表 TCP Wrappers是RHEL 7系統中默認啟用的一款流量監控程序,它能夠根據來訪主機的地址與本機的目標服務程序作出允許或拒絕的操作。 換句話說,Linux系統中其實有兩個層面的防火墻,第一種是前面講到的基於TCP/IP協議的流量過濾工具,而TCP Wrappers服務則是能允許 或禁止Linux系統提供服務的防火墻,從而在更高層面保護了Linux系統的安全運行。 TCP Wrappers服務的防火墻策略由兩個控制列表文件所控制,用戶可以編輯允許控制列表文件來放行對服務的請求流量,也可以編輯拒絕 控制列表文件來阻止對服務的請求流量。控制列表文件修改後會立即生效,系統將會先檢查允許控制列表文件(/etc/hosts.allow),如 果匹配到相應的允許策略則放行流量;如果沒有匹配,則去進一步匹配拒絕控制列表文件(/etc/hosts.deny),若找到匹配項則拒絕該流 量。如果這兩個文件全都沒有匹配到,則默認放行流量。 TCP Wrappers服務的控制列表文件配置起來並不復雜,常用的參數如表8-4所示。 表8-4 TCP Wrappers服務的控制列表文件中常用的參數 客戶端類型 示例 滿足示例的客戶端列表 單一主機 192.168.10.10 IP地址為192.168.10.10的主機 指定網段 192.168.10. IP段為192.168.10.0/24的主機 指定網段 192.168.10.0/255.255.255.0 IP段為192.168.10.0/24的主機 指定DNS後綴 .linuxprobe.com 所有DNS後綴為.linuxprobe.com的主機 指定主機名稱 www.linuxprobe.com 主機名稱為www.linuxprobe.com的主機 指定所有客戶端 ALL 所有主機全部包括在內 在配置TCP Wrappers服務時需要遵循兩個原則: 編寫拒絕策略規則時,填寫的是服務名稱,而非協議名稱; 建議先編寫拒絕策略規則,再編寫允許策略規則,以便直觀地看到相應的效果。 下面編寫拒絕策略規則文件,禁止訪問本機sshd服務的所有流量(無須/etc/hosts.deny文件中修改原有的註釋信息): vim /etc/hosts.allow vim /etc/hosts.deny sshd:* sshd:192.168.10. 1.iptables和firewalld均可使用再RHEL7 2.DROP是丟包,不響應;REJECT是拒絕請求,同時向發送方回送拒絕信息 3.iptables -P INPUT DROP 將INPUT鏈的規則默認策略設置為DROP 4.可以根據不同的工作場景來調用不同的firewall區域,實現大量防火墻策略規則的快速切換 5.將firewalld的默認區域設置為DMZ firewall-cmd --set-default-zone=dmz 6.讓firewalld的永久模式立即生效 firewall-cmd --reload 7.SNAT技術的目的是為了解決IP地址匱乏而設計,它可以使得多個內網中的用戶通過一個外網IP接入Internet 8.TCP Wrappers服務會一次匹配允許策略的配置文件,然後再依次匹配拒絕策略文件,如果沒有匹配到則放行流量

Linux就該這麽學 20181005(第八章防火墻)