LoginSignup
1
0

More than 3 years have passed since last update.

ConoHa VPSで行ったセキュリティ設定 (rootログイン禁止・ポート変更)

Last updated at Posted at 2020-11-29

あらすじ

ConoHa VPSに登録
SSH接続できたことを確認

ConoHaVPS過去記事
https://qiita.com/kkabosu386/items/94e560d9c68f3f4b35c8

作業用ユーザ作成

rootでログインできてしまうとセキュリティ的に問題があります。
そのため、rootに変わる作業用ユーザを作成していきます。

まずは前回同様ssh接続していきます。

Terminal
$ ssh root@ipアドレス

vpsにログインできたら、作業用ユーザを追加していきます。
「kabosu」という部分は、お好きな名前に変更してください。
なお今回もパスワード入力時に、画面上に入力した文字は表示されないので注意が必要です。

# useradd kabosu
# passwd kabosu
ユーザー kabosu のパスワードを変更。
新しいパスワード: #任意のパスワードを入力
新しいパスワードを再入力してください: #任意のパスワード入力

これで、ユーザkabosuというユーザが作成できました。
しかし、このままではkabosuでログインした際、sudo(管理者権限で実行)がつかえません。

そのため、以下のコマンドを実行します。

# usermod -G wheel kabosu

usermod:ユーザの情報を変更するコマンド
-G: ユーザが所属するセカンダリーグループを変更
wheel: グループの一つ。このグループに属すると管理者権限で実行できる。つまり、sudoが使えるようになる。

上記のコマンドにより、kabosuがsudoを実行できるようになりました。

ここで、作成したユーザでログインできるか確認してみましょう。

$ ssh kabosu@ipアドレス

設定したパスワードを入力し、下記のようにログインできていればOKです。

[kabosu@ipアドレス ~]$

これまではrootでログインしてきましたが、kabosuが管理者(root)権限でコマンドを実行するには、先頭にsudoをつける必要があります。基本的に、

$ 一般の権限で実行できるコマンド
# root権限で実行するコマンド

といった感じで記載しておりますので、以降の作業を作業ユーザ(私の場合kabosu)で行う場合は、

sudo [root権限(#)で実行したいコマンド]

という形で実行してください。

rootユーザのログイン禁止

続いて、rootでのログインを禁止していきます。
大切なConfigファイルをいじるので、一度バックアップをとります。

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.20201125

# cp コピー元パス コピー先パス
で、 コピーが可能です。
ファイル名の末尾に編集日の日付をつけておくと、いつのバックアップかわかりますね。

ここで、コピー元の /etc/ssh/sshd_configを編集していきます。
vimの使い方は下記URLをご参照ください。
https://qiita.com/JpnLavender/items/fabcc79b4ab0d52e1f6d

# vim /etc/ssh/sshd_config

下記を追加していきます。

/etc/ssh/sshd_config
PermitRootLogin no

場所はどこでもいいのですが、自分の場合47行目あたりに
#PermitRootLogin yes
があったので、その下に追加しました。
行数は、vimの:set numberで確認可能です。

vimを抜けたら、ちゃんと編集ができたか確認します。

# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.20201125
< PermitRootLogin no

diff:二つのファイルを比較して、差分を出力してくれます。

この時点では、設定が反映されていないので、sshdを再起動します。

※root以外の作業ユーザ(私の場合kabosu)でログインできることを確認してからにしましょう!!誰もログインできなくなったらかなり厄介です…
(もしそうなった場合は、VPSの管理画面からログインして設定し直す必要がありますが、今回は割愛します。)

# systemctl restart sshd 

改めて、別ウィンドウからTerminalを開き、rootでログインを試みましょう。

$ ssh root@ipアドレス

ログインできなくなっていたら、成功です。

ポート番号の変更

デフォルトのsshdは22番ポートを使用する設定になっています。
しかし、デフォルトのままだと22番ポートからの侵入を目的とした攻撃を受けやすくなってしまいます。

他のセキュリティ対策を行っていれば、そこまで重要度が高いわけではありません。
しかし、攻撃への対処(認証)でCPUに負荷をかかるのを防ぐ点でもメリットがあります。

今回は、22番の代わりに22222番ポートを使用する設定にしていきます。

firewall(ポート開放)

まず、ファイアウォールの状態を確認します。

# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor p>
   Active: active (running) since Sat 2020-10-31 21:39:44 JST; 3 weeks 3 days a>
     Docs: man:firewalld(1)
 Main PID: 15088 (firewalld)
    Tasks: 3 (limit: 5048)
   Memory: 20.7M
   CGroup: /system.slice/firewalld.service
           └─15088 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork>
# firewall-cmd --list-port
22/tcp

1つ目のコマンドでは、緑の字でActive: active (running)みたいに書いてあれば起動してい流ことが確認できます。起動していない場合は下記コマンドを実行しましょう。

# systemctl start firewalld

2つ目のコマンドで、ports: 22/tcpと書いてありますが、firewall上で22番ポートが開放されているという意味です。
つまり、22番ポート以外を使って通信しようとすると、ブロックされてしまいます。

まずは、下記コマンドで、22222番ポートを開放します。さらにfirewallの設定を反映させます。最後に、開放されたか確認します。

# firewall-cmd --add-port=22222/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-port

ports: 22/tcp 22222/tcpのように表示されていればOKです。

22222番ポートでも通信が可能になったので、ssh接続を22番から、22222番ポートに変更する設定をしていきます。

ファイル編集時は、バックアップを忘れずに。

# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.20201125
# vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
#Port22    #ポート22をコメントアウトしつつ
Port22222 #ポート22222で接続するよう設定します。

もう一つ、ssh.xmlファイルを編集するのですが、今回は代わりに、
ssh-22222.xmlを作って、そちらを読み込ませるようにします。

# cp -p /usr/lib/firewalld/services/ssh.xml /usr/lib/firewalld/services/ssh-22222.xml
# vim /usr/lib/firewalld/services/ssh-22222.xml

<port protocol="tcp" port="22"/>部分を以下に書き換えます。

/usr/lib/firewalld/services/ssh-22222.xml
<port protocol="tcp" port="22222"/>

firewallにssh-22222.xmlを読み込ませます。

# firewall-cmd --add-service=ssh-22222 --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-services
ssh ssh-22222

SELinux(ポート開放)

最後に、SELinuxの設定をします。
SELinuxも、セキュリティとして機能しているので、firewall同様ポート開放してあげる必要があります。

# dnf install -y policycoreutils-python-utils
# semanage port -a -t ssh_port_t -p tcp 22222
# semanage port --list | grep ssh
ssh_port_t                    tcp      22222, 22

最後に、sshdを再起動します。

# systemctl restart sshd

接続テスト

22222番ポートから接続できるかテストしたいのですが、これまで作業してきたターミナルは閉じず、新しいものを開いて、そちらから接続確認をしてください。

Terminal
$ ssh -p 22222 kabosu@ipアドレス

これで通常通り接続ができれば、問題ありません。
最後に、firewallの22番ポートを閉じていきます。

後片付け(ポート22を閉じる)

無事ポートの変更ができたので、使用しない22番ポートは閉じておきます。

# firewall-cmd --permanent --remove-service=ssh

なお、SELinuxはデフォルトの22番ポートを閉じることはできないようです。
とりあえず、ここまででセキュリティ対策は完了です。

まとめ

アプリを公開と謳っておきながら、全然辿り着けてませんね。
しかし、グローバルに公開する以上、これだけでもまだ足りないぐらいなのではないでしょうか。

次回:Dockerインストール

CentOS8にDockerをインストールしていきます。
実は、CentOS8へのインストールは推奨されていないようです。
そのため、まだOSが選べる段階の方は、CentOS7系を選択することをお勧めします。
私は愚かなことに、よくみないで8系を選んでしまいました。そのため、説明はCentOS8で引き続き行います。

次回:準備中
前回:https://qiita.com/kkabosu386/items/94e560d9c68f3f4b35c8

参考・引用

http://blog.azumakuniyuki.org/2011/05/sshd-port-number-should-be-changed-to.html
https://qiita.com/picor/items/8823ecef51bf2aff327c
https://www.atmarkit.co.jp/ait/articles/1612/14/news022.html
https://qiita.com/picor/items/8823ecef51bf2aff327c
https://chibashi.me/development/centos8-ssh-2004/
https://blog.potproject.net/2020/03/25/centos8-docker-ce

1
0
0

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
1
0