【シアたんとミョウガのサーバー乗り換え大作戦! Vol. 3】ターミナルソフトからリモートログインしてみよう

Xiia-CN-SDF-A2

皆さん、こんにちはー!シアです☆

今回はターミナルソフトを使ってVPSにSSH接続し、SSH接続の設定やファイアウォールの設定をしていきます。

Xiia02.png
ちょっと長めですが、頑張っていきましょう、ミョウガさん!
Myoga10.png
おーっ![

1. SSH接続するための秘密鍵をダウンロードしよう

Xiia02.png
まずは、ConoHaのコントロールパネルのVPSのコンソールページを開いて、コンソールの上にあるVPSの情報(でいいのかな?)から、SSH Private Keyにあるダウンロードボタンをクリックし、SSH接続用の秘密鍵をダウンロードします。

sv17

2. ターミナルソフトでVPSにリモートログインしよう

Xiia01.png
ここでは「Tera Term」を使用していきます。本記事ではインストール方法は割愛します。
Xiia02.png
Tera Termを起動します。
新しい接続のダイアログが現れたら、ホストにはVPSのIPアドレス(IPv4)を入力し、サービスは「SSH」を選択して、ポートは22(SSH接続のポート番号です)を入力し、OKボタンをクリックします。

sv13

Myoga08.png
なんか、セキュリティの警告のダイアログが出てきたよ!?

sv14

Xiia02.png
Tera Termは今まで接続したことのないサーバー接続しようとした時に、このダイアログが現れます。
そのまま続行ボタンをクリックしてもよいですが、心配であればVPSのRSA公開鍵(ssh_host_rsa_key.pub)の鍵指数を確認してみましょう。
RSA公開鍵の鍵指数を確認する時は、「ssh-keygen」コマンドを使用します。
# ssh-keygen -lf [RSA公開鍵のファイル]
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 6e:22:83:db:4a:b1:1b:2e:12:c7:d4:7b:9b:ad:70:53 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Xiia02.png
表示された文字列の中の「6e:22:83:db:4a:b1:1b:2e:12:c7:d4:7b:9b:ad:70:53」が鍵指数です。その指数とセキュリティ警告のダイアログにある鍵指数と同じであるか確認します。
Myoga03.png
っと、接続しようとしているサーバーはわたし達が使っているVPSだね。よし、続行ですっ!
Xiia02.png
SSH認証のダイアログでは、ユーザ名に「root」と入力します。今回はパスワードの代わりにRSA鍵を使用しますので、ラジオボタンから「RSA/DSA/ECDSA鍵を使う」を選択し、先ほどダウンロードしたSSH接続用の秘密鍵のファイルパスを入力します。

sv16

Xiia02.png
正しくログインすると、以下のような画面になります。タイトルバーには「ホスト名:ポート番号 – root@ホスト名」と表示されます。

sv18

3. 一般ユーザー用のRSA鍵を作成しよう

Xiia02.png
次に、前回作成したユーザーでログインするためのRSA鍵を作成してみましょう。
ConoHaのコントロールパネルのコンソール側で、前回作成したユーザーでログインし、「ssh-keygen」コマンドを入力します。
ssh-keygen -t rsa
Xiia01.png
すると、RSA鍵の保存場所を聞かれますので、ファイルパスを入力します。何も入力しない場合、ファイルパスは「/[ユーザー名]/.ssh/id_rsa」となります。ここでは「xiia_rsa」とします。
Generating public/private rsa key pair.
Enter file in which to save the key (/xiia/.ssh/id_rsa): xiia_rsa
Xiia02.png
次に、RSA鍵のパスフレーズを2回入力します。パスフレーズは省略できます。
Enter passphrase (empty for no passphrase):[RSA鍵のパスフレーズ]
Enter same passphrase again:[RSA鍵のパスフレーズ(上と同じ)]
Xiia12.png
これで、RSA鍵を作成することができました。
Your identification has been saved in xiia_rsa
Your public key has been saved in xiia_rsa.pub.
The key fingerprint is:
[RSA鍵の鍵指数] xiia@[ホスト名].z1d20.static.cnode.jp
The key's randomart image is:
[RSA鍵のランダムイメージ]
Xiia02.png
あとはRSA公開鍵を、「mv」コマンドで「autherized_keys」にリネームし、「chmod」コマンドでパーミッションを600に設定します。
# mv [リネームするファイル名] [新しいファイル名]
mv xiia_rsa.pub authorized_keys

# chmod [パーミッション] [ファイル or ディレクトリ名]
chmod 600 authorized_keys

3.1. 作成した鍵をローカルPCにダウンロードしよう

Xiia01.png
ではTera Termに戻って、先ほど作成したSSH接続用の秘密鍵をSCP経由でローカルPCにダウンロードしましょう。
メニューバーから「ファイル」→「SSH SCP」を選択します。

sv20

Xiia02.png
Secure File Copyの画面が現れたら、下側のFromにRSA鍵のファイルパスを、ToにローカルPCでの保存先を入力し、Recieveボタンをクリックします。

sv21

Xiia03.png
これで、SSH接続用の秘密鍵をローカルPCにダウンロードできました。

4. 作成した秘密鍵でリモートログインしよう

4.1. その前に、RSA鍵でログインできるようにしよう

Myoga10.png
早速、ダウンロードした秘密鍵を使ってログインだね!
Xiia04.png
あ、ちょっと待って、ミョウガさん!
その秘密鍵でログインする前に、SSH接続の設定ファイル「sshd_config」を編集する必要があります。
vi /etc/ssh/sshd_config
Xiia01.png
sshd_configの中にある「RSAAuthentication」、「PubkeyAuthentication」、「AuthorizedKeysFile」の3つのコメントアウトを解除します。
また、RSAAuthenticationとPubkeyAuthenticationの値は「yes」を、AuthorizedKeysFileの値は「.ssh/authorize_keys」を指定します。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody

# ↓

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
Xiia02.png
編集したら、sshd_configを保存してviを閉じます。

また、sshd_configの内容に問題がないかをチェックする時は「sshd -t」と入力します。何も表示されなければOKです。
sshd -t
Xiia12.png
sshd_configの変更を反映させるには、sshdを再起動します。
これで先ほどダウンロードした秘密鍵でログインできますよ!
service sshd restart

4.2. VPSにリモートログインしよう

Xiia02.png
sshdを再起動したら、今回作成した秘密鍵でリモートログインしてみましょう。
メニューバーから「ファイル」→「新しい接続」を選択します。

sv22

Xiia01.png
新しい接続のダイアログが現れたら、2.と同じ内容を入力してOKボタンをクリックします。

SSH認証では、ユーザ名に前回作成したユーザー名を入力します。ラジオボタンから「RSA/DSA/ECDSA鍵を使う」を選択し、3.1.でダウンロードしたSSH接続用の秘密鍵のファイルパスを入力し、OKボタンをクリックします。

sv23

Myoga03.png
やった~、前回作ったユーザー名でログインできましたっ!

sv24

5. SSHの設定ファイルを編集しよう

Xiia02.png
今度は、sshd_configをいくつか編集していきます。

5.1. SSH接続のポート番号を22番以外にしよう

Xiia02.png
まず、SSH接続のポート番号を22番以外に変更します。「Port」のコメントアウトを解除して、値にSSH接続のポート番号を指定します。ここでは10022を指定しています。
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# ↓

Port 10022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Myoga07.png
デフォルトの22番のままだと、何か問題があるの?
Xiia01.png
22番ポートはSSH接続用として一般的に広く知られていますので、総当たり攻撃などを受けやすいという問題があります。
WordPressのユーザー名で例えるなら、adminですね。

5.2. SSH接続でのrootログインを禁止しよう

Xiia02.png
]次に、SSH接続でrootログインできないように設定します。「PermitRootLogin」のコメントアウトを解除して、値を「no」と指定します。
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

