格安のさくらのVPSを借りたならやっておかなくてはいけない10の設定 - ドラあり!
「さくらのVPS」を借りたら、最低限やっておかなくていけない初期設定を10個ほど整理しました。
VPSはバーチャル・プライベート・サーバ (Virtual private server)の略で、仮想サーバをレンタルできるサービスです。
さくらインターネットが提供する「さくらのVPS」は、アカウント設定後は、CentOS5.5がインストールされていて、すぐ使い始めることが可能です。
自分はrackspaceなどのクラウドサーバを別で管理しているのですが、インスタンスの作り方がさくらの場合、インスタンスの独立性が高く、インスタンスの雛形をつくったりして、コピーするようなことができないようです。
ですので、サーバ導入時に、必要な設定を行わなければなりません。
初期設定をそのまま使うには、セキュリティ上のリスクが残っている部分がありますので、私が使っている場合にいつも行っている設定を10ほど抜き出して、整理してみました。
より安全にVPSを使っていただく、みなさまの一助になれば幸いです。
他の方の設定もかなり参考になりますので、ここに一部分列挙させていただきます。
CentOSをサーバーとして活用するための基本的な設定
【さくらのVPS】初期設定をしてみた
さくらのVPSを使ってみた
あえて異なるのはsshd周りを、ドラあり!では、外部からの総当たり攻撃に耐えるため、iptables及びtcp wrapperで念のため二重に防御しています。
このあたりは他の人の設定ではあまりなかったので、特徴の一つかも知れません。
目次は次の通りです。
- 1.VPS起動
- 2.ユーザ作成
- 3.ソフトウェアのアップデート
- 4.sshdの設定
- 5.rootになれるユーザ権限を設定する。
- 6.rootパスワードの変更
- 7.tcp wrapperの設定でftpやtelnetを原則禁止。
- 8.iptablesの設定
- 9.不要なサービスを停止しましょう。
- 10.再起動
- おわりに
- おまけ1:SSHのセキュリティ設定の強化
- おまけ2:selinuxの無効(初期で設定済みの場合あり)
- おまけ3:メモリの使用状況(設定後、再起動で計測)
- おまけ4:バッチファイル
まえがきが長くなりましたが、設定していきましょう。
- 作者: 一戸英男
- 出版社/メーカー: 日本実業出版社
- 発売日: 2005/04/07
- メディア: 単行本
- 購入: 22人 クリック: 524回
- この商品を含むブログ (29件) を見る
2.ユーザ作成
さくらのVPSのサービスを(仮)申込後、メールで「[さくらのVPS] 仮登録完了のお知らせ」というタイトルで
パスワード設定等が届いたはずです。
その仮登録メールにあるパスワードで、SSHを使ってログインします。
ログイン後、まずユーザを追加します。
# useradd myuser # passwd myuser Changing password for user myuser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
3.ソフトウェアのアップデート
yumを使うのですが、アップデートを手動で行うと、常駐しているyum-updatesdと衝突する場合があるので、
yum-updatesdはアンインストールして、手動で一度アップデートします。
(1)yum-updatesdのアンインストール & yum-cronのインストール
yum-updatesdは1時間ごとにアップデートをチェックしにいく常駐型のため、
メモリのコストパフォーマンスが悪いです。
よって非常駐型のyum-cronをかわりにインストールします。
# yum -y remove yum-updatesd
# yum -y install yum-cron # /etc/rc.d/init.d/yum-cron start # chkconfig yum-cron on
(2)各サービスの設定にはいる前に、ソフトウェアを最新版にしておきます。
# yum -y update
4.sshdの設定
sshのログイン周りのセキュリティを整備します。
(1)rootログイン禁止、通常パスワードログイン禁止、公開鍵使用を設定する。
パスワードなしも設定できるが推奨しません。(禁止する設定は後述)
クライアントを乗っ取られたら、パスワードなしで、サーバにログインされちゃうから。
# vi /etc/ssh/sshd_config PermitRootLogin no #rootログインは禁止 PasswordAuthentication no #通常のパスワード認証は禁止 UsePAM no #公開鍵のみ使用する。
sshデーモンを再起動する。
# /etc/rc.d/init.d/sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
(2−1)クライアント設定:linuxを作業PCとする場合の公開鍵作成
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): Created directory '/home/myuser/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/myuser/.ssh/id_rsa. Your public key has been saved in /home/myuser/.ssh/id_rsa.pub. The key fingerprint is: 38:xx:25:x9:xx:xx:a4:xx:e5:1d:xx:xx:35:b2:xx:xx
(3)authorized_keys の作成
公開鍵を設定します。
作業PCで作成した公開鍵を、VPSサーバの以下のファイルに書いてください。
# vi ~/.ssh/authorized_keys
その後、以下のように設定を変更してください。
# chmod 600 ~/.ssh/authorized_keys
注意:「Received disconnect from xxx.xxx.xxx.xxx: 14: No supported authentication methods available」のエラーが出る場合、~/.ssh/のパーミッションが700、[ ~/.ssh/authorized_keys]が600になっているか確認してください。
5.rootになれるユーザ権限を設定する。
rootになれる設定を変更します。
sudoersの設定変更(sudoコマンドの設定は省略可能です。必要でない方は、この項は飛ばしてください。)
sudoコマンドを使えるグループをwheelに設定します。
(コメントを外すだけ)
rootでvisudoコマンドを使って編集します。(直接ファイルを編集するより、文法チェック等あるので、visudoが便利です)
# visudo %wheel ALL=(ALL) ALL
pam.dの設定変更
suコマンドでrootになれるアカウントグループをwheelに設定します。
# vi /etc/pam.d/su
auth required pam_wheel.so use_uid
アカウントのwheelグループ登録
wheelグループにrootになれるユーザアカウントを登録する。
# usermod -G wheel myuser
これでmyuserがrootのwheelグループに登録されました。
6.rootパスワードの変更
メールの平文でおくってきているrootパスワードを変更しておきましょう。
rootユーザで以下のコマンドを実施してください。
# passwd Changing password for user root. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
7.tcp wrapperの設定でFTPやtelnetを原則禁止。
iptablesだけでもいいんだけど、やっぱhosts.denyで明示的に閉じておくほうが個人的におすすめです。
平文で通信するtelnetやFTPは、内容が暗号化されていないので、少し心配です。
たとえtelnetがなくてもsshがあるし、FTPがなくてもsftpやwinscpがあるので安心です。
「FTPやtelnetがなくても大丈夫か?」と聞かれそうですが「大丈夫だ、問題ない」です。
/etc/hosts.allow と /etc/hosts.deny の設定を変更します。
ルールは原則として、ftpやtelnetを禁止。
拒否ファイル
# vi /etc/hosts.deny
ALL:ALL
許可ファイル
次はsshだけ、指定のIPアドレスやドメイン(xxx.xxx.xxx.xxx)からのみ許可します。
これで外部からのsshの総攻撃を拒否する。(iptablesよりtcp wrapperでやったほうがドメイン指定できて、汎用的かつ簡単)
# vi /etc/hosts.allow
ALL:127.0.0.1
sshd:xxx.xxx.xxx.xxx
自分自身から、inet関係を使えるようにする設定。
クライアントのIPアドレス(またはドメイン)を明示化して、sshのみ使えるようにする。
hosts.denyとhosts.allowの設定はセットで考えましょう。ここは好みが分かれますが(iptablesだけで一元的に設定するのもあり)
8.iptablesの設定
さくらのVPSのCentOSは、受送信のパケットを、iptablesでかなりの部分、制御できます。
iptablesがパケットの性質によって、サービスへの受け渡し許可、不許可を判断していきます。
ちなみにcentOSは、iptablesのルールが/etc/sysconfig/iptablesにあります。
しかし、さくらのVPSはカスタマイズされていて、初期にこのファイルがありません。
ですので、設定ファイルを自分で作成していきましょう。
注意:このあとの作業はiptablesを変更するので、リモートログインが届かなくなる場合もあります。
コマンドラインでもいいのですが、失敗すると、復旧等を管理パネルのコンソールから行わないといけません。
ここでは、先述したファイルを作って、そこに設定を書き込みます。
コマンドで調整しながらやりたいと言う人は、
さくらのVPS ファイアーウォールを設定してみる
をご参考ください。
設定ファイル iptables
#vi /etc/sysconfig/iptables *filter :INPUT DROP [0:0] :FORWARD DROP [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 udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH, HTTP,( FTP1, FTP2, MySQL ) -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
SSHの設定(22番ポート)は自分の作業環境のIPを入力してください。
iptablesのかわりにxinetdもあるけど、他のディストリビューションとかを見た限り、
iptablesのほうが汎用性が高いように思われます。
設定を書き込んだら、iptablesを再起動します。
# /etc/rc.d/init.d/iptables restart Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: filter [ OK ] Unloading iptables modules: [ OK ] Applying iptables firewall rules: [ OK ]
9.不要なサービスを停止しましょう。
すぐ使わないサービスなどを停止させましょう。
サービス開始のOFF
サービス開始を、OS起動時に自動でしないように設定していきます。
参考:CentOSをサーバーとして活用するための基本的な設定
上の設定を最新版のものに若干変更しています。(isdnデーモンは初期にないので削除)
chkconfig acpid off
chkconfig auditd off
chkconfig autofs off
chkconfig avahi-daemon off
chkconfig bluetooth off
chkconfig cups off
chkconfig firstboot off
chkconfig gpm off
chkconfig haldaemon off
chkconfig hidd off
chkconfig kudzu off
chkconfig lvm2-monitor off
chkconfig mcstrans off
chkconfig mdmonitor off
chkconfig messagebus off
chkconfig netfs off
chkconfig nfslock off
chkconfig pcscd off
chkconfig portmap off
chkconfig rawdevices off
chkconfig restorecond off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig sendmail off
chkconfig smartd off
chkconfig xfs off
10.再起動
ここまで設定したら、一度、再起動してみましょう。
# reboot
以上で完了です。おつかれさまでした。
おわりに
いかがだったでしょうか?さくらのVPSは開始後すぐに使うことができますが、
そのままではセキュリティの設定などで、不足している部分もあります。
基本的な箇所を10箇所ほど整理しました。
チェックをして整理していますが、もっとこうしたほうがいい。これは追加したほうがいいという
ご指摘あれば、コメント等いただければありがたいです。
みなさんのVPSライフを充実できたら嬉しいです。
- 作者: 中島能和,飛田伸一郎
- 出版社/メーカー: 翔泳社
- 発売日: 2008/02/05
- メディア: 大型本
- 購入: 5人 クリック: 149回
- この商品を含むブログ (12件) を見る
おまけ1:SSHのセキュリティ設定の強化
通常の設定以外にも、好みでいくつか設定を追加しておきます。
SSHのログインポートを22番から変更する。
# vi /etc/ssh/sshd_config
Port xxx
とする。待ち受けポートがxxxになる。
アクセスするSSHクライアントの設定を変更する。
ログイン猶予時間を20秒に制限する。
# vi /etc/ssh/sshd_config LoginGraceTime 20
認証施行回数を2回に制限する。
# vi /etc/ssh/sshd_config MaxAuthTries 2
パスワードなしのログインを禁止
# vi /etc/ssh/sshd_config
PermitEmptyPasswords no
おまけ2:selinuxの無効(初期で設定済みの場合あり)
デフォルトでなっているようです(2010年12月23日現在)。
設定の必要は、現在なさそうです。
# vi /etc/sysconfig/selinux SELINUX=disabled
おまけ3:メモリの使用状況(設定後、再起動で計測)
再起動後のメモリの使用状況を測ってみました。
設定変更前と変更後で計測しています。
変更前(メモリ使用量が339MB)
# free total used free shared buffers cached Mem: 510532 339128 171404 0 29388 247784 -/+ buffers/cache: 61956 448576 Swap: 2048276 84 2048192
変更後(メモリ使用量が155MB)
# free total used free shared buffers cached Mem: 510532 155072 355460 0 11044 116892 -/+ buffers/cache: 27136 483396 Swap: 2048276 0 2048276
おまけ4:バッチファイル
これまでの設定(1から10)は、毎回行うと大変なので、バッチファイルにすることも可能です。
自分だけのVPS設定があれば、バッチファイルにしておくと、過負荷などで、サーバが
ピンチになったときに代替サーバを数分で構築できます。
本ブログで説明した設定は、(ブックマーク数など見て)需要があるようでしたら、GPLライセンスとかにして配布しようかな。
- 作者: 中橋一朗
- 出版社/メーカー: 秀和システム
- 発売日: 2004/10/04
- メディア: 単行本
- 購入: 4人 クリック: 64回
- この商品を含むブログ (18件) を見る