[さくらの VPS] Ubuntu の ufw で送信元の IP アドレスを指定して SSH を許可する方法
前書き
さくらの VPS に限らず VPS で Linux OS を使っていると管理のためにサーバーに SSH でログインすることが多いだろう。その時、公開鍵認証を使って SSH ログインできるようにすることが一般的だ。
本投稿では、よりセキュアにするために公開鍵認証に加えてファイアウォール = ufw の設定を行う。 VPS サーバーに SSH 可能な IP アドレスを絞る。これにより、ファイアウォールで許可された IP アドレスであることと、公開鍵認証の設定がされていることの 2 つを満たしている環境からのみ SSH ログインができるようになる。
前提条件
さくらの VPS には、パケットフィルターという仕組みが用意されている。これは、さくらの VPS 管理画面から GUI 操作で Firewall が設定できるもので使い勝手がとても良いと思っています。
しかし、僕が使っているさくら VPS (複数契約あるうちの 1 つ) は、このパケットフィルターの設定を OFF にしてしまっており、ファイアウォールは自分で設定しないといけない。
このため ufw で設定する必要があるのだ。
ufw のコマンド
まずは現状の設定を見てみよう。すでにいくつか ufw で設定されている状態だ。
$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 111.222.33.44 22/tcp on ens3 ALLOW IN Anywhere [ 2] 22/tcp LIMIT IN Anywhere [ 3] 111.222.33.44 7874/tcp on ens3 ALLOW IN Anywhere [ 4] 111.222.33.44 27874/tcp on ens3 ALLOW IN Anywhere [ 5] 111.222.33.44 7876/tcp on ens3 ALLOW IN Anywhere [ 6] 111.222.33.44 27876/tcp on ens3 ALLOW IN Anywhere [ 7] 22/tcp (v6) LIMIT IN Anywhere (v6) $
上記 [1] のところが 22/tcp と表示されていることからわかるように現在の SSH 許可設定である。
ALLOW IN Anywhere と設定されていることから、どの IP アドレスからも許可がされる設定となっている。これを特定の IP からのみ許可されるように変更する。
SSH の許可設定は [1] のところに設定したいため ufw insert で定義を追加する。
$ sudo ufw insert 1 allow in on ens3 from 44.55.66.77 to 111.222.33.44 port 22 proto tcp Rule inserted $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 111.222.33.44 22/tcp on ens3 ALLOW IN 44.55.66.77 [ 2] 111.222.33.44 22/tcp on ens3 ALLOW IN Anywhere [ 3] 22/tcp LIMIT IN Anywhere [ 4] 111.222.33.44 7874/tcp on ens3 ALLOW IN Anywhere [ 5] 111.222.33.44 27874/tcp on ens3 ALLOW IN Anywhere [ 6] 111.222.33.44 7876/tcp on ens3 ALLOW IN Anywhere [ 7] 111.222.33.44 27876/tcp on ens3 ALLOW IN Anywhere [ 8] 22/tcp (v6) LIMIT IN Anywhere (v6) $
すると上記のように [1] のところに追加された。[1] は ALLOW IN 44.55.66.77 となっている点に注目!
もともとの [1] は [2] になっていて、この [2] はもう不要であるため消す。
$ sudo ufw delete 2 Deleting: allow in on ens3 to 111.222.33.44 port 22 proto tcp Proceed with operation (y|n)? y Rule deleted $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 111.222.33.444 22/tcp on ens3 ALLOW IN 44.55.66.77 [ 2] 22/tcp LIMIT IN Anywhere [ 3] 111.222.33.444 7874/tcp on ens3 ALLOW IN Anywhere [ 4] 111.222.33.444 27874/tcp on ens3 ALLOW IN Anywhere [ 5] 111.222.33.444 7876/tcp on ens3 ALLOW IN Anywhere [ 6] 111.222.33.444 27876/tcp on ens3 ALLOW IN Anywhere [ 7] 22/tcp (v6) LIMIT IN Anywhere (v6) $
sudo ufw delete 2 のように番号をつけて ufw delete を実行するとその定義だけを削除することができる。
これで、44.55.66.77 の IP アドレスからの SSH のみファイアウオールで許可される設定ができた。