Ubuntu

用於阻止特定字元串的 ip 範圍的 iptables 規則(有時有效)

  • September 16, 2015

經過兩週的搜尋和閱讀,我最終得到了這條 iptable 規則,該規則將 youtube(作為字元串)阻止到我辦公室網路中的 IP 範圍。

iptables -A FORWARD -t filter -m iprange --src-range 10.217.76.60-10.217.76.70 -m string --algo bm --string "youtube.com" -j DROP #block

如您所見,從 0.60 到 0.70(10 台機器)的電腦無法瀏覽 youtube,而 0.75 則可以。該規則僅適用於幾分鐘,並且適用於某些客戶端。2 到 3 分鐘後,部分客戶可以正常瀏覽 youtube。如果我關閉這些客戶端的瀏覽器,刷新 iptables 規則並再次重新執行它們,所有客戶端都無法連接到 youtube,但這會再次持續 2-3 分鐘,對於某些客戶端(我說的是 ip-range 客戶端) .

有沒有人再次遇到這種行為?!它是否與我正在使用的伺服器(ubuntu 11.04)、記憶體或其他東西有關!?

我還安裝了 squid3,我阻止了 youtube 和 facebook 的 http,所以我認為設置 iptables 我可以為 https 切斷 youtube。(但有些客戶確實需要youtube才能工作,所以我想切斷聽歌和無用的網路流量)。

編輯: 經過很長時間,我嘗試了: iptables -I FORWARD -t filter -s 10.217.76.80/28 -m string --algo bm --string "youtube.com" -j DROP #from .80 to .95 (15 ip) 並得到了一個更好的解決方案……只是一段時間。一段時間後,一些客戶端再次開始瀏覽(規則不起作用),而其他客戶端仍然沒有(規則起作用)。我知道(正如 MADHatter 所說)是一個有很多伺服器的 Youtube,但我不明白的是,當使用這樣的規則時 iptables -I FORWARD -m string --algo bm --string "youtube.com" -j REJECT ,所有客戶端的所有流量都會被拒絕,而不僅僅是一段時間,唯一的事情我想要的是對使用者的 ip 範圍使用上述規則,例如從 0.10 到 .240,並讓所有其他人自由瀏覽 youtube。你認為有這樣的規則嗎?我嘗試過的其他類似的東西只在隨機的時間段內起作用。

你說“我可以為 https 剪掉 youtube ”。這是行不通的;HTTPS 連接上的 URL 在加密的掩護下進行交換。防火牆可能在數據流中,但它不會看到這個對話,因為到那時,它的工作被簡化為將加密數據包從一個介面傳輸到另一個介面。

是的,客戶可以嘗試訪問http://youtube.com,您可以取消同步該特定http連接。但是該 URL 現在將它們直接重定向到該https://站點;遲早,您的客戶會意識到他們可以通過 SSL 訪問 youtube,而您將無法看到他們在做什麼。

控制可以訪問哪些 URL 的傳統正確方法是強制 Web 代理 - 但對於 HTTPS 內容,您仍然會遇到問題。您可以在中間人處理這一切,但除非您有一個代理來重新加密和重新簽署每個 HTTPS 請求(並且您的每個客戶端都已安裝並信任您的代理的 CA 證書),否則這將導致非常任何HTTPS 內容的使用者的瀏覽體驗都不令人滿意。

tl;dr : youtube 決定強制 HTTPS 連接到他們的網站,所以如果沒有一些高度複雜的代理(點頭iptables規則不是),你就無法阻止你的使用者去那裡。

引用自:https://serverfault.com/questions/722637