前回までの記事で、VPSへssh接続できるようになりました。しかし、その状態ではセキュリティ的にちょっと問題があります。今回は、最低限のセキュリティ設定を行い、できるだけ安全にVPSを使用できるようにする手順を紹介します。
注意事項
コマンドに関して、rootユーザで実行しているコマンドの先頭にはなにも文字列を付加していません。一般ユーザで実行しているコマンドに関しては、先頭に「$」を表示しています。このページで言うと「番外編:作成ユーザのログインシェル」でのみ、一般ユーザのコマンドが存在します。
ファイルの修正前には基本的にバックアップのコマンドを入れています。何か失敗したときに、すぐに元の状態に戻すことができますので、ぜひバックアップをとってからファイルを修正するような習慣をつけましょう。
一般ユーザの作成
次の工程で、rootによるログインを無効化するため、先に一般ユーザを作成しておきます。自分の名前なんかで作ってもいいと思います。
[bash title="※rootユーザ"]useradd user01 -d /home/user01 -m
passwd user01[/bash]
ここで、作成したuser01のパスワードを聞かれますので、自分の好きなパスワードを設定してください。
新しいUNIXパスワードを入力してください:(入力)
新しいUNIX パスワードを再入力してください:(入力)
passwd: password updated successfully
以上のようなメッセージが出力されれば、ユーザの作成は完了です。
sshdの設定
まずは、sshdの設定を行います。
sshdの設定では、主に以下の3点について設定します。
- sshのポート番号を変更
- rootログインの無効化
- X11フォワードの無効化
sshdの設定変更は、/etc/ssh/sshd_configファイルの修正により行います。
[bash title="①バックアップ"]cd /etc/ssh/
cp -p sshd_config sshd_config.20130803[/bash]
※バックアップファイル名は適宜変更してください。
[bash title="②sshd_configファイルの修正"]vi sshd_config[/bash]
■sshのポート番号を変更
5行目あたりにsshに使用するポート番号についての記述があります。
[text title="変更前"]Port 22[/text]
上記の『22』という数字を、適当な数字に変更してください。いわゆるWELL KNOWNポートは使用できませんので、1024~65535の範囲ですね。例としては以下のような感じです。
[text title="変更後"]Port 10358[/text]
■rootログインの無効化
続いて、rootログインの無効化に関する記述は28行目あたりです。以下のような記述があります。
[text title="sshd_config:変更前"]PermitRootLogin yes[/text]
これに関しては以下のように拒否する設定に変更しましょう。
[text title="sshd_config:変更後"]PermitRootLogin no[/text]
■X11フォワードの無効化
最後に、X11フォワードの無効化については65行目あたり。
[text title="sshd_config:変更前"]X11Forwarding yes
X11DisplayOffset 10[/text]
以下のような感じで修正しておきましょう。
[text title="sshd_config変更後"]X11Forwarding no
#X11DisplayOffset 10[/text]
以上の修正が終わったらsshd_configを保存し、sshサービスを再起動させましょう。
[bash title="sshサービス再起動"]service ssh reload[/bash]
rootになれるグループを限定する
特定のグループでのみrootになれるよう設定します。今回そのグループを「wheel」としています。
①まずは、wheelグループを作成し、作成したユーザと、rootユーザをwheelグループに追加します。
[bash title="wheelグループの作成"]groupadd -g 999 wheel[/bash]
[bash title="作成ユーザをwheelグループに追加"]usermod -G wheel user01[/bash]
[bash title="rootユーザもwheelグループへ追加"]usermod -G wheel root[/bash]
②続いて、PAMの設定に移ります。suファイルを修正します。
[bash]cd /etc/pam.d/
cp su su.20130803
vi su[/bash]
15行目あたりを修正します。コメントを解除するのみです。
[text title="su:変更前"]# auth required pam_wheel.so[/text]
[text title="su:変更後"]auth required pam_wheel.so[/text]
Ubuntuを最新にアップデート
Ubuntuを最新にアップデートするには以下の2つのコマンドを実行します。
[bash]apt-get update
apt-get upgrade[/bash]
upgradeの際、継続するかどうか入力を求められるので、以下のように「y」と入力し、Enterキーを押してください。
Do you want to continue [Y/n]? y
日本語対応
以下のようにコマンドを実行していきましょう。
[bash]apt-get -y install language-pack-ja
dpkg-reconfigure locales
update-locale LANG=ja_JP.UTF-8[/bash]
不要なサービス停止
サービス制御ユーティリティ「sysv-sc-conf」を導入し、不要なサービスをOFFにしていきましょう。
[bash]apt-get -y install sysv-rc-conf
sysv-rc-conf dns-clean off
sysv-rc-conf grub-common off
sysv-rc-conf ondemand off
sysv-rc-conf pppd-dns off
sysv-rc-conf rsync off[/bash]
不要なコンソールを無効にする
仮想コンソールはtty1だけ残して、後は無効化しておきましょう。tty2~tty6に関して設定ファイルを修正します。
[bash]cd /etc/init
cp -p tty2.conf tty2.conf.20130803
cp -p tty3.conf tty3.conf.20130803
cp -p tty4.conf tty4.conf.20130803
cp -p tty5.conf tty5.conf.20130803
cp -p tty6.conf tty6.conf.20130803
vi tty2.conf
vi tty3.conf
vi tty4.conf
vi tty5.conf
vi tty6.conf[/bash]
tty2.conf~tty4.confは修正内容が同じで、tty5とtty6も修正内容が同じでしたので、それぞれまとめて修正内容を記載します。また、修正内容はコメントアウトするだけですので、修正後の内容を以下に記載します。
tty2.conf~tty4.confは6行目あたりからが修正対象です。
[text title="tty2.conf~tty4.conf:変更後"]#start on runlevel [23] and (
# not-container or
# container CONTAINER=lxc or
# container CONTAINER=lxc-libvirt)[/text]
tty5.confおよびtty6.confの修正箇所も6行目あたりです。
[text title="tty5.confおよびtty6.conf:変更後"]#start on runlevel [23] and not-container[/text]
番外編:作成ユーザのログインシェルを変更する
私の場合、作成したユーザのログインシェルがbashではなかったので、bashに変更しておきました。(bashは非常に扱いやすいので・・・。)
[bash]su - user01
$ chsh -s /bin/bash[/bash]
これで、次回ログインから、シェルがbashになっているはずです。
長くなりましたので、セキュリティの設定編については2回に分けます。あと残っているのはiptablesによるパケットフィルタリングの設定です。外部からの接続は必要最低限しか許可しないよう設定をいれます。
そういうわけで、次回はセキュリティの設定 その2として、iptablesの設定について書きたいと思います。