基於network filter的虛擬機訪問控制

什麼是nwfilter

在公有云的環境中,經常需要對雲主機的網絡環境進行控制,實現對虛擬機網絡流量的接收或者拒收。而nwfilter就可以實現這樣的功能,目前已經被廣泛地嵌套在KVM中,可以精準的實現以上的功能。

nwfilter目的是讓管理員在host上控制vm的每塊網卡。同一個nwfilter規則可以被不同vm重複使用,也可以爲每個VM創建不同的filter規則。並且進入或者流出VM的流量無法避開nwfilter機制,因此這種限制就成爲了強制性的,有點像linux中的iptables的功能。

nwfilter文件路徑

默認存放在/etc/libvirt/nwfilter的文件夾中,一個xml文件代表一個設定的nwfilter規則,當你想指定一條nwfilter規則的時候,在這個目錄中新增一個xml文件即可。

如何應用nwfilter

Nwfilter是需要配置在虛擬機的xml文件中生效的,通過過虛擬機的xml文件增加一個<filterref filter='name-of-nwfilter'/>的參數,就可以實現對應的效果。

比如對“bridge1”這個虛擬機網橋,新增一個“drop80”的nwfilter的規則,這個規則的作用是將虛擬機的80端口進行封阻。那麼,我們就可以這麼做:
編寫一個drop80.xml的nw文件

<filter name='drop80' chain='root'>

<uuid>a1dadb35-3a7d-417d-8ca1-17d63036179b</uuid>

<rule action='drop' direction='out' priority='500'>

<tcp dstportstart='80' dstportend='80'/>

</rule>

</filter>
編輯完成之後聲明這個nw規則生效

virsh nwfilter-define limit
查看目前已經定義的nw規則

virsh nwfilter-list
將其應用到應用到虛擬機中

編輯某臺虛擬機的XML文件,在network部分中,加入以下的參數,就可以生效了。

[...]

<interface type='bridge'>

<source bridge='bridge1'/>

<filterref filter='drop80'/>

</interface>

[...]

以上就是關於nwfilter的基礎用法,下面我再舉個例子,希望可以幫助你更好地理解nwfilter的用法;
連接數限制

假設一個虛擬機只允許一個IP在同一之間發起一個ping鏈接。防止某個IP對虛擬機惡意***。

<rule action='drop' direction='out' priority='400'>

<icmp connlimit-above='1'/>

</rule>

<rule action='accept' direction='out' priority='500'>

<icmp/>

</rule>

<rule action='drop' direction='inout' priority='1000'>

<all/>

</rule>

好了,關於nwfilter的用法已經介紹完了,希望對你有幫助,具體的學習明細,你可以參考nwfilter的官方用法解析:

https://libvirt.org/formatnwfilter.html#nwfelemsRulesAdvorg/formatnwfilter.html#nwfelemsRulesAdv
基於network filter的虛擬機訪問控制

睿江雲官網鏈接:https://www.eflycloud.com/home?from=RJ0027

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