[さくらの 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 のみファイアウオールで許可される設定ができた。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください