#あらすじ
ConoHa VPSに登録
SSH接続できたことを確認
ConoHaVPS過去記事
https://qiita.com/kkabosu386/items/94e560d9c68f3f4b35c8
##作業用ユーザ作成
rootでログインできてしまうとセキュリティ的に問題があります。
そのため、rootに変わる作業用ユーザを作成していきます。
まずは前回同様ssh接続していきます。
$ 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
下記を追加していきます。
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
#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"/>
部分を以下に書き換えます。
<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番ポートから接続できるかテストしたいのですが、これまで作業してきたターミナルは閉じず、新しいものを開いて、そちらから接続確認をしてください。
$ 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