状況:
私は最近、iptablesと連携してLinux OSとの間のすべてのインターネットアクセスをブロックする次のシェルスクリプトを見つけました。ただし、グループにあった端末は開かれていません。 internet
と呼ばれる:
コード:
これは複雑に聞こえるかもしれませんが、簡単です。まず、次のように「インターネット」グループを作成します。
Sudo groupadd internet
次に、これをスクリプトに保存します。
#!/bin/sh
# Firewall apps - only allow apps run from "internet" group to run
# clear previous rules
Sudo iptables -F
# accept packets for internet group
Sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
# also allow local connections
Sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
Sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
# reject packets for other users
Sudo iptables -A OUTPUT -p tcp -j REJECT
# open a Shell with internet access
Sudo -g internet -s
ソース:https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm
質問:
起こっている出来事の次の解釈は正しいですか?
Sudo groupadd internet
インターネットと呼ばれるグループが作成されますSudo iptables -F
iptablesの現在のルールがすべてクリアされますSudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
これで問題が発生しました...-A OUTPUT
ターミナルにルールを追加/追加するように指示し、ドキュメントに従って-p
is "チェックするルールまたはパケットのプロトコル"なので、-p tcp
tcpプロトコルのみを反映するルールを設定しているようですが、youtube/twitchでストリームを視聴したい場合はどうすればよいですか? udp
を含める必要がありますか?含まれている場合、どのように含めますか?
次に、-m(一致用)があります。ドキュメントを読みましたが、何をするのかわかりません。今のところ、何が-m owner --gid-owner internet -j
手段。 コメントから# accept packets for internet group
コードの機能は理解していますが、その結論に到達するために、各要素が何をしているのかを理解したいと思います。
あなたの解釈は正しいです。
すべてをUDPパケットにも適用する場合は、同じルールセットをもう一度追加する必要がありますが、-p udp
の代わりに-p tcp
を使用します。または、このオプションを省略して、すべてのパケットにルールを適用します(ただし、ICMPパケットにはいくつかの落とし穴がある可能性があるため、両方の種類のルールを追加する方がおそらく安全です)。ただし、最初にTCPaccessにアクセスする必要があります(例:Youtube)。したがって、Youtubeからのストリーミングを使用する場合でもUDP、あなたはここまで到達することは決してないので、あなたはストリームを見ることができないでしょう。
オプション-m
は、使用する一致の種類を選択します。さまざまな基準で一致させることができ、一致するモジュールでさえiptables(man iptables-extensions
)の拡張機能もあります。ここで、-m owner
はパケットの所有権によって一致を選択し、--gid-owner
はグループの所有権と一致するように指定します。したがって、両方のオプションを合わせると、「このルールは、グループinternet
の誰かから送信されるパケットにのみ適用されます」という意味になります。
オプション-j
(元々は「ジャンプ」)は、ルールが一致したときに何をするかを指定します。別のチェーンにジャンプするか、ACCEPT
(ルールの処理を停止してこのパケットを送信する)、またはREJECT
(ルールの処理を停止してこのパケットを無視する)を行うことができます。
次の2つのルールは、送信アプリケーションがどのグループに属していても、特別な宛先(-d
)のパケット(ACCEPT
)を許可し、最後のルールは、前のルールと一致しなかったすべてのパケット(REJECT
)をドロップします。したがって、実際のブロッキングを行うのはこの最後のルールです。
インターネット上にはiptables
のチュートリアルがたくさんあります。詳細を知りたい場合は、少しグーグルして好きなものを選んでください。私が過去に有用だと思ったいくつかのランダムなリンク: