●RHEL7已經默認使用Firewalld做爲防火牆,其餘使用方式已經變化。
安全
●基於iptables的防火牆被默認不啓動,但仍然能夠繼續使用服務器
●RHEL7中的共存防火牆有:firewalld、iptables、ebtables等網絡
●因爲幾種daemon是衝突的,因此建議禁用其餘 幾種服務ssh
●firewalld提供了支持網絡/防火牆區域(zone)定義網絡鏈接以及接口安全等級的防火牆管理工具,擁有運行時配置和永久配置選項tcp
●區域:網絡區域定義了網絡鏈接的可信等級ide
●一張網卡同時只能綁到一個zone工具
●預約義的服務:服務的端口和/或協議入口的組合
spa
●斷口和協議:定義了tcp或udp端口,端口能夠是一個端口或者端口範圍命令行
●ICMP阻塞:能夠選擇Internet控制報文協議的報文。這些報文能夠是信息請求亦但是對信息請求或錯誤條件建立的響應日誌
●假裝:私有網絡地址能夠被映射到公開的ip地址
●端口轉發:端口能夠映射到另外一個端口以及/或者其餘主機
█區域(zone)按照從不信任到信任的排序
●丟棄區域(Drop Zone):任何進入的數據包將被丟棄,即不存在響應
●阻塞區域(Block Zone):會拒絕進入的網絡鏈接,返回icmp-host-prohibited,只有服務器已經創建的鏈接會被經過即只容許由該系統初始化的網絡鏈接
●公共區域(Public Zone):只接受那些被選中的鏈接,默認只容許ssh和dhcpv6-client。這個zone是缺省zone
●外部區域(External Zone):至關於路由器的啓用假裝(masquerading)選項,只有指定的鏈接會被接受,即ssh,而其餘的連接將會被丟棄或者不被接受
●隔離區域(DMZ Zone):若是想要只容許給部分服務能被外部訪問,能夠在DMZ區域中定義。他也擁有隻經過被選中鏈接的特性,即ssh
●工做區域(Work Zone):只能定義內部網絡
●家庭區域(Hone Zone):專門用於家庭環境,他一樣只容許被選中的鏈接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client
●內部區域(Internal Zone):和工做區域相似,只用經過被選中的鏈接,和home區域同樣
●信任區域(Trusted Zone):容許全部網絡通訊經過
█Firewalld的原則
●若是一個客戶端數據包的源ip地址匹配zone的sources,那麼該zone的規則就適用這個客戶端(一個源只能屬於一個zone,不能同時屬於多個zone)
●若是一個客戶端數據包進入服務器的某一個接口匹配zone的interfaces,那麼該zone的規則就適用這個客戶端
●若是上述兩個原則都不知足,那麼缺省的zone將被應用
█通常應用
●獲取firewalld狀態:firewall-cmd --state
●在不改變狀態的條件下從新加載防火牆:firewall-cmd --reload
●得到支持的區域列表:firewall-cmd --get-zones
●獲取全部支持的服務:firewall-cmd --get-services
想要列出默認有效的服務,也能夠進入/usr/lib/firewalld/services/目錄得到
●獲取全部支持的ICMP類型:firewall-cmd --get-icmptypes
●列出所有啓用的區域的特性(即查詢當前防火牆策略):firewall-cmd --list-all-zones
●輸出區域所有啓用的特性:firewall-cmd [--zone=區域名稱] --list-all #若是不指定區域,則顯示默認區域的信息
●查看默認區域:firewall-cmd --get-default-zone #public區域是默認區域,在/etc/firewalld/firewalld.conf文件中定義DefaultZone=public便可
●設置默認區域:firewall-cmd --set-default-zone=區域名
●獲取活動的區域:firewall-cmd --get-active-zones
●根據接口獲取區域:firewall-cmd --get-zone-of-interface=接口名
●將接口(網卡)增長到區域:firewall-cmd [--zone=區域名] --add-interface=接口名
●修改接口所屬區域:firewall-cmd [--zone=區域名] --change-interface=接口名
●從區域中刪除一個接口:firewall-cmd [--zone=區域名] --remove-interface=接口名
●查詢區域中是否包含某接口:firewall-cmd [--zone=區域名] --query-interface=接口名
●列舉區域中啓用的服務:firewall-cmd [--zone=區域名] --list-services
●啓用應急模式阻斷全部網絡鏈接:firewall-cmd --panic-on
●禁用應急模式:firewall-cmd --panic-off
●查詢應急模式:firewall-cmd --query-panic
█處理運行時區域
●啓用區域中的一種服務:firewall-cmd [--zone=區域] --add-service=服務 [--timeout=秒數]
●禁用區域中的某種服務:firewall-cmd [--zone=區域] --remove-service=服務
●查詢區域中是否啓用了特定服務:firewall-cmd [--zone=區域] --query-service=服務
●啓用區域端口和協議組合:firewall-cmd [--zone=區域] --add-port=portid[-portid] / protocol [--timeout=seconds]
●禁用端口和協議組合:firewall-cmd [--zone=區域] --remove-port=portid[-portid] / protocol
●查詢區域中是否啓用了端口和協議組合:firewall-cmd [--zone=區域] --query-port=portid[-portid] / protocol
●啓用區域中的IP假裝功能:firewall-cmd [--zone=區域] --add-masquerade
●禁用區域中的IP假裝功能:firewall-cmd [--zone=區域] --remove-masquerade
●查詢區域的假裝狀態:firewall-cmd [--zone=區域] --query-masquerade
★注:啓用假裝功能的主機同時也須要開啓轉發功能:echo 1 > /proc/sys/net/ipv4/ip_forward 或 在/etc/sysctl.conf文件中添加net.ipv4.ip_forward = 1
●啓用區域的ICMP阻塞功能:firewall-cmd [--zone=區域] --add-icmp-block=icmp類型
●禁用區域的ICMP阻塞功能:firewall-cmd [--zone=區域] --remove-icmp-block=icmp類型
●查詢區域的ICMP阻塞功能:firewall-cmd [--zone=區域] --query-icmp-block=icmp類型
●在區域中啓用端口轉發或映射:firewall-cmd [--zone=區域] --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address [/mask]]
●禁用區域的端口轉發或端口的映射:firewall-cmd [--zone=區域] --remove-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
●查詢區域的端口轉發或端口映射:firewall-cmd [--zone=區域] --query-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
█處理永久區域
●獲取永久選項所支持的服務:firewall-cmd --permanent --get-services
●獲取永久選項所支持的ICMP類型列表:firewall-cmd --permanent --get-icmptypes
●獲取支持的永久區域:firewall-cmd --permanent --get-zones
●配置防火牆在public區域打開http協議,並保存,以至重啓生效:firewall-cmd --permanent --zone=public --add-service=http
●查看永久模式下public區域是否打開http服務:firewall-cmd --permanent --zone=public --query-service=http
●防火牆開放8080端口在public區域:firewall-cmd --permanent --zone=public --add-port=8080/tcp
●命令行配置富規則:
①查看富規則:firewall-cmd --list-rich-rules
②建立富規則:
firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=ip/掩碼 service name=ftp log prefix=「ftp」level=info accept’--permanent
firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=ip/掩碼 port port=portid protocol=protocol log prefix=「portid」level=info accept’--permanent
firewall-cmd --add-rich-rule rule family=「ipv4」source address=「ip/掩碼」forward-port port=「portid」protocol=「protocol」to-port=「portid」to-addr=「ip」
③富規則中使用假裝功能能夠更精確詳細的限制:firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=「ip/掩碼」masquerade
④僅容許部分ip訪問本機服務配置:firewall-cmd --permanent --zone=public --add-rich-rule=「rule family=「ipv4」source address=「ip/掩碼」service name=「http」accept」
●刪除rich規則
firewall-cmd --permanent --zone=public --remove-rich-rule=‘rule family=ipv4 source address=ip/掩碼 service name=服務名 reject’
●僅容許部分ip訪問本機端口配置:firewall-cmd --permanent --zone=public --add-rich-rule=「rule family=「ipv4」source address=「ip/掩碼」port protocol=「protocol」port=「portid」accept」
●建立rich規則,能夠指定日誌的前綴和輸出級別:firewall-cmd --permanent --zone=public --add-rich-rule=「rule family=「ipv4」source address=「ip/掩碼」port port=portid protocol=「protocol」log prefix=proxy level=warning accept」
●端口轉發:firewall-cmd --permanent -add-rich-rule ‘rule family=ipv4 source address=ip/掩碼 forward-port port=輸入的端口 protocol=協議 to-port=訪問到的端口’
●某網段內的客戶端不能訪問主機的某服務:firewall-cmd --permanent --add-rich-rule ‘rule family=「ipv4」source address=ip/掩碼 service name=服務名 drop’
●經過配置/etc/firewall/zones/public.xml 文件,進行對防火牆的配置修改
█總結
●圖形化配置工具
firewall daemon主要的配置工具是firewall-config。它支持防火牆的全部特性,管理員也能夠用它來改變系統或用戶策略
●命令行配置工具
firewall-cmd是命令行下提供大部分圖形工具配置特性的工具