Slide 1

Slide 1 text

WordPress Hardening CheetSheet Hardening 10 MarketPlace 2015.8.20 @ MP4

Slide 2

Slide 2 text

陽気なMP4がhardeningをまわす!

Slide 3

Slide 3 text

MP4 とは MarketPlace4 と呼ばれる4人組です。 Hardening 10 MarketPlace (2015/06/20-21沖縄開催)で 下記のように特殊任務をいただき参加いたしました。 競技に申し込んだものの、競技チームではなく 「専門家としてプロフェッショナルサービスを展開する」側として ご出場いただきたいという実行委員会からの悲報を頂きました。  → つまり、プロとしてお金をいただきチームをサポートする役割!

Slide 4

Slide 4 text

MP4 自己紹介 @TSB_KZK 鬼軍曹 @delphinz プロジェクトマ ネージャ @sasser_jp セキュリティ コンサルタント @YuhoKameda 脆弱性診断士

Slide 5

Slide 5 text

MP4 本日の発表内容について 今回、我々MP4でHardeningの経験を元に  WordPress Hardening CheetSheet を作成いたしました。 本日は作成経緯からチートシートの内容紹介・活用方法まで 簡単にご紹介いたします。

Slide 6

Slide 6 text

WordPress Hardening CheetSheet 作成に至る背景 MP4のミッションは 6月20日、 競技当日に沖縄で知ることとなる

Slide 7

Slide 7 text

競技参加者のミッションをまとめるお仕事のはず・・・ 競技者作成のマニュアルをまとめればいいのか〜 やることは明確だね あれ?提出したのはたった 1チーム?! 脆弱性に特化した内容でチートシートには・・・

Slide 8

Slide 8 text

ならばつくってしまいましょう! コンセプト: 比較的易しめで、最低限実施すべきセキュリティ 対策を網羅したシートを作成する 対象者: ・WordPress初心者層 ・個人でブログやプラグインを利用しサイトを管理している人 ・中小企業でカスタマイズ・チューニングを実施できる人 ・Hardening参加者(が最初に実施すべき事項)

Slide 9

Slide 9 text

Summary コンテンツ抜粋: ・WordPressアップデート ・デフォルト設定を変更 ・管理画面のアクセス権限 ・不要なサービス起動の禁止 ・攻撃緩和策の実施 ・ログの管理 ・バックアップ ・個人情報の管理  等々 鋭意取りまとめ中。近日公開予定!

Slide 10

Slide 10 text

Hardening Projectの教訓について チートシートの一部内容や今後の活動を紹介 いたします。特にHardeningの経験を通じて学んだ 内容をピックアップ。 メニュー: ・WordPressアップデートについて (@sasser_jp) ・脆弱な環境の構築について (@delphinz) ・可用性について (@TSB_KZK)

Slide 11

Slide 11 text

WordPressアップデートについて (@sasser_jp)

Slide 12

Slide 12 text

WordPressアップデートについて ▼WordPressアップデート(チートシート抜粋) ・WordPressの最新版が無いか確認する。 - WordPressダッシュボードから最新版を確認する。 コアのアップデート プラグインの アップデート

Slide 13

Slide 13 text

Hardening 10 MarketPlaceでも・・・ 本体(コア)と3つのプラグインの 脆弱性が攻撃対象に・・・ 既知の脆弱性はアップデートすれば 対処できる

Slide 14

Slide 14 text

いきなり攻撃はやってくる まずはプラグインの一時停止を検討する 例:FancyBox:画像を拡大表示不可   wp−filemanger : FTPクライアントを利用 Hardening 10 MarketPlaceでは、今回より用意いただいた検証環境が あるので確認してから停止するとなおよし

Slide 15

Slide 15 text

プラグインの手動アップデートを実施 ①アップデートファイル のダウンロード # cp -pR /var/www/wordpress/wp-content/plugins/fancybox-for-wordpress/ /tmp/ # unzip -d /var/www/wordpress/wp-content/plugins/ -o fancybox-for-wordpress.3.0.6.zip # diff -qr /tmp/fancybox-for-wordpress/ /var/www/wordpress/wp-content/plugins/fancybox-for-wordpress/ ②プラグインファイル上書き ③ アップデート完了 # 本体(コア)の手動アップグレードは下記参照 http://wpdocs.osdn.jp/WordPress_のアップグレード Hardening の環境ではサーバが直接インターネット上のファイ ルを取得できないので手動アップデートが必要

Slide 16

Slide 16 text

