はね丸のWEB工房

さくらのVPSでCentOS 6のセキュリティ設定とSSH鍵認証の接続環境を構築と題して、情報共有をします

はね丸のWEB工房サーバ設定や運営>投稿記事を個別表示

このエントリーをはてなブックマークに追加

さくらのVPSコントロールパネル


さくらのVPSを借りてサーバ構築を行うための申し込み方法と準備」の続きになります。
前回でさくらのVPSに申し込み、VPSを借りることが出来ました。

またサーバ構築に必須のSSHクライアント「Tera Term」をインストールしましたので、今回はいよいよVPSの内部に入っていきます。

今回はCentOS 6のセキュリティ対策を中心とした初期設定と、Tera Termによる鍵認証を使用したSSH接続環境を構築します。

スポンサーリンク

OSはさくらのVPS標準のCentOS 6を使用

さくらのVPSでは、標準インストールされているCentOS 6以外にUbuntu、Scientific Linux、FreeBSD、Debianなど複数のOSが選択肢としてあります。

今回は初心者向けということもありまして、標準インストールされているCentOS 6を使用します。
これであればインストール作業自体不要となりますので、作業負荷が軽減されますし、余計なミスで手間取ることも回避できます。

またCentOS 6を使用するのはただ便利というだけではなく、安定性やメンテナンス性に優れているからでもあります。
CentOSはRed Hat Enterprise Linux(RHEL)のクローンです。
RHELは企業向けの製品版になりますので、商用としてのセキュリティ対策や定期的なアップデートが行われています。
そのRHELをベースとしているCentOSは、無料OSとはいえ商用製品と同等の品質を持っていることになります。

メンテナンスの更新(Windowsでいうサポート期間?)も6~7年と長いですので、同一バージョンを長く使い続けられるのも魅力ですね。


さくらのVPSの標準OSということは、さくらインターネットとしてもオススメのOSということだと思いますので、まず間違いないと思います。
VPSに慣れたら、新しいOSにチャレンジしても遅くはないでしょう。


さくらのVPSのサーバを起動して接続する

では早速さくらのVPSの仮想サーバを起動しましょう。



さくらのVPSログインページ

さくらインターネットVPSコントロールパネル」にアクセスし、VPS申し込み後に送られてきたメール「[さくらのVPS] 仮登録完了のお知らせ」に書かれた「IPアドレス」と「パスワード」を入力して、「ログイン」ボタンをクリックします。



さくらインターネットVPSコントロールパネル

仮想サーバは停止状態ですので、「起動」ボタンをクリックして仮想サーバを起動します。
起動には10分ほどかかりますので、時間をおいてTera Termを起動してください。

現在の仮想サーバはセキュリティ対策のされていない、無防備な状態になっています。
本記事の設定が全て終わらない状態で作業を中断する際には、その間は仮想サーバを停止させておくことをオススメします。



Tera Termログイン

「ホスト」にIPアドレスを入力し、「OK」ボタンをクリックします。



Tera Termログイン2

初回のアクセス時に上図のような画面が出ますが、「続行」ボタンをクリックして先に進みます。



Tera Termログイン認証

「ユーザ名」と「パスフレーズ」に、「[さくらのVPS] 仮登録完了のお知らせ」に書かれた「[管理用ユーザ]」の「ユーザ名」と「初期パスワード」を入力して、「OK」ボタンをクリックします。


これでさくらのVPSの仮想サーバにログインできたはずです。


管理用ユーザのパスワードを変更する

管理用ユーザはroot権限を持っているため、万が一アカウントを乗っ取られてしまった場合は大変なことになってしまいます。
初期パスワードもランダムで作られたものですが、セキュリティ対策として管理用ユーザのパスワードを変更します。

# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
#


赤字の「passwd」と入力し、パスワード変更をします。
「New password:」と聞かれますので、新しいパスワードを入れましょう。
記号を含む英数字が使用できますので、それを織り交ぜて16文字以上で設定するのが望ましいです。

入力中は画面に何も表示されませんが、問題なく入力されていますので気にしないでください。


「Retype new password:」ともう1度聞かれますので、同じパスワードをもう1度入力します。


# exit
logout


赤字の「exit」と入力し、1度ログアウトをします。

再度Tera Termを起動して、管理用ユーザでログインしましょう。
その際のパスフレーズ(パスワード)は、先ほど変更した新しいパスワードになります。

問題なくログインできれば、パスワードの変更は成功しています。


作業用ユーザの作成やsu制限の設定を行う

管理用ユーザはなんでも出来てしまうため、ちょっとしたミスでシステムを壊す危険性すらあります。
そこで作業用ユーザを作成し、なるべく作業用ユーザを使用して作業するようにします。


