日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

centos: firewalld 一

發布時間:2025/3/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos: firewalld 一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

原文地址:http://www.excelib.com/article/287/show Centos7中默認將原來的防火墻iptables升級為了firewalld,firewalld跟iptables比起來至少有兩大好處: 1、firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則后必須得全部刷新才可以生效; 2、firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。

iptables實際包含五張表

大部分iptables的資料都介紹說iptables包含四張表、五條鏈,不過實際上iptables還有第五張表——security表,但 是這張表需要和selinux結合使用,而selinux雖然已經發布了十多年了但是直到現在還有很多人對他的理解不夠透徹,甚至有很多人會將其關閉!

其實selinux的設計理念在安全上來說是非常優秀的,而且理解了其設計理念之后再去使用也沒那么復雜,只不過其內置的規則是非常復雜的,現在還回到iptables的五張表,他們分別是filter、nat、mangle、raw和 security。

filter表就是我們最常使用的過濾表;nat表主要用于數據包轉發,比如局域網的電腦如果想連接互聯網,那么就可以使用nat給轉發一 下;mangle表的規則可以對數據包進行修改,比如修改ttl值等;raw表主要是為了提高效率使用的,raw本身的含義是指“原生的”、“未經過加工 的”,符合raw表所對應規則的數據包將會跳過一些檢查,這樣就可以提高效率,當然,raw表的優先級也是最高的;security是跟selinux相 關的MAC模式的安全過濾。

firewalld && iptables firewalld自身并不具備防火墻的功能,而是和iptables一樣需要通過內核的netfilter來實現,也就是說firewalld和 iptables一樣,他們的作用都是用于維護規則,而真正使用規則干活的是內核的netfilter,只不過firewalld和iptables的結 構以及使用方法不一樣罷了。

firewalld結構 我們這里所說的結構并不是firewalld軟件的結構,而是配置文件的結構。 在具體介紹firewalld配置文件結構之前先來給大家介紹一下firewalld的配置模式,firewalld的配置模式設計的非常巧妙,而且這種設計思路也非常值得我們借鑒和學習。

firewalld配置模式 firewalld的配置文件以xml格式為主(主配置文件firewalld.conf例外),他們有兩個存儲位置

1、/etc/firewalld/

2、/usr/lib/firewalld/

使用時的規則是這樣的:當需要一個文件時firewalld會首先到第一個目錄中去查找,如果可以找到,那么就直接使用,否則會繼續到第二個目錄中查找。

firewalld的這種配置文件結構的主要作用是這樣的:在第二個目錄中存放的是firewalld給提供的通用配置文件,如果我們想修改配置, 那么可以copy一份到第一個目錄中,然后再進行修改。這么做有兩個好處:首先我們日后可以非常清晰地看到都有哪些文件是我們自己創建或者修改過的,其 次,如果想恢復firewalld給提供的默認配置,只需要將自己在第一個目錄中的配置文件刪除即可,非常簡單,而不需要像其他很多軟件那樣在修改之前還 得先備份一下,而且時間長了還有可能忘掉之前備份的是什么版本。

當然,這種配置模式也并不是firewalld的首創,在其他很多地方也都有用到,比如java中用于記錄日志的logback也是這種模式,他在 查找配置文件時會首先在根目錄下找logback-test.xml文件,如果可以找到就直接使用,如果找不到就會接著找logback.xml文件,如 果還找不到就會使用自己包里邊自帶的配置文件,這樣使用起來就非常方便了,比如我們可以把logback-test.xml和logback.xml兩個 文件都創建出來,在開發機上使用logback-test.xml文件,然后在往服務器部署的時候直接將其刪掉就可以了!當然還有很多產品也使用了這種配 置模式,spring的很多子框架也使用的是這種模式,比如spring MVC中的組件配置也是這樣,如果沒有配置的話就會使用默認的配置,當然,我們這里不是在講Spring MVC所以就不展開了,如果想了解更多細節大家可以參考學生編寫的《看透Spring MVC:源代碼分析與實踐》一書。

配置文件結構 firewalld的配置文件結構非常簡單,主要有兩個文件和三個目錄:

文件:firewalld.conf、lockdown-whitelist.xml

目錄:zones、services、icmptypes

另外,如果使用到direct,還會有一個direct.xml文件。我們要注意,在保存默認配置的目錄“/usr/lib/firewalld/”中只有我們這里所說的目錄,而沒有firewalld.conf、lockdown-whitelist.xml和direct.xml這三個文件,也就是說這三個文件只存在于“/etc/firewalld/”目錄中。

下面分別來給大家介紹一下這些文件和目錄的作用

