さくらのVPS導入手順 6.iptablesの利用準備

コンソールの日本語化

ここまですべて英語の状態で操作をしてきましたが、ここでひとまずコンソールを日本語化する作業をしておきます
以下のコマンドを実行して、設定ファイルを編集します

$ sudo vi /etc/sysconfig/i18n
[sudo] password for hogehoge:

初期状態ではこのような記述になっていると思いますので、

LANG="C"
SYSFONT="latarcyrheb-sun16"

1行目を以下のように書き換えてください

LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

今までは以下のような表示だったものが、

$ ls -l
total 0

上記作業後に改めてログインしなおすことによって、下記のように表示が変更されていればOKです

$ ls -l
合計 0

なお、sudoコマンド実行時に以下のようにパスワードを聞かれるケースがある
紛らわしいので、これ以降の説明の際には以下の表示はすべて省略する

[sudo] password for hogehoge:

ファイアウォールの状態の確認

次に、作成されたサーバーには様々なところから攻撃を受ける可能性があるため、iptablesを利用してファイアウォールを定義してやります
まずはiptablesコマンドをsudoを使ってして実行し、現在の状態を確認してみます

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

いまいち意味が分からないかもしれませんが、すべての通信に対して一切のフィルター定義が無いという状態です
このように、さくらのVPSでは初期状態ではすべての通信が許可されている、そのままでは非常にリスクの高い状態ですので、ここの設定までは最初に一気にやっておきたいところです

定義ファイルの記述

早速定義ファイルを編集してみましょう
以下のコマンドを実行します

$ sudo vi /etc/sysconfig/iptables

さくらのVPSの初期状態ではファイルが無いので、新規ファイルの編集になります
以下のように記述します
なお、SSHのポートは先の設定でご自身が設定した番号に書き換えてください
また、メール関係については、ここではひとまずすべてコメントアウトしてあります

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
#
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# SSH(-dportの後ろのXXXXXは自分が設定したSSHのポート番号に変更)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XXXXX -j ACCEPT
#
# HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# HTTPS 不要なら消す
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
#
# メール受信用 POP3(110),IMAP4(143),IMAP4S(993)POP3S(995)
# 必要なものだけ先頭の#を取る
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT
#
# メール送信用 SMTP(25),SMTPS(465),OP25B(587)
# 必要なものだけ先頭の#を取る
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
#
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

定義ファイルの適用

では、iptablesのサービスを再起動して、設定を適用してみましょう
以下のように、すべてがOKになれば成功です

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

もし、失敗が出るようなら、特に見た目間違っていなさそうでも、余計な半角スペースなどあるとエラーになりますので、そのあたりにも注意して確認してみてください
改行のみの空行に見えるところに空白文字があったりして嵌ることもありますので、上記の例ではあえて空白行に#マークをつけています

では改めてiptablesコマンドで設定内容を確認してみましょう
以下のような感じで、ファイアウォールの定義が追加されているはずです

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:XXXXX
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

次は さくらのVPS導入手順 7.Apacheの利用準備

はじめに戻る さくらのVPS導入手順 0.はじめに

さくらのVPS導入手順 5.SSHの設定変更

SSH 接続用の鍵作成

これまでの作業で、rootユーザーと作業用ユーザーにパスワードは設定したが、これだけではセキュリティとしては不安である
そこで、SSHで外部から接続する際には、パスワードを使わず、公開鍵認証というものでログインするようにする

Windowsの人はTeraTermを起動します
接続はキャンセルボタンでキャンセルしてください
上部メニューの[設定]から[SSH鍵生成…]を実行すると、以下のようなダイアログが表示されます
sakura-vps-05-01
生成ボタンをクリックすると鍵が生成され、鍵のパスフレーズが入力できるようになります
パスワードばかりで面倒ですが、自分のサーバーを守るためですので、念のためにパスフレーズの設定をお勧めします
[鍵のパスフレーズ]と[パスフレーズの確認]に同じパスフレーズを入力し、「公開鍵の保存」と「秘密鍵の保存」ボタンをそれぞれ押して鍵を保存します
公開鍵は id_rsa.pub、秘密鍵は id_rsa というファイル名にしておきましょう
sakura-vps-05-02

