前回はまっさらな端末に CentOS 7 のインストールを行いました。
Webサーバとして使うことが目的のため、早速 Nginx や PHP-FPM のインストールに入りたいところですが、まだ少し設定が残っています。
この設定はなくても困ることはありませんが、設定をすることで格段に効率がアップしますので、設定しておくことをおすすめします。
SSHで接続
さくらのクラウドは仮想マシンを使用しており、コントロールパネルにはリモートコンソールも用意されていますが、さすがにこのコンソールのみでの操作は疲れてしまいます。
そこで、SSH接続の設定を行いましょう。
SSH接続は、 Mac であれば標準でついている「ターミナル.app」、 Windows なら Tera Term、あるいは、ウェブブラウザGoogleChromeの拡張機能「Secure Shell」で行うことができます。
ここでは、ローカルのマシンに Mac を使用することを想定しています。
ターミナルを起動し、SSH で root にログインします。
1 2 3 4 |
$ ssh root@(クラウドのIPアドレス) The authenticity of host 'xxx.xxx.xxx.xxx' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? |
初めての接続では、「本当に接続しますか?」といったメッセージが表示されるので、
“yes” と入力してエンターキーを押します。
すると、root でログインすることができます。
ログインしたついでに、パッケージのアップデートが来ていないか確認(インストール)しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ yum -y update 読み込んだプラグイン:fastestmirror base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp No packages marked for update ~~中略~~ 完了しました! |
アップデートが完了しました。
ユーザーの作成
次に、CentOS に root 以外のユーザーを作り、パスワードを設定します。
今後 root でのログインを禁止するため、ここで設定するユーザー名とパスワードは覚えておいてください。
1 2 3 4 5 6 7 |
$ useradd hogehoge(←作成したいユーザー名) $ passwd hogehoge(←useraddで指定したユーザー名) ユーザー hogehoge のパスワードを変更。 新しいパスワード:(8文字以上のパスワードを入力) 新しいパスワードを再入力してください:(再度同じパスワードを入力) passwd: すべての認証トークンが正しく更新できました。 |
パスワードを入力するときは、入力パスワードの内容や桁数などは表示されません。
入力ミスに注意しましょう。
ついでに、作成したユーザーディレクトリに ssh の公開鍵をアップロードするためのディレクトリを作成します。
1 2 3 |
$ su hogehoge(作成したユーザー名) $ cd $ mkdir .ssh |
更にここで、 vim のインストールをしておくと便利です。
vim のインストールについては、別のエントリーで紹介します。
SSHの設定
SSHキーの作成
SSHでの不正なアクセスを防ぐなど、セキュリティを高めるために公開鍵認証でのログイン方法に切替え、パスワード認証ログインを使えないようにします。
これにより、鍵を持っている端末のみでしかログインができないようになります。
一度、現在接続中のSSHからログアウトします。
1 2 3 |
$ exit ログアウト Connection to xxx.xxx.xxx.xxx closed. |
ここからはローカルでの作業になります。
既にローカルのユーザーディレクトリ直下、.ssh ディレクトリの中既に鍵がある場合は、この作業は必要ありません。
(システムファイルを表示した状態でないと表示されませんので注意)
1 2 3 4 5 |
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/username/.ssh/id_rsa):(空のままエンター) Enter passphrase (empty for no passphrase):(空のままエンター) Enter same passphrase again: (空のままエンター) |
鍵の作成に成功すると、アスキーアートのようなテキストが表示されます。
ユーザディレクトリの中の .ssh ディレクトリを見ると、 id_rsa (秘密鍵)と id_rsa.pub (公開鍵)の2つのファイルが作成されています。
このうち、 adduser で作成したユーザーで、 id_rsa.pub をアップロードします。
これが「作業用ユーザー」ということになります。
1 |
$ scp ~/.ssh/id_rsa.pub hogehoge@(クラウドのIPアドレス):~/.ssh/ |
パスワードを求められたら passwd で設定したパスワードを入力します。
アップロードが完了したら、作業用ユーザー名でログインをします。
1 |
$ ssh hogehoge@(クラウドのIPアドレス) |
パスワードを求められるので、入力します。
公開鍵の名前を、リネームし、アクセス権も変更します。
1 2 3 |
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys |
“autohrized_keys” とは、公開鍵の保管を行う他、ユーザーがログインしたら自動実行するファイルの情報などを保管しておくための場所です。ログインユーザーと結びつけるために、1つのファイルにまとめておくんですね(たぶん)。
設定ファイルの編集
SSHの設定ファイルの編集を行い、ログインユーザーを限定していきます。
1 2 3 |
$ su パスワード:( root のパスワードを入力) $ vim /etc/ssh/sshd_config |
54行目、55行目のコメントアウトを外します。
54 55 |
# RSAAuthentication yes # PubkeyAuthentication yes |
↓
54 55 |
RSAAuthentication yes PubkeyAuthentication yes |
書き換えて保存をしたら、sshdを再起動します。
1 |
$ systemctl restart sshd.service |
いったんSSHをログアウトし、再度作業ユーザーでログインします。
1 |
$ ssh hogehoge@(クラウドのIPアドレス) |
再度ログインしたら、SSHの設定ファイルを開きます。
1 2 3 |
$ su パスワード:( root のパスワードを入力) $ vim /etc/ssh/sshd_config |
SSH での root でのログインを禁止します。49行目に設定項目があります。
49 |
#PermitRootLogin yes |
↓rootでのログインを禁止
49 |
PermitRootLogin no |
パスワード認証でのログインを禁止します。79行目に設定項目があります。
79 |
#PasswordAuthentication yes |
↓パスワード認証ログインを禁止
79 |
PasswordAuthentication no |
SSHのポート変更
※ 2016年11月22日追記
最近このブログの CentOS7 に Vim エディタをインストールや この記事へのアクセスが多くあります。何故だろう…。
そこで、特にこの記事ではひとつ書いていなかったことがあるので追記しておきます。それが、「SSHのポート変更」です。
SSHのポート変更は、セキュリティの面や、アタックされたときの負荷対策に有効なものです。
なお、この作業は SELinxu が disabledでなければ有効化できません。(もっと適切な方法があるのかもしれませんが、これが手軽な方法です)
1 |
$ vim /etc/selinux/config |
1 2 3 4 5 6 7 8 9 10 11 12 |
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing(←コメントアウトして) SELINUX=disabled(←これを追加) # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protec ted. # mls - Multi Level Security protection. SELINUXTYPE=targeted |
SELinux の設定が確認できたら、まず、SSHの設定ファイルを開きます。
1 2 3 |
$ su パスワード:(rootのパスワードを入力) $ vim /etc/ssh/sshd_config |
上記を入力して出てきた設定ファイルの中から、
1 |
#Port 22 |
という部分を探して、ポート番号を変更し、先頭の # を外します。
1 |
Port 12345(例) |
更に、 firewalld の設定も変更します。
firewalld の設定ファイルは
1 |
/usr/lib/firewalld/services/ssh.xml |
にあります。この中に
1 2 3 4 5 6 |
<?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 firewalld interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/> </service> |
と書かれています。
この内容を変更すればよいのですが、実はこのファイルそのものを変更してはいけいないことになっています。
そこで、以下のようにします。
1 |
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml |
設定ファイルを /etc/firewalld/services/ssh.xml にコピーし、内容を書き換えます。
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executi ng commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalld in terface, enable this option. You need the openssh-server package installed f or this option to be useful.</description> <port protocol="tcp" port="12345"/> </service> |
SSHD の再起動と、 Firewall の設定反映のコマンドを入力します。
1 2 |
$ systemctl restart sshd.service $ firewall-cmd --reload |
これで SSH の設定ができました。
なお、ポート番号にはそれぞれ決まりがあります。使用できるポート番号は限られていますので、 Wikipedia 等で調べてみてください。
参考サイト
お名前VPSにCentOS 7をインストールしてWebサイトを作ってみた – Qiita
authorized_keys ファイルについて調べてみたら楽しかった. – それマグで!
今まで知らずに損してたauthorized_keysの書き方 – Qiita
CentOS7のfirewalldでsshのポート番号を変更する方法 – Qiita
SSH待ち受けポート変更 | server-memo.net
ピンバック: 初心者の私がマストドンでインスタンスを立てる際に閲覧した全50サイトをご紹介 | 映画監督山下大裕の2020年全国公開への道