Closed7
Ubuntuで国外からのアクセスをfirewallでブロックする
ufeの使い方を簡単にまとめる
ufwはiptables
コマンドのラッパーであり、シンプルにfirewallの設定を行うことができる
firewallの状態を確認
$ ufw stasus
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 192.168.11.2
22/tcp ALLOW Anywhere
DNS ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
25/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
DNS (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
25/tcp (v6) ALLOW Anywhere (v6)
世界の国別IPv4アドレス割り当てリストを用いて日本からのアクセスを許可する。
まずは、/etc/ufw/before.rules
ファイルのCOMMIT
の前に以下の3行を追加
:DROP_EXCEPT_JP - [0:0]
-A DROP_EXCEPT_JP -j ACCEPT
-A ufw-before-input -j DROP_EXCEPT_JP
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
before.rulesファイルはufwが初期化される前に適応させたいルールセットを記述する。各行で行っていることは以下の通り。
-
DROP_EXCEPT_JP
というカスタムチェインを作成(1行目) -
DROP_EXCEPT_JP
チェインに一致するすべての通信を許可(2行目) -
ufw-before-input
チェインに到達したパケットをDROP_EXCEPT_JP
チェインに渡す(3行目)
/etc/ufw/after.init
ファイルに以下を記述する
start)
# typically required
/etc/ufw/after.init.drop_except_jp
;;
stop)
# typically required
iptables -F DROP_EXCEPT_JP
;;
/etc/ufw/after.init
はufwの初期化後に実行される。start)、stop)のセクションはそれぞれufwが開始した時と終了した時を表す。
以下のシェルスクリプトで日本からのアクセスを許可するiptablesコマンドを生成する
#!/bin/sh
IPTABLES=iptables
EXCLUDE_PORTS=80,443,25
wget -q -N http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -q -f -c cidr.txt.gz > cidr.txt
if [ -f cidr.txt ]; then
echo $IPTABLES -F DROP_EXCEPT_JP
echo $IPTABLES -A DROP_EXCEPT_JP -p tcp -m multiport --dport $EXCLUDE_PORTS -m state --state NEW -j RETURN
sed -n 's/^JP\t//p' cidr.txt | while read address; do
echo $IPTABLES -A DROP_EXCEPT_JP -s $address -j RETURN
done
echo $IPTABLES -A DROP_EXCEPT_JP -j DROP
fi
上記のシェルスクリプトの標準出力を/etc/ufw/after.init.drop_except_jp
ファイルにリダイレクトさせる
sudo sh drop_except_jp.sh | sudo tee /etc/ufw/after.init.drop_except_jp > /dev/null
ufwを再起動する
systemctl restart ufw
IPアドレスリストは更新されるため、毎日スクリプトを実行しアドレスリストを最新の状態に保つ。
/etc/cron.daily
ディレクトリにiplist_update.sh
を作成し、以下のスクリプトを記述
#!/bin/bash
sh /root/drop_except_jp.sh > /etc/ufw/after.init.drop_except_jp
systemctl restart ufw
このスクラップは2023/04/09にクローズされました