LoginSignup
0
1

More than 1 year has passed since last update.

ufwで日本以外からのアクセスを遮断する

Last updated at Posted at 2021-03-09

ufwで日本以外からのアクセスを遮断する

経緯

WEBサーバーに中露からの攻撃がガンガン来るので、遮断する。

下記の様なアクセスが 1日に数百件来る。
うるさいので日本のIPアドレスからのみを許可する様にしたい。

45.80.68.76 - - [08/Mar/2021:21:29:56 +0900] "POST /_ignition/execute-solution HTTP/1.1" 403 3885 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
45.80.68.76 - - [08/Mar/2021:21:46:01 +0900] "POST /_ignition/execute-solution HTTP/1.1" 403 686 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"

さくらのクラウドのパケットフィルタでできるかな?

さくらのクラウドのサーバーなので パケットフィルタでなんとならないか調べてみたが、出来なさそうだ。

ufwでやってみる

ufwはUbuntuのFirewall。

個人の方で日本のIPアドレスをCIDR形式で公開されている方がいたので参照させてもらいました。
https://qiita.com/Shiro-neko-kamen/items/7e8411c95b0bedf8312f

公開されている日本に割り当てられた IPアドレスだけを許可一覧にいれてやればいいのでは?
などと考えた。

ufwを有効化

sudo ufw enable

デフォルトをdenyにして

sudo ufw DEFAULT deny

デフォルトで接続禁止にして、許可されたアクセスだけ許すようにする。
注意 SSHでログイン出来なくなるので要注意

ログイン元のIPアドレスを許可リストに追加

sudo ufw allow from 122.249.123.123 to any

自分がログインしている端末のグローバルIPアドレスを許可リストに入れる。

日本のIPアドレスを取得して、ufwコマンドを作成するシェルスクリプトを作る。

vi mk_cmd.sh

#!/bin/bash

wget http://nami.jp/ipv4bycc/cidr.txt.gz
zcat cidr.txt.gz | grep ^JP > cidr.txt

cat cidr.txt | awk {'print "ufw allow from "$2" to any"'} > set_allow_jp.sh

こいつを実行
chmod a+x ./mk_cmd.sh
./mk_cmd.sh

set_allow_jp.shファイルが出来上がる
中身はこんな感じ

ufw allow from 80.80.92.0/22 to any
ufw allow from 85.94.160.0/19 to any
ufw allow from 89.150.2.0/23 to any
ufw allow from 89.150.4.0/22 to any
・・・以下略・・・

set_allow_jp.shを実行

chmod a+x ./set_allow_jp.sh
nohup sudo ./set_allow_jp.sh &

読込に数時間かかりそうなのでバックグラウンドジョブで実行。

以下のコマンドで何件設定されたか確認
sudo ufw status | wc

146311件くらいになれば終了。

1分間で80件くらい追加されるので、全部設定するのに27時間くらいかかりそう。
大丈夫かなぁ。


追記:最初の設定方法にミスが有って時間がかかっている可能性が有ったので、時間の記述を一旦削除しました。


ufwは普段あまり使っていないが、大丈夫だろうか。
パフォーマンスに難があるような気がする。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1