2021/02/08
「はじめてのVPSシリーズ」の第3回目です。
前回はSSH接続での鍵認証の設定の記事をエントリーしました。
ただ、これでもセキュリティ対策としては万全ではありません。
今回は「SSHのポート番号変更」について記事をエントリーします。
前提知識
SSH接続にデフォルトの22ポートを使用している場合は、ほぼボットによる不正アクセスがされます。
もし、お使いのサーバーのSSHポート番号が22ポートの方は lastb コマンドで確認してみましょう。
$ su -
$ lastb
パスワード認証をやめて鍵認証にしたり、IP制限をすればセキュリティ的には問題ありません。
しかし、SSH の不正アクセスが多ければリソースをそれなりに消費するのでサーバーには負荷にはなります。
この場合、負荷対策としてデフォルトのSSHのポート番号である22番を別の番号に変えてしまえば、かなりの確率で不正アクセスがなくなります。
新しいLinuxの教科書
ただ、読むだけではなく実践しながら進める形式になっています。(※コマンド一覧とか早引きの本ではありません)初心者がつまずくであろう箇所は補足説明がしっかり入っています。基本を大事にしている本なので、書いてあることはとてもわかりやすいです。それゆえ、中級者以上の方には物足りないかもしれませんが、初学者にはススメします!
手順
さくらのVPS「パケットフィルタ」を無効にする
さくらのVPSではデフォルトで パケットフィルタ機能 が有効になっています。
パケット(通信用に細切れにしたデータ)の中身を見て、通していいかを判断する機能。
SSH ポートを22番以外を利用する場合はさくらの VPS 管理画面から「パケットフィルタ」-> 「解放ポートを追加する」を選択してポート番号を追加していきます。
まず、さくらのVPS画面 にアクセス。
さくらのVPS管理画面右上にある「パケットフィルタ」をクリック。
[ パケットフィルタ設定へ ] クリック。
「パケットフィルタを利用する」にチェック。その後、「解放ポートを追加する」で以下のポートだけ解放します。
・80/443 → ApacheとSSLのポート
・12345 → SSHのポート ※このあと22番ポートから12345ポートに変更します。
これを最初にやっておかないと、SSHポートを「22」から変更すると接続がタイムアウトしてしまい、繋がりなくなります。
sshd_config (SSHサーバーの設定ファイル)のバックアップ
#管理者権限に
$ su -
#---------------------
#バックアップ作成
#---------------------
#ディレクトリに移動
$ cd /etc/ssh
# sshd_configファイルをバックアップ
$ cp sshd_config 20201116_sshd_config.BAK
SSHポート番号変更(sshd_config)
#SSH設定ファイル編集
$ vim /etc/ssh/sshd_config
#----------------------------------------------
# SSH設定ファイルを以下のように編集
#----------------------------------------------
#ポート番号を 22 → 12345 へ
#基本的に空いている 49152 ~ 65535 で指定するといい
#ただし、さくらVPSでは1から32767の範囲で指定
:
Port 12345
:
実演
SSHポート番号変更(firewalld)
#-------------------------
#設定ファイルをコピー
#-------------------------
#サービスごとの設定ファイルは /usr/lib/firewalld/services/ の下にある
#/usr/libの下はいじってはいけないルール
#/etc/firewalld/の下にファイルを作ればこの設定でシステムデフォルトを上書きできる
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
#さらにバックアップ
$ cp /etc/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml.BAK
#VIMで編集
$vim /etc/firewalld/services/ssh.xml
#以下のように編集
:
<port protocol="tcp" port="12345" />
:
実例
ファイアウォールの起動
さくらの公式サイトによると、はじめからファイアウォール機能は有効になっているとのことです。
ですが、デフォルトのOS(CentOS6)以外を使用した場合は、ファイアウォールが無効になっています。
今回、CentOS7をカスタムインストールしているので、ファイアウォールは起動していません。
#ファイヤーウォールの状態を確認
$ systemctl status firewalld
実演
この場合、ファイヤーウォールの設定を反映させるために再起動をかけると以下のようにエラーになります。
あらかじめ、以下のコマンドでファイヤーウォールを起動させておきましょう。
#ファイヤーウォールの起動
$ systemctl start firewalld.service
#ついでにサーバーの再起動と同時にファイヤーウォールも起動できるように設定
$ systemctl enable firewalld
再起動して設定反映
ファイヤーウォールが起動されていれば再起動をして設定を反映させます。
# 「success」と表示されればOK
$ firewall-cmd --reload
SSHサーバーも再起動させます。
$ systemctl restart sshd
動作確認
変更したポート番号でSSHログインできるかを確認します。
#-pオプションでポート番号指定
$ ssh -p 12345 admin@192.168.1.100
Poderosaでアクセスする場合は以下のような感じで設定。
以下のようになればOKです。
不正アクセスもこれで、ほとんどおさまります。
以上です。
さくらのVPS
Linuxの知識がある方や初心者の枠から脱した人は「VPS」をおススメします!もし、あなたがデザイナーで静的ページのサイトしか作らないのであれば「レンタルサーバー」でOKです。ただ、Webプログラマーとして仕事をするのであればroot権限のあるVPSサーバーを最低1台、自分専用(学習用)を持っておいたほうがいいでしょう。
Laravelプログラマーの初心者が選ぶ学習用サーバーとは?
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。