firewalld知識點小結
1.防火牆的概述
1. RHEL/CentOS 7系統中集成了多款防火牆管理工具,其中firewalld是默認的防火牆配置管理工具它擁有基於CLI(命令行界面)和基於GUI(圖形用戶界面)的兩種管理方式。
2. firewalld支持動態更新,並加入了區域zone的概念
3. zone就是firewalld預先准備了幾套防火牆策略集合(策略模板),用戶可以根據生產場景的不同而選擇合適的策略集合,從而實現防火牆策略之間的快速切換
安全框架方向:
1. 硬件層 機架上鎖 服務器溫度監控 定期的硬件檢查 2. 網絡層 設置防火牆僅能公司的IP 地址能夠連接服務器的22端口 公有雲的話 安全組設置 3. 系統層 服務器沒有公網IP 修改ssh端口號,禁止root用戶登錄 使用密匙登錄 4. 服務層 定期更新服務 mysql redis 防止漏洞注入 5. web層 漏洞注入,sql注入,XSS跨站,ddos攻擊 可以采用第三方軟件 waf防火牆 全棧的https協議(ssl證書,保證網站的傳輸安全)
SLA :服務等級協議
99.9 8.76小時
99.99 52.6分鍾
99.999 5.26分鍾
宕機的時間 網絡安全產品推薦: 安全狗 知道創宇 牛盾雲
補充知識點:
1. Firewalld規則配置,從外訪問服務器內部如果沒有添加規則默認是阻止,從服務器內部訪問服務器外部默認是允許
2. 一個網卡僅能綁定一個zone 但一個zone可以綁定多個網卡
臨時關閉:
關閉: /etc/init.d/iptables stop
查看狀態: /etc/init.d/iptables status
開啟:/etc/init.d/iptables start
永久關閉:
關閉:chkconfig iptables off
開啟:chkconfig iptables on
查看狀態:chkconfig iptables
禁用舊版的iptable:
systemctl mask iptables #
systemctl mask ipt6ables
2. 防火牆使用區域的介紹zone
划分出不同的區域,制定出不同的區域間的訪問控制策略來控制不同程序區域間傳送的數據流
區域 默認規則策略 trusted 允許所有的數據包流入與流出 home 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、mdns、ipp-client、amba-client與dhcpv6-client服務相關,則允許流量 internal 等同於home區域 work 拒絕流入的流量,除非與流出的流量數相關;而如果流量與ssh、ipp-client與dhcpv6-client服務相關,則允許流量 public 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、dhcpv6-client服務相關,則允許流量 external 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量 dmz 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量 block 拒絕流入的流量,除非與流出的流量相關 drop 拒絕流入的流量,除非與流出的流量相關
3.防火牆的日常管理
1. 區域配置策略
1. firewall有二種模式
runtime臨時模式:修改規則馬上生效,但如果重啟服務則馬上失效,測試建議
permanent持久模式:修改規則后需要reload重載服務才會生效,生產建議
2.參數說明:
zone區域相關指令 --get-default-zone 查詢默認的區域名稱 --set-default-zone=<區域名稱> 設置默認的區域,使其永久生效 --get-active-zones 顯示當前正在使用的區域與網卡名稱 --get-zones 顯示總共可用的區域 --new-zone=<zone> 新增區域 services服務相關指令 --get-services 顯示預先定義的服務 --add-service=<服務名> 設置默認區域允許該服務的流量 --remove-service=<服務名> 設置默認區域不再允許該服務的流量 Port端口相關指令 --add-port=<端口號/協議> 設置默認區域允許該端口的流量 --remove-port=<端口號/協議> 設置默認區域不再允許該端口的流量 Interface網卡相關指令 --add-interface=<網卡名稱> 將源自該網卡的所有流量都導向某個指定區域 --change-interface=<網卡名稱> 將某個網卡與區域進行關聯 其他相關指令 --list-all 顯示當前區域的網卡配置參數、資源、端口以及服務等信息 --reload 讓“永久生效”的配置規則立即生效,並覆蓋當前的配置規則
3.應用場景
1.使用firewalld中各個區域規則結合,當前默認區域拒絕所有的流量,但如果來源IP是10.0.0.0/24網段則允許
#臨時移除策略 firewall-cmd --remove-service=ssh,dhcpv6-client #添加來源是10.0.0.0/24網段,將其加入白名單 firewall-cmd --add-source=10.0.0.0/24 --zone=trusted #檢查當前活動的區域 firewalll-cmd --get-activ-zone
2. 查詢public區域是否允許請求SSH HTTPS協議的流量
firewall-cmd --list-all
2. 端口訪問策略
1.使用firewalld允許客戶請求的服務器的80/tcp端口,僅臨時生效,如添加--permanent重啟后則永久生效
firewall-cmd --add-port=80/tcp #放行多個端口 firewall-cmd --add-port={80/tcp,8080/tcp}
2.移除臨時添加的端口規則
firewall-cmd --remove-port={80/tcp,8080/tcp}
3.服務訪問策略
1.使用firewalld允許客戶請求服務器的http https協議,僅臨時生效,如添加--permanent重啟后則永久生效
firewall-cmd --add-service={http,https}
2.移除臨時添加的服務規則
firewall-cmd --remove-service={http,https}
3. 如何自定義端口,轉為對應的服務
#1. 在/usr/lib/firewalld/services/目錄下添加自定義的服務 zabbix.xml #2. 防火牆增加規則 firewall-cmd --add-service=zabbix-agent
4.端口轉發策略
端口轉發是指傳統的目標地址映射,實現外網訪問內網資源,流量轉發命令