それでもアップデートできない場合 ▼別のリスク緩和策を検討する ・アクセスを制御 (IPアドレス制御、BASIC認証) ・ログの取得・監視(アクセスログ・エラーログ) ・バックアップを定期的に取得 ・WAF、セキュリティ系プラグインの利用 ・WPSCAN等で脆弱性診断を実施 ・機密情報を保持しない ・インシデント対応の事前準備 Hardeningでは、できる範囲で対策を実装すること

Slide 17

Slide 17 text

脆弱な環境の構築について (@delphinz)

Slide 18

Slide 18 text

そもそも検証環境をどうやって用意すべきか WordPressの脆弱性を検証するのって面倒じゃない?  よろしいならば構築だ!  残暑お見舞いにhardeningで使われた  WordPress脆弱性をつめこんだ  環境構築スクリプトを作成しました! githubにて公開(READMEはあとで書く!) https://github.com/delphinz/vulnerable-wordpress-playbook

Slide 19

Slide 19 text

WordPress脆弱性詰め合わせの内容 インストールされるパッケージ 項目 属性 バージョン リリース日 WordPress 本体 4.1 2014-12-19 welcart_default テーマ プラグインに準拠 - MailPoet newsletters プラグイン 2.6.6 2014-04-30. fancy box プラグイン 3.0.2 ? wp-file manager プラグイン 1.2 ? Welcart e-Commerce プラグイン 1.2.1 2012-10-5 amazon ami (micro) でおよそ3分前後で構築できます! ※ wpcli の制限で4.1より古いバージョンが入らなかった(汗) amazon ami@ec2 & centos6.6@vmware で検証済み!

Slide 20

Slide 20 text

環境構築に使用した要素技術 ansible Pythonで書かれたサーバ環境の構成管理ツール。 chefと違ってサーバへのインストール不要! 設定はYAMLファイルとして記述します。 Pythonがわからなくても使えます! http://www. ansible.com/home wpcli wordpresの操作をコマンドラインから行えるようにするツール WordPress本体、plugin、theme のインストール・アップデートや投稿の管理も可能! http://wp-cli.org/ その他 「awscli」 もサーバの起動・破棄が即座に行えて便利!

Slide 21

Slide 21 text

今後の展望 盛り込めなかったコト - WordPress以外の脆弱性も入れたかった  → shellshckやheartbleed 、サーバ設定不備etc - サンプルデータの投入  → 商品0件、初期画面がwelcartデフォルト画面・・・ - クローラの実装  → 負荷をかける & チューニングを試してみる - 監視環境のインストール  → 負荷を監視してみる ( Pandora FMS がイイよ!) ゆくゆくは 「ぼっちMINI hardening環境」 へ???

Slide 22

Slide 22 text

可用性について (@TSB_KZK)

Slide 23

Slide 23 text

可用性は Hardening の永遠の命題 そもそもサイトが停止したらビジネスに直結 他のECサイトが落ちているときはビジネスチャンス wikipedia にも書いてある

Slide 24

Slide 24 text

可用性を考える 負荷ひとつ取っても正常異常さまざま考えられる 古くはF5連打 DoS 不正パケット系 トラフィック埋める系 バルス! Yahoo砲とかWBS砲とか とにかく、自分にできることをやろう! 対処すべき攻撃 助けてーと叫ぶ

Slide 25

Slide 25 text

ぜひ聞きたい そのデフォルト設定で、  8時間戦えますか? デフォルト設定だと最大で  256clients x 128MB ≒ 32GB ※memory_limitに依存。デフォルト128MB? $ cat /etc/httpd/conf/httpd.conf StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000

Slide 26

Slide 26 text

・具体的には何やればいいの? チューニング httpd.conf の設定 MaxRequestsPerChild: デフォルト4000 -> php なら数百以下がベター MaxClients: メモリ量に応じて。デフォルト256は大きい Keepalive on かつ KeepAliveTimeout 短めに ※ロードバランサ利用時は要注意 キャッシュプラグインの導入 静的ファイルのキャッシュ / ブラウザキャッシュ フロントでの防御 主にiptables。DoS を防ぐ設定を。 “粘り強い”設定を!

Slide 27

Slide 27 text

まだ足りない? ・よろしい、ならば翼を授けよう APC(Alternative PHP Cache) リバースプロキシの導入(nginx, varnish, etc) mysqlチューニング LAMP からの脱却。 nginx とか ・最後はお金の力で解決 スケールアップ バランシング CDN

Slide 28

Slide 28 text

まとめ ”習うより慣れよ” 最後に、まずは体感してください。 MINI Hardening という初心者向けハードニング 競技イベントを定期的に開催していますので、 是非ご検討ください。 ※ 次回は8/29(土)に開催。大阪開催予定も? http://minihardening.connpass.com/ ハッシュタグ #minihardening