web-dev-qa-db-ja.com

iptablesでhttpsウェブサイトをブロックする方法

Youtube.com、facebook.comなどのhttpsWebサイトをブロックしたい。

URLルールを使用してそれをブロックすることはできないことを私は知っています。 URLが暗号化されているため。

そこで、フィルタリングしたいドメインを含むすべてのDNSクエリをブロックしようとしました。そこで、次のルールを追加しました。

iptables -A OUTPUT -p udp --dport 53 -m string --domain yahoo.com -j DROP

しかし、youtubeは実行し続けます。しかし、しばらく非アクティブ(約15分)が経過すると、YouTubeはブロックされます。

説明はありますか?

YouTubeをすぐにブロックするにはどうすればよいですか?

1
Mohamed KALLEL

あなたがしていることは効果がありますが、いくつかの問題があります:

  • ブラウザとオペレーティングシステムはDNSルックアップをキャッシュします。サイトが読み込まれるたびに、必ずしも完全なDNSルックアップが発生するわけではありません。

  • 一部のブラウザは、ネットワークの問題があると考えているため、DNSがブロックされているように見える場合(独自のDNSサーバーに接続するなど)、別のことを試みる場合があります。 Google Chromeはこれを行う可能性があります。

  • Google Chromeおよび他のブラウザはまもなく「DNSoverHTTPS」を実装する可能性があります。つまり、ポート53に対して何をしても、DNSにはまったく使用されないため、効果はありません。

  • IPアドレスによるブロックは、YoutubeのIPアドレスが何らかの理由で変更されるまでしばらくの間機能します。

  • システムでその機能を管理上ブロックしていない限り、知識のあるユーザーはDNSサーバーを変更できます。

YouTubeをすぐにブロックするにはどうすればよいですか?

必要なことを行う「正しい」方法は、HTTPSトラフィックをフィルタリングできる「Man-In-The-Middle」透過HTTPSインターセプトプロキシを設定することです。次に、プロキシにyoutube.comを含むURLをブロックするように指示します。

おそらくご存知のように、暗号化されているため、443でyoutube.comを単純に検索することはできません。

ローカルマシンで遊んで、それがどのように機能するかを確認できるのはBurp Proxyです。これはテスト用であり、多くのユーザーのトラフィックを管理するためのものではありません。しかし、あなたは概念を学ぶことができます。

セキュリティ警告を回避するために、プロキシを使用するすべてのマシンにプロキシのSSL証明書をインストールする必要があります。

4
LawrenceC
#nslookup youtube.com

Non-authoritative answer:
Name:   youtube.com
Address: 172.217.16.46
Name:   youtube.com
Address: 172.217.20.206

iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 172.217.16.46 --dport 80 -j DROP
iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 172.217.20.206 --dport 80 -j DROP

ソース: http://forum.oszone.net/post-692775-5.html

または

iptables -I FORWARD -s 10.0.0.0/24 -p tcp -m string --algo bm --string ".youtube.com" -j DROP

ソース: http://moshelpers.ru/?q=node/71

または最初の例では、ローカルネットワーク用のマシンゲートウェイがあり、そこでブロックするためのルールを作成します。たとえば、リソースyoutube.comは次のようになります。

iptables -A FORWARD -m string --string "youtube.com" --algo kmp --to 65535 -j DROP

Linuxマシンでアドレスをブロックするには、ルールを少しコードで編集します。

iptables -A INPUT -m string --string "youtube.com" --algo kmp --to 65535 -j DROP

ソース: http://sudouser.com/blokirovka-nezhelatelnyx-url-s-pomoshhyu-iptables.html

-p tcpの場合のみ、タイムアウトなしでtcp接続が一度に切断されます。次のことを試すことができます。

-j REJECT --reject-with tcp-reset

ソース: http://forum.ixbt.com/topic.cgi?id=76:108

申し訳ありませんが、すべての情報源-ロシアのサイト:)

2
Alex_Krug

あなたのコマンドは:

iptables -A OUTPUT -p udp --dport 53 -m string --domain yahoo.com -j DROP

まず、UDPとポート53のみをブロックします

iptables -I INPUT 1 -s 172.217.0.0/16 -j DROP
iptables -I FORWARD 1 -s 172.217.0.0/16 -j DROP

iptables -I INPUT 2 -s 157.240.0.0/16 -j DROP
iptables -I FORWARD 2 -s 157.240.0.0/16 -j DROP

最初に、データが入る場所であるINPUTチェーンをブロックする必要があります。FORWARDチェーンは、ニーズにとって不要な場合があります。次に、YouTubeでpingを実行し、次にそのIPでwhoisを実行して、所有しているブロックを確認しました。

最後に、すべてのIPをブロックしたので、DNSルックアップを気にする必要はありません。

2
cybernard

@ djsmiley2kのコメントで述べられているように、あなたは確かにDNSキャッシングに直面しています。これは、マシンが最近解決した場合、特定のドメインのDNSサーバーを再度要求しないことを意味します。

ドメインの即時ブロックを強制するには、DNSキャッシュフラッシュを強制する必要があります。 OSによって、コマンドは異なります。あなたは例を見つけることができます ここ

要約すると、iptablesルールを追加した直後に、次のいずれかを試すことができます。

$ service nscd reload

または

$ service dnsmasq restart

または

$ rndc restart
0
vera