重複の可能性:
iptablesはhttpsのウェブサイトをブロックします。
Zentyal Osをファイアウォールとして使用していますが、httpサイトをブロックするのと同じように機能しますが、https facebookサイトをブロックすることはできません。私の唯一の目標は、ポート443をブロックする必要があるように、https Facebookのウェブサイトもブロックする必要があることです。
したがって、iptablesと透明モードを使用して制御する機会はありますか?
答え1
注:この記事は数時間前に書かれましたが、Sandyの妨害のために出て送信ボタンを押すのを忘れました。
したがって、これを達成するには2つの方法があり、どちらもさまざまなタスクを実行します。誰でもプロキシサイトを使用して制限をバイパスできるので、実際にFacebookをブロックすることは不可能です。また、SSHトンネルを介して無制限のサーバーに接続することもできます。それでも私たちはここにいます...
iptables
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.247.21 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 66.220.149.88 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 66.220.152.16 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.234.21 --dport 443 -j REJECT
bash$ sudo iptables -A OUTPUT -p tcp -d 69.171.237.16 --dport 443 -j REJECT
欠点は、これがFacebookが解決のためにfacebook.comの新しいIPアドレスを追加するのを妨げないことです。継続的に実行し、最新の情報を得るためのスクリプトを作成できます。
#!/bin/bash
for i in $(host facebook.com | grep "has address " | cut -d' ' -f4)
do iptables -A OUTPUT -p tcp -d $i --dport 443 -j REJECT
done
注:エラーが発生する可能性があるため、少しの修正が必要です。
ドメインネームサーバー
このソリューションも完璧ではありません。 DNSは命名システムの基礎であるため、IPアドレスを直接入力すると勝ちます。ネットワークに内部ネームサーバーがある場合は、facebook.comのエントリを他の場所で確認するように設定できます。私はこれを上記のiptablesで使用します。
シートベルト-まったく推奨されていません
我々はさらに一歩進むことができます。ネットワークにFacebookをブロックするすべてのコンピュータがある場合は、ルートCA証明書を生成してすべてのコンピュータに公開鍵をインストールできます。ブローカーは、証明書を使用するすべてのWebサイトへのすべてのSSLトラフィックを削除し、Facebook接続を積極的に終了します。しかし、これは危険な考えであり、プライバシーに影響を与えます(特に企業環境では)。
答え2
私はzentyalがsnort IDSの統合サポートを提供すると信じているので、facebook.comを含む一般名に基づくサーバー証明書に基づいてSSLパケットを含むSSLパケットを検出してブロックするsnortルールを追加できます。 。これはまた、プロキシを介したアクセスを解決します(プロキシ自体への接続が暗号化されていない限り)。
別のアプローチは、すべてのDNSトラフィックがDNSサーバーを通過するように強制し(DNSサーバー以外のドメインへのトラフィックをブロックし)、すべてのfacebook.comドメインに対するクエリに対して誤ったコンテンツを返すことです(ただし、プロキシを介したアクセスは停止しません)。
答え3
このルールはあなたに効果的です
iptables -A OUTPUT -d facebook.com -dport 443 -j REJECT --reject-with tcp-reset
編集:何らかの理由でiptablesバージョンがアドレスの代わりにURLを使用するのが好きではない場合、Facebookは複数のIPを確認できるので、次のことができます。
for blockip in `resolveip facebook.com | cut -d " " -f 6`; do
iptables -A OUTPUT -o eth0 -p tcp -m tcp -d $blockip -j REJECT --reject-with tcp-reset
done