VPSはじめの 一 歩 さくらインターネット 株 式 会 社 研 究 所 所 長 鷲 北 賢 2013 年 1 月 26 日 (C)Copyright 1996-2013 SAKURA Internet Inc.
自 己 紹 介 鷲 北 賢 (わしきた けん) 1998 年 4 月 入 社 バックボーンのお 守 りからサービス 開 発 まで 初 期 の 専 用 サーバ データセンター 構 築 オンラインゲームプロジェクト CTO 兼 取 締 役 などなど 2009 年 より さくらインターネット 研 究 所 所 長 仮 想 化 技 術 の 研 究 (Linux KVM) さくらのVPS 開 発 ヘルプ 2011 年 さくらのクラウド 開 発 チームリーダー 兼 務 @ken_washikita
目 次 1. VPSについて 2. ログインに 関 する 設 定 3. iptablesによるパケットフィルタ 4. ソフトウェアのセキュリティ 5. リモートコンソールのセキュリティ
はじめに 本 セッションは 講 義 ではありません メモを 取 るほどではありません 細 かい 設 定 は 後 でゆっくり 調 べてください VPS セキュリティ でググった 方 が 早 くて 確 実 CentOS 6.3をベースにしています 一 番 ポピュラーなんです 構 えずに 気 楽 に 聞 いていただければ 幸 いです
1. VPSについて
VPSとは Virtual Private Server 仮 想 化 技 術 を 活 用 し ホストサーバ 上 に 専 用 サーバ と 同 等 の 機 能 を 実 装 して 提 供 するサーバサービス ユーザはroot 権 限 もしくは 同 等 の 権 限 を 持 ち サー バを 管 理 / 運 用 することができる 安 価 でありながら 高 い 自 由 度 が 得 られる 必 要 なソフトウェアをインストールできる 自 由 に 設 定 変 更 できる 他 のユーザを 気 にしなくて 済 む
さくらのVPS 2013 年 1 月 25 日 現 在
気 になるセキュリティ 管 理 / 運 用 の 責 任 クラックされたら 困 る 何 か 問 題 が 起 こるのが 怖 い どうやったら 安 全 に 使 えるの? ご 説 明 いたします
2. ログインに 関 する 設 定
rootログインとパスワード VPSを 始 めたら 最 初 にやるべきこと パスワードを 変 える システムはユーザにパスワードを 送 らなければなら ない 平 文 でパスワードを 持 っている なんかイヤ とにかく 最 初 に 変 更 する ちなみに さくらのVPSは 初 期 状 態 では 停 止 しています コンパネから 起 動 するまでは 安 全 です
参 考 :ログイン 直 後 のコンパネ
パスワードの 変 え 方 1. 初 期 パスワードでrootログイン 2. passwdコマンドで 変 更 3. ログアウトして 再 ログインできるか 試 す 万 が 一 に 備 えてコンソールで 変 更 し sshでログ インを 試 すことをお 勧 めします 最 悪 の 場 合 さくらのVPSでは OS 再 インス トール 機 能 があります
参 考 :パスワードの 変 更
sshのセキュリティを 見 直 す sshはよく 攻 撃 される sshは 暗 号 化 されていて 安 全 な 通 信 手 段 だが しょせ んログイン 名 とパスワードで 保 護 されているだけ 1. sshでrootログインできないようにする 2. sshのポート 番 号 を 変 更 する 3. パスワードログインをやめ 公 開 鍵 認 証 にする
sshでrootログインできないようにする 一 般 ユーザでログインしてからsudoを 使 う wheelグループに 所 属 するユーザでsudoする ユーザならばrootよりも 狙 われにくい 1 台 のサーバをみんなで 共 有 したいときも 有 効 root 権 限 を 与 えたい 人 だけwheelに 所 属 させる ログを 見 れば 誰 が 何 をしたかも 分 かる
設 定 方 法 1. 一 般 ユーザを 作 成 $ useradd username G wheel 2. パスワードを 設 定 $ passwd username 3. sudoの 設 定 を 変 更 する $ visudo %wheel ALL=(ALL) ALL 4. sshでrootログインを 禁 止 する $ vi /etc/ssh/sshd_config PermitRootLogin no 5. sshdを 再 起 動 $ service sshd restart コメントアウトを 消 す yesをnoに 変 える
sshのポート 番 号 を 変 更 する 22 番 ポートは 常 に 狙 われている 変 更 するだけで 大 半 のアタックはなくなる 1. ポート 番 号 を 変 更 する $ sudo vi /etc/ssh/sshd_config Port 10022 2. sshdを 再 起 動 $ sudo service sshd restart 10022 番 ポートも 使 い 古 されています
公 開 鍵 認 証 を 使 う パスワードをやめて 秘 密 鍵 公 開 鍵 を 使 う VPSに 公 開 鍵 を 設 置 秘 密 鍵 を 使 ってアクセスするとログインできる 秘 密 鍵 を 盗 まれない 限 り 安 全 公 開 鍵 を 解 析 しても 秘 密 鍵 は 再 現 できない ログイン リクエスト 秘 密 鍵 鍵 のペアを 比 較 して 合 致 すればログインできる 公 開 鍵
公 開 鍵 秘 密 鍵 の 作 り 方 Linuxでssh-keygenと 入 力 いくつか 質 問 されるが 全 部 空 リターンでOK ホームに.ssh ディレクトリができる id_rsa 秘 密 鍵 厳 重 に 保 管 id_rsa.pub 公 開 鍵 サーバに 設 置 ファイルのパーミッションにも 注 意
公 開 鍵 をVPSに 置 く 1. サーバにログイン 2. sshdの 設 定 変 更 $ sudo vi /etc/ssh/sshd_config PubkeyAuthentication yes PasswordAuthentication no 公 開 鍵 認 証 有 効 パスワード 認 証 無 効 $ sudo service sshd restart 3. ホームに.sshディレクトリを 作 成 パーミッション 設 定 $ cd ; mkdir.ssh $ chmod 700.ssh 4..sshにauthorized_keysファイルを 作 成 公 開 鍵 を 保 存 $ cd.ssh $ cat >authorized_keys $ chmod 600 authorized_keys
秘 密 鍵 を 使 ってログインする 他 のLinuxサーバからログインする 秘 密 鍵 がホームの.sshにid_rsaという 名 前 で 保 管 されて いれば sshコマンドでログインできる scpやほかのssh 系 コマンドが 自 由 に 使 える TeraTermやPuttyなどのターミナルソフトから 秘 密 鍵 をPCに 移 し ソフトから 指 定 してログイン 指 定 方 法 はそれぞれのソフトに 従 って 行 う ファイル 転 送 はWinSCPがお 勧 め 公 開 鍵 認 証 でFTPライクなファイル 転 送 が 可 能 Windows/Macintoshクライアントがある
公 開 鍵 認 証 の 注 意 点 秘 密 鍵 の 管 理 に 注 意 秘 密 鍵 を 持 ち 歩 かねばならず リスクになり 得 る 秘 密 鍵 を 入 れたPCの 管 理 は 結 局 パスワードで 秘 密 鍵 をなくしたら 直 ちに 公 開 鍵 を 削 除 更 新 する 秘 密 鍵 がないときにログインする 手 段 がない パスワード 認 証 を 無 効 化 するのは 一 長 一 短 よく 考 えて 設 定 するべき
3. iptablesによるパケットフィルタ
iptablesとは サーバのポートで パケットを 通 したり 拒 否 す るフィルタを 設 定 する 必 要 なものだけを 通 し 不 要 なものを 拒 否 する ことで アタックを 避 け セキュリティを 上 げ ることができる サーバで 設 定 できるファイア ウォール 設 定 さえすれば 安 全 ではない 無 用 なアタックを 避 け リスクを 低 減 するもの
iptablesの 設 定 方 法 1. 定 義 ファイルを 書 く /etc/sysconfig/iptablesに 記 述 する 記 述 例 は 次 ページに 紹 介 します 2. iptablesサービスを 再 起 動 $ sudo /etc/rc.d/init.d/iptables restart ルールを 間 違 えると 悲 惨 コンソールで 設 定 sshでテストをお 勧 めします 最 悪 の 場 合 さくらのVPSでは OS 再 イン(r
/etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # -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 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT # -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited # COMMIT
参 考 :stateについて -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT SSHクライアント 16384 接 続 リクエスト(NEW) セッション 開 始 (ESTABLISHED) SSH 通 信 (ESTABLISHED) : : VPSサーバ 22(SSH) 1. 22 番 ポートへの 新 規 パケット(NEW)はACCEPT 2. OUTPUTはACCEPT 3. ESTABLISHEDなINPUTはACCEPT SSHが 可 能
4. ソフトウェアのセキュリティ
VPSにおけるソフトウェア ゲストOS(Linuxカーネル) 比 較 的 安 定 していて 深 刻 な 問 題 は 少 ない セキュリティ 問 題 が 発 生 しても 速 やかにパッチされる サーバ(Web メール DNS ) サーバ 本 体 は 安 定 しているが 運 用 は 色 々 難 しい アプリケーションやプラグインには 要 注 意 管 理 用 パスワードや 認 証 システムは 出 来 の 悪 いものもあ る アプリを 踏 み 台 にシステムを 破 られるケースも データベース(MySQL PostgreSQL ) アクセス 権 限 をきちんと 設 定 し iptablesでしっかり 保 護 複 数 サーバ 構 成 でない 限 りアクセスポートは 開 けない
iptables ソフトウェアの 例 :WordPress WordPressを 構 成 するソフトウェア Webサーバ(Apache) PHP MySQL VPS Webサーバ MySQL WP (PHP)
ソフトウェアのセキュリティ 最 新 版 を 使 うことが 重 要 yum updateなど 簡 単 にチェック アップデー トが 行 えるので 積 極 的 に 実 施 する 面 倒 な 人 には 自 動 ツールyum-cronがオススメ アプリケーションはこまめにチェック アップデートはセキュリティ パッチがほとんどな ので 面 倒 がらずに 必 ずインストールする
5. リモートコンソールのセキュリティ
VPSのリモートコンソールは 大 丈 夫 か? リモートコンソール 機 能 VPSのシリアルポートを 介 してディスプレイ/キー ボードを 直 接 Webコンソール 上 に 表 示 し 操 作 を 可 能 にしたもの VNCコンソールを 使 えばCTL+ALT+DELも 送 れる リセットしたあとシングルモードでブート 可 能 うっかりするとシステム 乗 っ 取 りも 簡 単 セキュリティは 大 丈 夫?
リモートコンソールの 仕 組 み コントロールパネル (1) 認 証 用 ワンタイムキー 送 信 Webブラウザ ホストサーバ プロキシ (2)キーを 使 って 認 証 接 続 仮 想 シリアルポート VPS (3)コンソールセッション 開 始
リモートコンソールのセキュリティ 認 証 キーのやり 取 りはHTTPS ワンタイムキーで 有 効 期 限 が 短 い ブラウザ/プロキシ 間 はSSHトンネル VNCプロキシ/ホストサーバ 間 はネットワーク セキュリティにより 安 全 を 確 保 ユーザは 直 接 ホストにアクセスしていない iptablesとは 無 関 係 ( 全 部 DROPでも 動 作 する) シリアルコンソールの 設 定 を 変 えると 動 かなくなる ので 注 意 が 必 要
おわりに
その 他 のトピック ログのチェック ログには 重 要 な 情 報 が 記 録 される 記 録 期 間 を 延 ばすなど 初 期 設 定 から 変 えておくと よい 項 目 もある リソース 情 報 の 確 認 CPUやトラフィックの 推 移 で 性 能 やセキュリティ 問 題 の 発 見 につながることもある 監 視 ツール ツールを 使 ってラクをしましょう
おまけ ゲヒルン 株 式 会 社 /Security.GS in 北 海 道 ウェブセキュリティ 勉 強 会 ( 参 加 無 料 ) 2013/2/17 15:30~17:30 札 幌 市 中 央 区 株 式 会 社 インフィニットループ 会 議 室 初 級 ~ 中 級 者 を 対 象 とした 講 座 Webサービスの 開 発 を 始 めた 方 サービスのセキュリティを 強 化 したいエンジニア 最 近 VPSに 触 り 始 めた 方 など 講 座 内 容 クラッカーの 心 理 XSSの 話 JavaScriptの 話 講 座 内 容 は 変 更 する 場 合 がございます http://atnd.org/events/36277