サーバーへの公開鍵の設置

作業用に作ったユーザーのHOMEに、公開鍵を転送します
Windowsの人は、まずTeraTermで作業用ユーザーでサーバーにログインした状態にし、先ほど作成したid_rsa.pubファイルをTeraTermのウィンドウにドロップしてください
以下のようなダイアログが出ますので、SCPを選択すると、HOMEに転送されています
sakura-vps-05-03
lsコマンドで確認すると、こんな感じでファイルができています

$ cd
$ ls
id_rsa.pub

では、このファイルを使って公開鍵を設置します
以下のコマンドを順に実行してください

$ cd
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

ユーザーのHOMEに.sshというディレクトリを作成し、その中にauthorized_keysというファイルを作成して、そのファイルに公開鍵を記入します
ファイルは他のユーザーから読み書きできないよう、アクセス権も変更しました
これで公開鍵の準備は完了です

SSH設定ファイルの変更

次にSSHの設定ファイルを編集します

$ sudo vi /etc/ssh/sshd_config
[sudo] password for hogehoge:(作業用ユーザーのログインパスワードを入力してください)

エディタが開いたら、まずはPermitRootLoginのキーワードを探します
yesの状態でコメントアウトされていますが、これは設定を書かなければrootでのログイン(PermitRootLogin)を許可する(yes)設定になるということです
従って、コメントをはずすか新たにその下に行を書き加え、「PermitRootLogin no」を記載します

#PermitRootLogin yes
PermitRootLogin no

次に、PasswordAuthenticationのキーワードを探します。こちらは現在のSAKURAのVPSでは、コメントアウトされた行と、さらに1行置いたその下にコメントアウトされていない行がありますので要注意です
変更はコメントアウトされていない下側の行に対して行います
初期状態で許可状態のyesになっていますので、noに変更してください

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes
    これをnoに変える
PasswordAuthentication no

次に、アクセスする際のポートも変更することで、さらにセキュリティを向上させます
Portというキーワードが一番上の説明文のすぐ下にありますので、その場所に新たに行を追加し、1024~65535のうちで任意の、でも単純ではないある程度大き目の数字を設定しましょう

#Port 22
Port XXXXX

SSHデーモンの再起動

編集・保存したら、SSHデーモンを再起動して、先ほど編集した内容を反映します

$ sudo service sshd restart
[sudo] password for hogehoge:
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

接続の確認

では、今繋がっているSSHの接続は残したまま、TeraTermの[ファイル]から[新しい接続]を実行して、先ほどの設定どおりに接続できるか確認します
繋がっているものを残しておかないと、特に万が一公開鍵の配置に失敗していたときに、リモート接続が一切できなくなることがあります
最初の接続画面では、ポートのところにはさっき指定した新しいポート番号を入力します
ここでアクセスできない場合は、先ほどのポート番号の指定がうまく行っていないかもしれませんので、元の繋がっているほうのターミナルで改めて設定内容を確認してみてください
sakura-vps-05-04
認証画面が出たら、今回は以下の図のように、RSA/DSA/ECDSA鍵を使うにして秘密鍵を指定し、鍵に設定したパスフレーズを入力することでログインができるはずです
sakura-vps-05-05
もし繋がらない場合、元の繋がっているほうのターミナルで改めて設定内容、特にauthroized_keysの綴りや配置周りなどを念入りに確認してみてください
上手く繋がったら、次からはこの流れでアクセスしましょう

次は さくらのVPS導入手順 6.iptablesの利用準備

はじめに戻る さくらのVPS導入手順 0.はじめに