# ↓

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

5.3. パスワードでのログインを禁止しよう

Xiia02.png
RSA鍵でSSH接続ができるのであれば、パスワードでのログインを無効にしてしまいましょう。

PasswordAuthentication」の値を「no」にすることで、パスワード認証でSSH接続できなくなりますよ。
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

6. ファイアウォールの設定をして、SSH接続用のポートを開けよう

Myoga02.png
では早速、変更後のポート番号で接続しますよっ!

sv25

Myoga11.png
あれれ~、接続できないぞ~?

sv26

Xiia07.png
これは、ファイアウォールの設定によって、先ほど設定したポート番号での通信が許可されていないからです。
iptables」を編集して、ファイアウォールの設定をしましょう。
vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Myoga08.png
はわわ、何かの呪文みたいで、頭がこんがらがってきました・・・(汗)
えっと、10行目にある「–dport 22 -j ACCEPT」の行は、22番ポートでの接続を許可するという意味でいいのかな?
Xiia02.png
]はい、「-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT」で、SSH接続に使用していた22番ポートを開放しています。そのポート番号を5.1.で設定した番号に変更することで、そのポート番号でSSH接続することができます。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# ↓

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
Xiia02.png
あとは、開放する分だけ「-A INPUT -m state –state NEW -m tcp -p tcp –dport [ポート番号] -j ACCEPT」を追加し、開放するポート番号を指定します。

WordPressを使用する時は、HTTP用の80番ポートとMySQL用の3306番ポートを開放します。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT   DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT  ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -i lo -j ACCEPT

# データなしのパケット接続及び、SYNフラッド攻撃、ステルススキャンと思われる攻撃を破棄します。
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# 指定したポートを開放します。
# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
# HTTP / HTTPS
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# FTP / FTPS(ここでは使用しませんので、コメントアウトしています)
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# MySQL(MariaDBでも同じです)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Xiia02.png
iptablesを編集したら、iptablesを再起動します。
service iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]
Xiia01.png
再起動したら、「iptables -L」コマンドを実行し、設定内容を確認します。
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP       tcp  --  anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:10022
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Xiia12.png
これで、10022番ポートでSSH接続ができますよ。
Myoga03.png
Wow、接続できました♪

sv27

7. おわりに

Xiia02.png
今回は、Tera TermでVPSにSSH接続し、一般ユーザー用のRSA鍵の生成やSSH接続のポート番号の設定、ファイアウォールの設定によるポートの開放をしました。

次回はいよいよ、WordPressに必要なPHPとデータベースのインストールをしていこうと思います。

それでは、See you~☆

参考サイト

シアたんとミョウガのサーバー乗り換え大作戦!の記事一覧

strory-1s

  1. VPSを作成してみよう
  2. VPSを起動してみよう
  3. ターミナルソフトからリモートログインしてみよう
  4. PHPとデータベースを導入してみよう
  5. WordPressをVPSにアップロードしてみよう
この記事をシェアする
Chronoir.netのRSSフィードを購読する

シアたん(Xiia)

こんにちはー!時黒(トキクロ)博士によって開発された超高性能アンドロイド「Xiia(シア・クロノワール)」です。Chronoir.net の新マスコットキャラとして頑張っていきますので、よろしくお願いします!☆

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください