1つの国からのトラフィックのみを許可します。
私はオンラインで複数の方法を見たり読んだりしましたが、それらのほとんどは(Xtablesアドオンを使用して)古くなっており、残りの半分は、1つのIPが好ましくないIPをブラックリストに登録する方法を示しています。
ただし、これは間違ったアプローチであり、すべてを1つずつブラックリストに載せます。より良いアプローチは、ホワイトリストを実行して、そのホワイトリスト以外のすべてをブロックすることです。
私はフランスにいます。フランスのクライアント/ユーザーのみがサーバーにアクセスできるようにしたい。
私が配置しているiptablesルールは
Sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination xx.xx.xx.xx:80
トラフィックを転送するだけです。
これが最良のオプションであるとはお勧めしませんが、機能する別のオプションが見つからない場合は、ダウンロード可能なGeoIPデータベースと ipset ツールを使用して「独自にロール」できます。
たとえば、CSV形式で Geolite2データベース 国をダウンロードします。ファイルをダウンロードして解凍します。
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.Zip
unzip GeoLite2-Country-CSV.Zip
cd GeoLite2-Country-CSV_20190430
フランスのIDを見つけ、フランスのネットワークのすべてのレコードをフィルタリングします。
grep France GeoLite2-Country-Locations-en.csv
3017382,en,EU,Europe,FR,France,1
awk -F, '$2 == 3017382 {print $1}' > french_networks.txt
france
と呼ばれるフランスのネットワークを含むipsetをビルドします。
ipset create france hash:net
while read network ; do
ipset add france $network;
done < french_networks.txt
Ipsetを使用して、フランス以外のものをドロップするiptables
ルールを作成します。ローカルネットワークが削除されないようにするには、ルールを追加する必要がある場合があります。
iptables -A INPUT -m set ! --match-set france src -j DROP
あなたはcsfを試すことができます-それはインストールが簡単です、そしてcsfpost.shであなたはあなたにiptablesルールを設定できます。 csf.confには、FRを設定できるCC_ALLOW_FILTERがあります。 Webドキュメントとアドバイスを確認してください。サーバーのコンソールへのアクセスは、自分をロックアウトした場合に備えて、良いアイデアです。