# useradd hanemaru
# passwd hanemaru
Changing password for user hanemaru.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
#


赤字の「useradd」を使用し、「hanemaru」というユーザを作成しています。

続いて「passwd hanemaru」と入力して、「hanemaru」のパスワードを設定します。
ここは管理用ユーザのパスワード変更と同じように、2度入力することになります。
セキュリティの観点から、管理用ユーザとは別のパスワードにしてください。


次に管理用ユーザへの昇格を、今作成した作業用ユーザに限定するようにします。


# usermod -G wheel hanemaru
#


「usermod -G wheel hanemaru」と入力して、作業用ユーザを管理者グループへと追加します。


# vi /etc/pam.d/su


「vi /etc/pam.d/su」と入力し、ユーザ切り替えを行う「su」の設定ファイルを開きます。

「vi」というのはテキストエディタなのですが、操作がかなり独特です。
操作説明は下記からどうぞ。

viエディタの使い方


# auth required pam_wheel.so use_uid


となっている部分を


auth required pam_wheel.so use_uid


先頭の「#」を削除して、上記の状態にして保存します。


sudoコマンドの設定を行う

root権限が必要な場合、suコマンドを使用して管理用ユーザに切り替えて作業を行う必要がありますが、前述したように危険が伴います。
その問題を回避するために、UNIX系OSには「sudo」コマンドという代替手段が用意されています。

sudoコマンドのメリットは以下のとおり。

・管理者権限は短時間で自動的に破棄される。

・sudoコマンド実行ログが残り、何か不具合が発生した際にどのようなコマンドを実行したのかを確認することができる。システム監視の意味でも有用。

・大きな変更を加える際、パスワードの入力を求められるようにすることで、ユーザは何をしようとしているか再認識することができる。

・ユーザを管理者グループに追加・削除することにより、管理者権限を持つことのできるユーザーを限定できる。

・rootアカウントでのログインを無効にしている場合、パスワードの総当たりなど、強引な手法でシステムに侵入を試みるクラッカーがrootアカウントで侵入できない。


# visudo


「visudo」と入力し、「sudo」の設定ファイルを開きます。
viとsudoの間にスペースが無いことに注意してください。


## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL


となっている部分を


## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL


先頭の「#」を削除して、上記の状態にして保存します。


Tera TermでSSH鍵を生成してサーバへ公開鍵を保存

今現在Tera TermからSSH接続する際は、「ユーザ名」と「パスフレーズ」を入力してログインしています。
仮想サーバへの接続をより強固なものとするために、ユーザ名とパスワードのログインを禁止して公開鍵認証でのログインのみへと変更します。

鍵ファイルを作成するため、Tera Termを起動します。
接続ダイアログが開きますが、「キャンセル」ボタンでキャンセルしてください。



Tera TermでSSH鍵生成

「設定」-「SSH鍵生成」をクリックします。



Tera TermでSSH鍵生成2

「生成」ボタンをクリックします。



Tera TermでSSH鍵生成3

しばらくすると「鍵を生成しました。」と表示されますので、「パスフレーズ」を入力し、「公開鍵の保存」ボタン「秘密鍵の保存」ボタンをそれぞれクリックして、鍵ファイルを保存します。

ここで指定するパスフレーズは、鍵専用のものとして新しく設定してください。
今まで設定した管理用ユーザや作業用ユーザとは、別のパスワードにした方が好ましいです。

公開鍵のファイル名は「id_rsa.pub」、秘密鍵のファイル名は「id_rsa」となっているはずです。


続いてTera Termで仮想サーバにログインします。



Tera Termログイン認証

今回も「ユーザ名」と「パスフレーズ」を使ってログインします。
ただしユーザ名とパスフレーズは管理用ユーザではなく、作業用ユーザ(ここではhanemaru)になります。


$ pwd
/home/hanemaru
$


まず「pwd」コマンドを使用して、現在位置を確認します。
何も操作していなければ、「/home/作業用ユーザ名」と作業用ユーザのホームディレクトリに居るはずです。


$ ls -al
total 20
drwx------ 2 hanemaru hanemaru 4096 Jan 8 20:10 .
drwxr-xr-x. 3 root root 4096 Jan 8 20:10 ..
-rw-r--r-- 1 hanemaru hanemaru 18 May 11 2012 .bash_logout
-rw-r--r-- 1 hanemaru hanemaru 176 May 11 2012 .bash_profile
-rw-r--r-- 1 hanemaru hanemaru 124 May 11 2012 .bashrc
$


