さくらのVPSでサーバー構築(4)

VPSサーバーはレンタルサーバーと違って、セキュリティは自分で設定しなくてはいけません。サーバー攻撃を避けるためにも、セキュリティは確実に設定しましょう。

Sudoの設定

まず、rootユーザーでアクセスしないように、一般ユーザー(例:hide)を作成し、Sudoを設定します。

useradd hide
passwd hide
visudo
sudo vi /etc/ssh/sshd_config
sudo systemctl restart sshd
  1. 「useradd ユーザー名」で新規ユーザーを作成します。
  2. 「passwd ユーザー名」の後に、新規ユーザーのパスワードを2回入力します。
  3. 「visudo」コマンドで、Sudo設定ファイルを開き、最終行に「hide  ALL=(ALL) ALL」を追加します。
  4. 次に、rootユーザーのログインを禁止します。
  5. sudo vi /etc/ssh/sshd_config で設定ファイルを開き、『#PermitRootLogin yes』を『PermitRootLogin no』に変更します。
  6. sshサービスを再起動します。『sudo systemctl restart sshd』

これで、一般ユーザーにroot権限を委譲しました。root権限が必要なコマンドに関しては、先頭にsudoを付与して、コマンドを実行することができます。※パスワードを尋ねられた場合は、一般ユーザーのパスワードを入力します。

ファイアウォールの設定

CentOS6まではLinuxサーバ上でファイアウォールを稼働する場合、iptablesを使ったフィルタを実装するのが一般的でしたが、CentOS7では、新たなファイアウォールとしてfirewalldという機能が実装されました。このfirewalldは内部的にiptablesを利用しているのですが、firewalldとiptablesを併用することはできませんので注意が必要です。

このfirewalldは事前にゾーンというものを定義し、そのゾーンに対して許可するサービスを定義していきます。いろいろなゾーンがありますが、デフォルトのpublicゾーンに対して、定義を設定します。

それでは、現在のファイアウォールを確認してみましょう。

systemctl status firewalld

※Active:acitve(running)….となっている場合は、稼働中です。Activeになっていない場合は、下記の要領で稼働中にします。

systemctl start firewalld
systemctl enable firewalld

現在の設定を表示します。

firewall-cmd --list-all

下記のように表示されます。(環境によって異なります。)※デフォルトのpublicゾーンでは、dhcpv6-clientとsshのみがサービスとして許可されています。

public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

それでは、下記のようにして、httpサービスを追加します。

sudo firewall-cmd --add-service=http --permanent

successと表示されたら、OKです。下記のコマンドで稼働中のサービスのみを確認できます。

sudo firewall-cmd --reload
firewall-cmd --list-service

パスワード認証から鍵認証へ変更する

最近はパスワード総当たり攻撃が非常に多くなっています。そこで、より安全にサイトを管理するために、パスワード認証から、鍵認証へ変更しましょう。

一般ユーザーのまま、下記のコマンドを入力して、鍵ペアを作成します。

ssh-keygen -t rsa
  • 保存場所は、/home/ユーザー名/.ssh/id_rsa と入力します。
  • パスフレーズを設定します。(空のままでも設定できます。)

作成できているかどうか確認してみます。

ls .ssh
  • id_rsaとid_rsa.pubの2種類のファイルが作成されていると思います。

公開鍵の名前を変更し、パーミッションも変更します。

mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
  • 作成されたid_rsa.pubをauthorized_keysに変更します。
  • ファイルのパーミッションを、600に変更します。

次に、WinSCPで作成したid_rsaをローカルのPCにダウンロードします。ダウンロードの箇所は、どこでもいいのですが、例として、C:\Users\ユーザー名\.ssh\sakuraに保存します。

WinSCPの設定

  1. WinSCPを起動したら、新しいサイトをクリックし、ホスト名にVPSサーバーのIPアドレス、ユーザー名に一般ユーザー、パスワードに一般ユーザーのパスワードを入力します。
  2. 設定をクリックし、左メニューの認証をクリックします。
  3. 秘密鍵に、先ほどダウンロードしたid_rsaを選択して、OKをクリックします。
  4. すると、『この秘密鍵OpenSSH SSH-2をPutTTYgenでPuTTY形式の秘密鍵に交換しますか?』のダイアログが表示されますので、OKをクリックします。
  5. PuTTYgen:Enter Passphraseとパスフレーズを入力する小さなダイアログが表示されますので、先ほど鍵ペアを作成するときに入力したパスフレーズを入力します。
  6. 『Successfully imported foreign key…』と表示されたら、PuTTYgen形式の秘密鍵が完成しましたので、OKをクリックします。
  7. PuTTY Key Generatorが起動したら、『Save private key』ボタンをクリックし、C:\Users\ユーザー名\.ssh\sakuraに名前を付けて保存します。例:sakura.ppk
  8. 保存したら、PuTTY Key Generatorを終了します。
  9. WinSCPの画面に戻ったら、今保存した秘密鍵を選択して、OKをクリックします。
  10. トップに戻ったら、保存して、ログインボタンをクリックするとサイトにログインすることができます。

Rloginの設定

次にRLoginを設定します。

  1. ファイル→サーバーに接続から、今まで、使用していたサーバーを選択し、編集ボタンをクリックします。
  2. SSH Identity Keyの参照(K)ボタンをクリックします。
  3. C:\Users\ユーザー名\.ssh\sakuraフォルダのid_rsaファイルか、sakura.ppkファイルを選択します。
  4. OKボタンをクリックすると、サーバーに接続することができます。

パスワード認証の禁止

上記の設定が完成したら、パスワード認証を禁止し、鍵認証でのみ認証できるように環境ファイルを変更します。

sudo vi /etc/ssh/sshd_config
  • 77行目のパスワード認証の箇所を探します。
  • #PasswordAuthentication yes
  • 下記のように変更します。
  • PasswordAuthentication no

ファイルを保存したら、sshdを再起動します。

sudo systemctl restart sshd

これで、一応基本的なセキュリティ対策は、OKです。それでは、快適なVPSサーバー生活をお楽しみ下さい。

タグ

2016年6月27日 | コメント/トラックバック(0) |

カテゴリー:CentOS さくらのVPS

このページの先頭へ