アクセス制限の設定とCentOSのアップデート仕事で使える魔法のLAMP(3)

前回はsshでVPSにログインして、一般ユーザーを作成しました。今回は、アクセス制限、パケットフィルタリングといった不正アクセス対策の設定をしてから、CentOSをアップデートします(編集部)

» 2011年04月27日 00時00分 公開
[山口晴広株式会社イメージズ・アンド・ワーズ]

もはやrootでログインする必要はない

 前回に引き続き、サーバの準備編です。前回、最低限やっておくべきこととして、以下の4点を挙げました。前回は一般ユーザー「atmarkit」を作って、sudoコマンドを使えるようにしました。、以下に挙げた4項目のうち、最初の1つが終わったところです。今回はアクセス制限の設定から続けていきます。

  • 一般ユーザーの作成
  • アクセス制限
  • パケットフィルタ
  • CentOSのアップデート

 この連載で使っているさくらインターネットのVPSのほか、多くのサーバサービスでは、初期設定では、どこからでもsshによるリモートログインが可能になっています。もちろん、ログイン時にユーザー名とパスワードを入力しなければならないので、誰でも簡単にログインできてしまうということはありません。

 しかし、ユーザー名が分かっていれば、パスワードは総当たりによるクラッキングで突き止められてしまう可能性もあります。しっかりしたパスワードを使っていれば、ログインに失敗した後の応答が遅延されるので、総当たりで当てるのは現実的にはほぼ不可能でですが、そうはいってもできる対策はしておくべきです。

 まず、rootユーザーがログインすることを禁じてしまいましょう。前回、一般ユーザーを作成しました。もうrootユーザーでログインする必要はありません。以下のようにコマンドを実行してsshdの設定ファイルを編集しましょう。

$ sudo vi /etc/ssh/sshd_config

 このファイルの中にPermitRootLoginという行があります。これをnoに書き換えましょう(図1)。

(略)
# Authentication:
 
#LoginGraceTime 2m
PermitRootLogin no    ←この行を書き換える
#StrictModes yes
#MaxAuthTries 6
 
(略)
図1 rootユーザーがssh経由でログインすることを禁じる設定

 書き換えたらログアウトして、以下のようにコマンドを入力してください。sshdをリロードします。

$ sudo /etc/init.d/sshd reload
Reloading sshd:                                            [  OK  ]

 そして、rootユーザーでログインし直してみましょう。正しいパスワードを入力しても失敗することが確認できれば完了です。

IPアドレスでアクセス制限

 次に、sshログインを許可するIPアドレスを指定します。オフィスなどからログインするなら、これが最も簡単で効果的なアクセス制限の方法です。

 しかし、インターネットに接続するたびにIPアドレスが変わるような、ダイヤルアップ接続などを使ってVPSに接続する時は、この方法でアクセス制限することは難しくなります。このようなときはパスワード認証を禁止した上で公開鍵認証を使うことで、無関係なユーザーのログインを防げるようになります。この件については、長くなるので解説は次回とします。

 許可するIPアドレスは、/etc/hosts.allowファイルを開いて、以下のように設定します。許可したいIPアドレスが複数ある場合はカンマで区切っても良いですし、複数行にしても問題ありません。限定しない場合は、IPアドレスの部分を“ALL”とします。

sshd: 許可するIPアドレス1, 許可するIPアドレス2
sshd: 許可するIPアドレス3

 最後に、/etc/hosts.denyファイルに以下の行を追加します。

ALL: ALL

 この状態で、許可していないIPアドレスからsshでログインしようとすると、接続しようとするところで失敗し、パスワードの入力まで進みません。

 この2つのファイルはTCP Wrapperの設定ファイルです。TCP Wrapperに対応している他のサーバソフトウェア、例えばMySQLなども参照します。今の/etc/hosts.denyファイルの設定は、sshを含め「すべてのサーバで、許可していないアクセスを拒否する」というものです。これを標準と考えて、必要に応じて/etc/hosts.allowファイルにアクセスを許可するIPアドレスを追記していくようにします。

設定を間違えてログインできなくなったら

 アクセス制限が働いているかどうかを確認するときは、設定をしているターミナルはそのままにしておき、別のターミナルを開いて動作確認するようにしましょう。設定ファイルに記述するIPアドレスを間違えたままログアウトしてしまうと、ログイン不能になってしまうこともあり得ます。

 なお、さくらインターネットのVPSであれば、リモートログインができなくなったとしてもWebブラウザで開ける管理画面があり、そこからログインできるという特長があります。ログイン不能になったとしても、この機能を利用すればやり直しができます(図3)。

図3 アクセス制限の設定を間違えたとしても、Webブラウザで操作できる管理画面からログインできる。 図3 アクセス制限の設定を間違えたとしても、Webブラウザで操作できる管理画面からログインできる。クリックすると拡大

 もしこのような仕組みを用意していない業者を利用する場合、ログイン不能になったら初期化せざるを得なくなります。ネットワーク関連の設定だけ初期化できるのであればいいのですが、そうでなければOSごと初期化することになるので、ご注意ください。

不要なパケットをシャットアウト

 さくらインターネットのVPSでは標準でntpサーバが有効になっていて、正確な時刻を保つようになっています。しかしそのままでは、誰でもntpサーバにアクセスして時刻を参照できてしまいます。ntp側の設定で制限することもできますが、ファイアウォールでパケットごと遮断してしまうというのも1つの手です。今後のことも考え、明示的に許可していないパケットは遮断することにしましょう。

 Linuxでファイアウォールといえばiptablesです。/etc/sysconfig/iptables図4の内容で作成してください。

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp ! --syn -j DROP
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
COMMIT
図4 シンプルな遮断ルールを設定した/etc/sysconfig/iptablesファイル

 設定ファイルに必要事項を記入できたら、保存して、以下のコマンドを実行してください。iptablesの設定がリロードされて、ファイルに記述したパケットフィルタのルールが有効になります。

$ sudo /etc/init.d/iptables restart

 iptablesは非常に多機能ですが、ここではルールをごくシンプルにしています。サーバから外部へ向かうパケットはすべて許可し、外部からのパケットは許可したもの以外をすべて遮断します。現在はsshのポート番号22のみ接続を許可しています。いずれは、httpなどのポートの設定も追加することになるでしょう。

CentOSを最新の状態に

 最後に、OSのアップデートです。標準状態ではCentOSのバージョンは5.5です。つい最近5.6がリリースされたのでアップデートしましょう。以下のコマンドを実行すると5.6にアップデートできます。

$ sudo yum -y update

 yum-cronパッケージを使って毎日同じ時間に自動的にアップデートさせることも可能です(図5)。しかし、アップデートを安易に自動化するのは好ましくないこともありますので、よく考えて設定してください。アップデートに起因する問題が発生することもあります。あるいは、環境をチームのメンバーや本番環境と一致させておきたいということもあるでしょう。バージョンによって挙動が変わることもあるので、全体で一致していないと無用なトラブルを招きかねません。

$ sudo yum install yum-cron
$ sudo chkconfig yum-cron on
$ sudo /etc/init.d/yum-cron start
Enabling nightly yum update:                               [  OK  ]
図5 yum-cronを使って毎晩アップデートを試みる設定の例

 ここまで設定すればひとまずサーバの準備は完了です。次回は家庭向けブロードバンド接続を利用する方のために、公開鍵暗号を利用してsshでVPSに接続する方法を解説します。

著者紹介

株式会社イメージズ・アンド・ワーズ
代表取締役
山口晴広(やまぐち はるひろ)



「仕事で使える魔法のLAMP」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。