そのため、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にアクセスできるようになり、残りは破棄されると思います。この仮定は正しいでしょうか?そうでない場合、なぜそうではないのですか?
いじくり回した後、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
地理位置情報の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
再起動するたびにロードされます。