ConoHa VPSのサーバーを借りると最初にrootのパスワードを設定する必要があります。
しかし、この状態だと、パスワードさえ見つけてしまえば、第三者がサーバーに侵入することが可能になってしまいます。しかもrootユーザーなので、すべての設定変更が可能な状態となります。
まさしく乗っ取られてしまいます。
これを防ぐために、いくつかのセキュリティ対策を行いたいと思います。
- 暗号鍵によるアクセスの導入
- パスワードでのログインをやめる
- rootでのログインを不可にする
- ポート番号を変更して、SSHによるアクセスを難しくしておく
暗号鍵を作成する
ssh-keygen -t rsa -b 4096
これで秘密鍵と公開鍵が作成されます。
id_rsa
id_rsa.pub
のように2つ作成されます。.pubが公開鍵です。pubというのはpublicの頭3字ですね。
クライアントPCに秘密鍵を置いて、サーバー側に公開鍵を置きます。
SSHで接続を構築する際に、サーバー側に秘密鍵情報を渡し、公開鍵と整合性が取れればログインできるようになります。
秘密鍵を持っていないクライアントはサーバー側にログインを拒絶されるわけです。
パスワードによるログインを不可にする
ログイン名とパスワードによるログインというのは意外と危険です。
人間は記憶力に制限がありますので、ログイン名やパスワードをそれほど複雑にすることができません。
もっともよく使われているパスワードは”password”だという笑えない話があるぐらいです。
というわけで、パスワードでのログインを不可にします。
/etc/ssh/sshd_config の設定を変更します。
ポートの番号は必ず変えよう
SSHのデフォルトのポート番号は22です。
これは世界中誰もが知っている事実なので、悪意のある第三者はこのポート番号をめがけてハッキングを試みます。
このポート番号を変更しておけば、第三者にとって侵入するのは非常に難しくなります。
CentOS7になってからfirewalldによるセキュリティ設定が必要になっています。
ssh自体の設定は/etc/ssh/sshd_configを変更することで行なえます。
それに加えて、CentOS7ではポート番号を変更する際に、firewalldの設定を変更する必要があります。
初期状態ではfirewalldは/etc/firewalld/services/ssh.xmlを読み込んでいます。この設定をまず解除します。
sudo firewall-cmd --permanent --remove-service=ssh
これでfirewalldからsshの設定が解除されました。
もともとのssh.xmlファイルをコピーして自分用のssh-2323.xmlファイルを用意します。
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-2323.xml
ssh-2323.xmlの中身を変更します。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
port='22'をport='2323'に変更し保存します。
これをfirewalldに読み込みます。
sudo firewall-cmd --permanent --add-service=ssh-2323
SSHサービスとしてssh-2323.xmlを読み込んで、firewalldに永続的に(--permanent)設定を行うという意味です。
sudo firewall-cmd --reload
firewalldの設定を再読込します。
これでSSHでアクセスできるポート番号は2323に設定されました。
コメント