念のため「ls」コマンドで、ホームディレクトリの中身を確認し、


$ mkdir .ssh
$ chmod 700 .ssh
$ ls -al
total 24
drwx------ 3 hanemaru hanemaru 4096 Jan 8 20:36 .
drwxr-xr-x. 3 root root 4096 Jan 8 20:10 ..
-rw-r--r-- 1 hanemaru hanemaru 18 May 11 2012 .bash_logout
-rw-r--r-- 1 hanemaru hanemaru 176 May 11 2012 .bash_profile
-rw-r--r-- 1 hanemaru hanemaru 124 May 11 2012 .bashrc
drwx------ 2 hanemaru hanemaru 4096 Jan 8 20:36 .ssh
$


「mkdir」コマンドで公開鍵格納用のディレクトリ「.ssh」を作成します。

「chmod」コマンドで「.ssh」のパーミッション(アクセス権)を変更します。
700は所有者のみ読み・書き・実行の許可を意味します。

最後に作業で問題がなかったかを「ls」コマンドで確認します。


$ cd .ssh
$ vi authorized_keys


「cd」コマンドで公開鍵格納用のディレクトリ「.ssh」へ移動し、「vi」コマンドで公開鍵ファイル「authorized_keys」を作成します。
新規ですので中身は空なので、Tera Termで作成した公開鍵「id_rsa.pub」の中身をコピーして貼り付けます。


ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyBuq2g2yLvTgoN/TCm9ro48CfTXnODk6m9kWzfGkeeDp35fE9/ilTWkguSR4d3VQwahVrdMXeN7MbrmE1Z1o224flMewYFxduKY6gmJgzKn6KMIn60nXTRVnv21Ms1AO8zFaSlycB4Tzwz+9sHsHnu0BpRUOdyjDZJzFkwm8gS1/xVEZjPI3kigkdCahdXYO9cuN2k6uxKpKLM6Alk21ZMp+Ok1WzXHaypq89ELT4fLlLedDCQh5p8QkHe++sk9MfAYm4rGTWq3z4wEMZSrQnOW+tnEmz0h0/P7znXXS+fqQ4Gumnnm2KVZ+5UPqAiHjt7gzzFYKlnBZh8qP0d2idQ== sdsadasd@sfewgbfyhd-PC


作成する度に内容は変わりますが、参考までに上記のような文字列が書かれていると思います。
あくまで上記はサンプルですので、これを貼り付けても動きませんのでご注意ください。

コピーして貼り付けた後は保存をして、


$ chmod 600 authorized_keys
$


「chmod」コマンドで「authorized_keys」のパーミッション(アクセス権)を変更します。


SSH接続ポートの変更や公開鍵認証ログイン以外禁止などセキュリティ対策

ユーザ名とパスワードのログインを禁止して公開鍵認証ログインのみとするだけでなく、接続のポート番号変更や管理用ユーザでのログイン禁止など、サーバ侵入を難しくする設定を行います。


$ sudo vi /etc/ssh/sshd_config
[sudo] password for hanemaru:


「vi」コマンドでSSHの設定ファイル「sshd_config」を編集します。

このファイルの所有者は管理用ユーザになりますので、「sudo」コマンドを使用して管理者権限を行使します。
ログインしてからの初回や一定の時間が経ちますと、sudoの際にパスワードを聞かれます。
このパスワードは管理用ユーザのものではなく、作業用ユーザ(ここではhanemaru)のパスワードを入力します。

#Port 22


となっている部分を


Port 25463


と修正し、SSHのポート番号を変更します。
ポート番号は好きな数字で設定できますが、1024までは予約されたポート番号が犇めき合っていますので、安全を取って10000~65535までの数字で指定してください。


#PermitRootLogin yes


となっている部分を


PermitRootLogin no


と修正し、管理用ユーザでのログインを禁止にします。


#PermitEmptyPasswords no


となっている部分を


PermitEmptyPasswords no


と修正し、パスワード無しでのログインを禁止します。


PasswordAuthentication yes


となっている部分を


PasswordAuthentication no


と修正し、ユーザ名とパスワードでのログインを禁止します。


UsePAM yes


となっている部分を


UsePAM no


と修正し、PAM認証を禁止します。

以上の修正を施しましたら設定を保存し、


$ sudo service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
$


「sudo service sshd restart」でSSHサーバを再起動し、修正した設定を反映させます。
これを実施した時点で、ユーザ名とパスワードでのログインが不可能となっているはずです。


Tera Termから公開鍵認証ログインをする

「exit」で1度ログアウトをし、公開鍵認証によるログインをしてみます。



