web-dev-qa-db-ja.com

Ubuntu IPTablesは1か国のみを許可します

そのため、http(80)およびhttps(443)ポートを除くすべてのポートへのすべてのトラフィックをドロップし、国xからの他のすべてのポートでのトラフィックのみを許可するスクリプトをネットで探していました(ケース国xは米国です)。

すべての国のすべてのIPを追加するのではなく、自分の国のIPを許可して、外の世界からの他のほとんどすべてのトラフィックをブロックします。国外の誰もssh、ftp、smtpなどにアクセスできません。自分以外。これが変更される場合は、近づいたときに特別なケースを追加します。

サイドノート

IPテーブルを使用して国ごとにIPを禁止する のスクリプトを含む質問を見つけたのに注意する必要がありますが、それは私がしなければならない追加の挿入の多くです。

ベストアンサーとしてマークされたスクリプトは、それらのIPからのすべてのトラフィックをブロックします。 80と443以外のすべてのポートへのアクセスをブロックしたいだけです。

更新

次のルールで、

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

それを変更して次のようなことができるでしょうか

iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

これにより、中国からのIPがポート80とポート443にアクセスできるようになり、残りは破棄されると思います。この仮定は正しいでしょうか?そうでない場合、なぜそうではないのですか?

アップデート2

いじくり回した後、Ubuntuのバージョンが--dport属性を好きではないことがわかりました。したがって、Ubuntu 14+を実行しているものを使用する代わりに(少なくとも、一部のマシンにUbuntu 14.04、14.10、および15.04のみがインストールされています)、-p PORT_NUMBER_OR_NAMEを使用する必要があります。

だからそれは次のようになります

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

または着信トラフィックの場合、

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
10
Austin Kregel

地理位置情報のiptablesサポートを追加する必要があります。そのためには、次の手順を実行する必要があります。

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-Perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

これにより、次のようなことが可能になります。

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

これにより、中国(CN)への発信トラフィックがブロックされます。ルールの複雑さはあなた次第です。基本的にスクリプトは必要ありません。適用するルールを書き留めてから、iptables-save再起動するたびにロードされます。

7
nKn