コンテキスト:
ブラウザや他のアプリケーションを使用することを決定しない限り、私のコンピュータへのすべてのインバウンド/アウトバウンドトラフィックをブロックするシェルスクリプトが必要です。この場合、そのアプリケーションを呼び出すと、そのアプリケーションのみが実行されます。
私はスマートな人が作った古いスクリプトを研究し(ソースは最後にリンクされています)、iptablesの使い方を直接学ぶのに時間を費やしました(まだ作業中)。
完了したタスクの結果は次のとおりです。
結果:
シェルスクリプトを実行する前に、次のスクリプトがあります。インターネットビルドされました:
sudo groupadd internet
シェルスクリプト:
#!/bin/sh
#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
sudo iptables -A OUTPUT -p udp -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 -j REJECT
# same process for IPv6:
sudo ip6tables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
sudo ip6tables -A OUTPUT -p udp -m owner --gid-owner internet -j ACCEPT
sudo ip6tables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
sudo ip6tables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
sudo ip6tables -A OUTPUT -j REJECT
現在作業中のシェルの他の部分は次のとおりです。しかし、これについて100%確信することはできません。
#DROPS ALL INPUT and FORWARD
sudo iptables -A INPUT -j DROP
sudo iptables -A FORWARD -j DROP
#ONLY ACCEPTS INPUT THAT WAS INITIATED BY SOME OUTPUT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#SAME REPEATED FOR IPv6
sudo ip6tables -A INPUT -j DROP
sudo ip6tables -A FORWARD -j DROP
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
上記のスクリプト全体を実行した後、次のコマンドはinternet
グループに属する端末を開くため、端末で開かれたすべてのアプリケーション(Firefoxなど)はインターネットにアクセスできますが、他のすべての入出力はブロックされます。
sudo -g internet -s
質問:
以前のロジックは妥当ですか?現在、私はネットワーク監視ソフトウェア(nethogs)をインストールし、すべてのコードラインをテストし、結果が期待どおりであることを確認するなど、すべての機能をテストしています。しかし、同時に2日前からiptablesを学び始めたので、元のコードのソースは経験豊富なコーダーによって行われましたが、これを組み合わせて所望の結果を生成する能力について100%確信できません。ありがとう時間をかけてこの記事を読んで議論に参加してくださった皆さんへ! ! !
源泉:
https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm https://serverfault.com/questions/429400/iptables-rule-to-allow-all-outbound-locally-originating-traffic
PS:iptablesの多くの基本概念を理解するのに役立ち、ソースコードに関するいくつかの質問に答えてくれた@dirktに感謝します。