IaaS(さくらのクラウド)を立てて最低限の設定を行う
「IaaS(さくらのクラウド)を立てて最低限の設定を行う」
目標:さくらのクラウドで最低限のセキュリティとssh,sftpで接続できるようにする
目次:
1.さくらのサーバーを立てる
2.セキュリティを確保する
1.さくらのクラウドサーバーを立てる
(さくらのアカウント作成の流れには触れません。)
素晴らしいチュートリアルがあったので、基本的にはこれに従います。 参照されている画面が過去のUIなんで、そこは少し考えながらやりました。
まずはリージョンを指定して、サーバを追加します。
"シンプルモード"であれば、ホスト名やrootパスワード、スペック、OS、NICを決めるだけでサーバが追加できました。
SSHの公開鍵の登録もこのタイミングで可能でした。
自分は以下の通り設定。
サーバ作成には少し時間がかかります。
サーバが出来上がると、IPアドレスが払い出されています。
出来上がったサーバーを起動して、ターミナルから以下のコマンドでログイン。
$ ssh -p 22 root@"払い出されたIPアドレス" # -pはポート番号を指定するsshコマンドのオプション。ssh接続のデフォルトポートは22番 # パスワードの入力を要求されるので、先ほど設定したものを入力。 $ yum -y update # いちおOSをアップデートしておきます。
2.セキュリティを確保する
root権限でのログインができるままだと、rootを乗っ取られたらおしまいなのでrootでのログインを禁止します。 その代わり、ログイン後にrootになれる権限を作成しておくことでrootの作業はできるようにしておきます。
まずは、一般ユーザを作成します。
$ adduser "作成するユーザの名前" $ passwd "作成したユーザの名前" New password: Retype new password: # 2回パスワードの入力を要求されるので、同じものを入力します。
一度ログアウトして"作成したユーザの名前"(ここでは便宜的にsakuseiという名前にします)で入り直します。
そのあとsu -
コマンドを使ってスーパーユーザー(root)に成れることを確認します。
$ exit $ ssh -p 22 sakusei@"IPアドレス" $ su - # "$"の左側にrootナンチャラと書いてあればrootに成れてます。
しかし、このままでは誰でもsu -
と入力すればrootに成れるのでセキュリティはザルです。
なので、このsu -
を使えるユーザを制限します。
wheelというグループにsakusei君を入れてwheelグループしかsu -
コマンドを使えないように制限します。
$ groups sakusei # sakuseiというユーザが属しているグループを確認します(何もしていなければsakuseiというグループだけに属しているはず)。 $ usermod -aG wheel sakusei # sakuseiの補助グループにwheelを追加します。 $ groups sakusei # wheelグループが追加されたことを確認します。 $ vi /etc/pam.d/su # 上記ファイルを編集します。 # 6行目くらいにある"# auth required pam_wheel.so use_uid"の#を消してコメントアウトを解除して保存
これで、wheelグループに属さないユーザはsu -
使えません。しかも上記設定はroot権限でなければ変更できないので、セキュリティが向上しました。
これで、最後にrootの直sshログインを禁止したら完璧です。
そのために、以下のようにssh_configを編集します。
$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old # 何があるかわからないのでコピーしておきます。 $ vi /etc/ssh/sshd_config # 上記ファイルの中ほどに"#PermitRootLogin yes"という行があるので"PermitRootLogin no"に変更して保存します。 $ service sshd restart # 設定を書き換えたのでsshサーバーを再起動して完了です。
これで、rootが脅かされることは無くなりました。
あとは、サーバーにファイルをアップダウンロードする時に使うsftp(sshのプロトコルを使ってファイル転送する)のデフォルトポートを変更することで少し安全性を高めます。
編集するのはやはり/etc/ssh/sshd_config
です。
$ vi /etc/ssh/sshd_config # 中ほどに"#Port 22"という行があるので"Port 2222"に変更して保存します。 $ service sshd restart # 設定を書き換えたのでsshサーバーを再起動します。
上記ではPort番号を"2222"にしていますが、予約ポートでなければ何番でもOKです。
ポートはWikipediaに詳しく書いてあります。
ここまでやると、以下のようにsshログインすることができるようになります。
$ ssh -p 2222 sakusei@"IPアドレス"
冷静に考えるとIPアドレス宛にアクセスしようとしているのも危うい気がしますが、今後勉強して改善していきます。 以上です。
2016/06/27加筆:
sshd_configを変更しただけでfirewallに阻まれてssh接続できないことに気づきました(遅い!)
したがって、補足としてiptablesの変更方法も記載します。
と言うか、CentOs6の場合sshd_configを変更したら、必ずiptaplesの変更も必要です。
$ vi /etc/sysconfig/iptables # firewallの設定を変更するためiptablesを編集します。
iptablesに以下の行を書き足してください。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
自分は以下のように書き足しました。
/etc/sysconfig/iptables
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :fail2ban-SSH - [0:0] -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH -A INPUT -p TCP -m state --state NEW ! --syn -j DROP -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p udp --sport 123 --dport 123 -j ACCEPT -A INPUT -p udp --sport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT -A fail2ban-SSH -j RETURN COMMIT
ここまでやったら設定変更を反映するためにiptables(いちおsshdも)を再起動します。
$ service iptables restart # iptablesの再起動 $ service sshd restart # sshサーバーを再起動。
結構致命的なところが漏れていました。。。
参考にさせて頂いたのはこちらのサイトです。
SSH 接続のポート番号を変更 〜 CentOS6 | EasyRamble
その他お世話になったサイト
SSHのポート番号を変更 - SSHサーバーの設定
SSHで接続しようとすると connection refused と表示される
「サーバーをさわってみよう!」~初心者でもよくわかる!VPSによるWebサーバー構築講座(2)
LinuxTips/昇格可能ユーザーを制限したい