Tera Termで公開鍵認証でログイン

「ホスト」にIPアドレスを入力し、「TCPポート」に新しいポート番号を入力します。
この記事での例では「25463」になっています。

入力が終わりましたら「OK」ボタンをクリックします。



Tera Termで公開鍵認証でログイン2

「ユーザ名」には作業用ユーザ(ここではhanemaru)を入力し、「パスフレーズ」にはSSH鍵生成時に設定したパスフレーズを入力します。
作業用ユーザのパスワードではありませんので、注意してください。

続いて「RSA/DSA鍵を使う」をチェックし、「秘密鍵」ボタンをクリックして秘密鍵ファイルの「id_rsa」を選択します。

入力が終わりましたら「OK」ボタンをクリックします。
これで無事ログインできましたでしょうか。


OSの言語環境を日本語に変更する

それほど劇的な変化はありませんが、OSの言語環境を日本語にしてヘルプやメッセージを日本語化します。


$ sudo vi /etc/sysconfig/i18n


「vi」コマンドで言語の設定ファイル「i18n」を編集します。


LANG="C"


となっている部分を


LANG="ja_JP.UTF-8"


と修正して保存します。

以上で日本語化が終了です。(笑)
仮想サーバを再起動した際に反映されます。


作業用ユーザのコマンドパスを通す

今回新規で作成した作業用ユーザには、コマンドまでのパスを通していません。
コマンドによっては実行時にフルパスを記述する必要があり、かなり煩雑です。

そこでパスをいくつか追加登録します。


$ vi .bash_profile


「vi」コマンドでログイン時に読み込まれる設定ファイル「.bash_profile」を編集します。


PATH=$PATH:$HOME/bin


となっている部分の下に


PATH=$PATH:$HOME/bin
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin


を追加して保存します。


$ source ~/.bash_profile


ログインをし直すか上記コマンドで、変更した設定が反映されます。


iptablesを設定してファイアウォールとして機能させる

iptablesはパケットフィルタリングやネットワークアドレス変換(NAT)の機能を有しており、ルーターのような役割を果たします。
特定ポートのみの許可や拒否だけでなく、いろいろな条件にてフィルタリングが可能で多機能なのですが、今回はSSH、WWW (HTTP)、安全なWWW (HTTPS)のみを許可し、他は拒否するような設定をします。

初回で定義を1から作るのは敷居が高いですので、雛形をツールを使用して作成します。


$ sudo system-config-firewall-tui


上記コマンドを実行することで、設定ツールが立ち上がります。



system-config-firewall-tuiの画面

テキストですが、なんとなくGUIっぽいインターフェースです。
下に書かれていますようにTabキーで移動、Spaceキーで選択となり、現在位置は黒く反転しています。

まずは「有効」の箇所でSpaceキーを押して、「*」を付けます。
次にTabキーで「カスタマイズ」まで移動して、Spaceキーを押してください。



SSH、WWW (HTTP)、安全なWWW (HTTPS)を許可

ここでは通信の許可をするサービスを選択します。
カーソルキー(矢印キー)で上下できますので、まずはSSHまで移動してSpaceキーで「*」を付けます。
同じようにWWW (HTTP)、安全なWWW (HTTPS)の2つも「*」を付け、最後は「閉じる」でSpaceキーを押してください。



system-config-firewall-tui終了

「OK」まで移動し、Spaceキーを押してください。
system-config-firewallが終了し、雛形の設定が作成されます。


$ sudo vi /etc/sysconfig/iptables


「vi」コマンドでiptablesの設定ファイルを編集します。
セキュリティ対策の一環として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 25463 -j ACCEPT


と修正して保存します。
ポート番号を好きな番号にしている場合は、その番号で修正してください。


$ sudo service iptables restart
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]


「sudo service iptables restart」でiptablesを再起動し、修正した設定を反映させます。
これを実施した時点で、許可したポート以外の通信は拒否されます。



以上で、さくらのVPSにてCentOS 6のセキュリティ対策をメインとした初期設定と、Tera Termによる鍵認証を使用したSSH接続環境を構築しました。
次回はWebサーバnginxのインストールと設定を行います。






私が利用しているVPSサービスは「さくらのVPS」です。


スポンサーリンク
hanemaru_comをフォローしましょう このエントリーをはてなブックマークに追加
カテゴリー サーバ設定や運営
キーワード さくらのVPS,CentOS,teraterm,専用サーバ,サーバ構築








※コメントは管理人の承認後、表示されます。

コメントを受け付けました。
コメントは管理人の承認後、表示されます。

表示順:新規順 | 投稿順 | 人気順 | 注目順