基本格式:
firewall-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口號>:toaddr=<目標IP地址>
需要開啟地址轉發masquerade
firewall-cmd --add-masquerade --permanent
應用:如果需要將本地的10.0.0.61:5555端口轉發至后端172.16.1.9:22端口
firewall-cmd --add-forward-port=port=5555:proto="tcp":toport="22":toaddr="172.16.1.9"
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
5.富規則策略
firewalld中的富規則表示更細致、更詳細的防火牆策略配置,它可以針對系統服務、端口號、源地址和目標地址等
基本模板:
rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] destination address="address[/mask]" invert="True" service name="service name" port port="port value" protocol="tcp|udp" protocol value="protocol value" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"] accept | reject [type="reject type"] | drop
應用:
1. 比如允許10.0.0.1主機能夠訪問http服務,允許172.16.1.0/24能訪問10050端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" service name="http" accept' firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" port port="10050" protocol ="tcp" accept'
2. 默認public區域對外開放所有人能通過ssh服務連接,但拒絕172.16.1.0/24網段通過ssh連接服務器
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" service name="ssh" drop'
3. 使用firewalld,允許所有人能訪問http,https服務,但只有10.0.0.1主機可以訪問ssh服務
firewall-cmd --add-service={http,https}
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 service name="ssh" accept'
4.當用戶來源IP地址是10.0.0.1主機,則將用戶請求的5555端口轉發至后端172.16.1.9的22端口
firewall-cmd --add-masquerade firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" forward-port port="5555" protocol="tcp" to-port="22" to-addr="172.16.1.9"'
ps: 富規則規則是按照先后順序進行匹配的
6.firewalld 的備份
我們所有針對public區域編寫的永久添加的規則都會寫入備份文件(--permanent)
/etc/firewalld/zones/public.xml
4.防火牆開啟內部共享上網
在指定的帶有公網的防火牆上實行NAT地址轉換,以達到內部主機上網

實現步驟:
1. firewalld防火牆開啟masquerade, 實現地址轉換
firewall-cmd --add-masquerade --permanent
firewall-cdm --reload
2.客戶端將網關指向firewalld服務器,將所有網絡請求交給firewalld
#關閉eth0網卡
ifdown eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1 GATEWAY=172.16.1.61 #防火牆的內網地址
3.客戶端配置DNS
vim /etc/resolv.conf
nameserver 223.5.5.5 114.114.114.114
4.重啟網絡服務
systemctl restart network
#開啟NetworkManage
nmcli connection reload
nmcli connection down eth1 && nmcli connection up eth1
5. 測試是否通暢
ping baidu.com #PING baidu.com (123.125.115.110) 56(84) bytes of data. #64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=127 time=9.08 ms
5.補充:偷道形式圖形化操作
1.服務端安裝x11圖形界面工具 [root@kvm-node1 ~]# yum install -y xorg-x11-font-utils xorg-x11-server-utils xorg-x11-utils xorg-x11-xauth xorg-x11-xinit 2.服務端開啟SSH隧道轉發X11 [root@kvm-node1 ~]# vim /etc/ssh/sshd_config X11Forwarding yes [root@kvm-node1 ~]# systemctl restart sshd 3.Windows客戶端使用Xshell連接主機, 修改屬性-->ssh->隧道-->轉發x11-->勾選X DISPLAY-->重連服務器 windows安裝xming-->打開 firewall-config 4.安裝中文字符,解決界面亂碼問題 [root@kevin ~]# yum install -y dejavu-lgc-sans-fonts [root@kevin ~]# yum groupinstall -y "Fonts" 臨時調整字體為中文 [root@kvm-node1 ~]# export LANG=zh_CN.UTF-8 ps:需要安裝xMing 在windows
ps:
ssh openvpn 可以通過外網來訪問內部主機
firewalld 路由器可以解決內部主機上網的問題