firewalld.conf:firewalld的主配置文件,是鍵值對的格式,不過非常簡單,只有五個配置項DefaultZone:默認使用的zone,關于zone學生稍后給大家詳細介紹,默認值為public;MinimalMark: 標記的最小值,linux內核會對每個進入的數據包都進行標記,目的當然是為了對他們進行區分,比如學生在前面給大家補充iptables五張表相關的內 容時候介紹說符合raw表規則的數據包可以跳過一些檢查,那么是怎么跳過的呢?這里其實就是使用的標記,當然對數據包的標記還有很多作用。這里所設置的 MinimalMark值就是標記的最小值,默認值為100,一般情況下我們不需要對其進行修改,但是如果我們有特殊需要的時候就可以通過對其進行修改來 告訴linux所使用標記的最小值了,比如我們需要給符合某條件的數據包標記為123,這時候為了防止混淆就需要將MinimalMark設置為一個大于 123的值了;CleanupOnExit:這個配置項非常容易理解,他表示當退出firewalld后是否清除防火墻規則,默認值為yes;Lockdown: 這個選項跟D-BUS接口操作firewalld有關,firewalld可以讓別的程序通過D-BUS接口直接操作,當Lockdown設置為yes的 時候就可以通過lockdown-whitelist.xml文件來限制都有哪些程序可以對其進行操作,而當設置為no的時候就沒有限制了,默認值為 no;IPv6_rpfilter:其功能類似于rp_filter,只不過是針對ipv6版的,其作用是判斷所接受到的包是否是偽造的,檢查方式主要是通過路由表中的路由條目實現的,更多詳細的信息大家可以搜索uRPF相關的資料,這里的默認值為yes。lockdown-whitelist.xml:當Lockdown為yes的時候用來限制可以通過D-BUS接口操作firewalld的程序direct.xml:通過這個文件可以直接使用防火墻的過濾規則,這對于熟悉iptables的用戶來說會非常順手,另外也對從原來的iptables到firewalld的遷移提供了一條綠色通道zones:保存zone配置文件services:保存service配置文件icmptypes:保存和icmp類型相關的配置文件

zone firewalld默認提供了九個zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他們都保存在“/usr/lib /firewalld/zones/”目錄下。這些zone之間是什么關系?他們分別適用用哪些場景呢?

為了弄明白這些問題大家需要先明白zone的本質含義。學生在上一節給大家介紹防火墻時說過防火墻就相當于一個門衛,門衛對具體某個來訪的人判斷是否應該放行是依靠規則來判斷的,而我們這里的zone其實就是一套規則集,或者說是一套判斷的方案。

理解了這層含義firewalld就容易了,比如上面的九個zone其實就是九種方案,而且起決定作用的其實是每個xml文件所包含的內容,而不是 文件名,所以大家不需要對每種zone(每個文件名)的含義花費過多的精力,比如trusted這個zone會信任所有的數據包,也就是說所有數據包都會 放行,但是public這個zone只會放行其中所配置的服務,其他的一律不予放行,其實我們如果將這兩個文件中的內容互換一下他們的規則就換過來了,也 就是public這個zone會放行所有的數據包,下面我們來看一下這兩個文件的內容

public.xml

<?xml version="1.0" encoding="utf-8"?>

<zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <service name="dhcpv6-client"/> </zone>

trust.xml

<?xml version="1.0" encoding="utf-8"?>

<zone target="ACCEPT"> <short>Trusted</short> <description>All network connections are accepted.</description> </zone>

我們要特別注意trusted.xml中zone的target,就是因為他設置為了ACCEPT,所以才會放行所有的數據包,而 public.xml中的zone沒有target屬性,這樣就會默認拒絕通過,所以public這個zone(這種方案)只有其中配置過的服務才可以通 過。

service service是firewalld中另外一個非常重要的概念,不過其含義是非常簡單的。還是拿門衛的例子來給大家做解釋,在iptables 的時代我們給門衛下達規則時需要告訴他“所有到22號樓的人全部予以放行”、“所有到80號樓的人全部予以放行”等等,不過到了firewalld的時代 就不需要這樣了,而是可以直接下達像“到銷售部的全部予以放行”這樣的命令,然后門衛再一查發現銷售部在80號樓,那么所有到80號樓的人門衛就都會放行 了。我們這里的樓牌號和端口號相對應,部門名和服務名相對應,這樣大家應該就可以理解service的作用了。

從端口號改為服務名主要有兩個好處:首先是使用服務名配置的語義清晰,不容易出錯;其次在對某個服務的端口號進行修改的時候只需要修改相應的 service文件就可以了,而不需要再修改防火墻方案——zone。這其實跟DNS將ip地址和域名關聯了起來是一樣的道理。

service配置文件 service配置文件的命名規則是<服務名>.xml,比如ssh的配置文件是ssh.xml,http的配置文件是 http.xml等,他們默認保存在“/usr/lib/firewalld/services/”目錄下,常見的服務其中都可以找到,如果我們想修改某 個服務的配置,那么可以復制一份到“/etc/firewalld/services/”目錄下然后進行修改就可以了,要想恢復默認配置直接將我們自己的 配置文件刪除就可以了。我們來看一下ssh服務的ssh.xml文件

<?xml version="1.0" encoding="utf-8"?>

<service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/> </service> 可以看到這里配置了tcp的22號端口,所以將ssh服務配置到所使用的zone(默認public)中后tcp的22號端口就開放了。如果我們想將ssh的端口修改為222,那么只需要將ssh.xml復制一份到“/firewalld/services/”中,然后將端口號修改為222就可以了。當然直接修改“/usr/lib/firewalld/services/”中的配置文件也可以實現,但是強烈建議不要那么做,原因相信大家都明白。

明白原理之后使用起來就可以非常靈活了,比如我們將“/etc/firewalld/services/ssh.xml”文件復制一份到“/etc/firewalld/services/”中,然后將名字改為abc.xml,并且將abc這個服務配置到所使用的zone中,這時22端口就會開放。也就是說在zone中所配置的服務其實跟實際的服務并不存在直接聯系,而是和相應配置文件中配置的內容有關系。 配置方法

firewalld的配置方法主要有三種:firewall-config、firewall-cmd和直接編輯xml文件,其中 firewall-config是圖形化工具,firewall-cmd是命令行工具,而對于linux來說大家應該更習慣使用命令行方式的操作,所以 firewall-config我們就不給大家介紹了。

轉載于:https://my.oschina.net/u/2528742/blog/825274

總結

以上是生活随笔為你收集整理的centos: firewalld 一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。