62
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

基本的セキュリティ対策チェックリスト(CentOS7 @ さくらのVPS)

Last updated at Posted at 2017-07-04

"Security is a journey, not a destination."
by Bruce Schneier

セキュリテイ・チェックリスト

OS(CentOS7)をインストールした直後に設定するセキュリティ対策の ToDo リストです。

可能な限りインラインコードや括弧内は、各々にそのキーワードで検索の関連リンクを張っています。

「さくらの VPS」ユーザーは、主に Apache の設定がメインであるものの『VPS 設定マニュアル』は必読だと思います。


  • アップデート(yum update, WordPress, plug-inなど)
    • yum --enablerepo=remi,remi-php56 update -y && reboot (KUSANAGIの場合)
  • root のパスワードを他のユーザと同じにしない
  • root になれるユーザの作成と限定
  • log を監視しやすい体制を整える
  • 接続失敗を繰り返す IP をブロックする
  • 不要なポートを閉じる

SSHの任意のポートをファイアーウォールに開ける(要sshd_config変更済み)
$ # 設定の確認
$ firewall-cmd --list-all
$ # 設定ファイルの作成(SSH 22 ポートの設定ファイルをコピー)
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-<ポート番号>.xml
$ # XML 内のポート番号の箇所を変更
$ vi /etc/firewalld/services/ssh-<ポート番号>.xml
$ # 設定変更(旧 SSH のポート 22 を閉じて新しい SSH のポートを開ける)
$ firewall-cmd --permanent --remove-service=ssh
$ firewall-cmd --permanent --add-service=ssh-<ポート番号>
$ firewall-cmd --reload
$ # 設定の確認
$ firewall-cmd --list-all
ランダムな空きポートの取得ワンライナー
(netstat --listening --all --tcp --numeric | sed '1,2d; s/[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*:\([0-9]*\)[[:space:]]*.*/\1/g'| sort -n | uniq; seq 1 $PORT_NUM_MIN; seq 1 $PORT_NUM_MAX ) | sort -n | uniq -u | shuf -n 1

  • Web サーバ(主に nginx)
    • http 接続を https に転送させる(/etc/nginx/conf.d/*_http.conf
    • Let's Encrypt/SSLの更新(有効期限確認)
    • HTTP応答ヘッダー
      • OS のバージョン情報を含めない(server_tokens
      • SSL 用に HSTS を含める設定(Strict-Transport-Security)
      • CSP を含める設定(Content-Security-Policy
      • X-Frame-Option を SAMEORIGIN に設定にする(iframe での利用拒否、DENY が理想)
      • ダウンロードしたファイルの種類をファイルの内容から決定させない(X-Content-Type-Options を "nosniff" に
        • OWASP ZAP ツールの X-Content-Type-Options header missing エラー対策
      • ダウンロードしたファイルを自動で開かせない(X-Download-Options
    • SSL の conf に SSLv2, SSLv3 が含まれていないか確認(ssl_protocols
    • デフォルトの Welcome ページを変更する
    • DocumentRoot 以下の各ディレクトリ直下に index.html を設置する(ない場合)
    • 資料:KUSANAGI の nginx で HSTS を設定する方法

  • Wordpress の設定
    • DB の接頭辞を "WP_" 以外にする
    • ソース内のWordpressバージョンを非表示にする(remove_action,generator
    • 重要ファイルはWEBアクセス圏外のディレクトリに移動する(wp-config
    • ファイル・ディレクトリの所有者の確認(wp-config.php,0600
    • ファイル・ディレクトリのアクセス権の確認(0700
    • 管理者向けディレクトリはベーシック認証もかける(.htaccess, 0600, wp-admin
    • Wordpress セキュリティ 対策 を Qiita に絞って検索 @ Google


所感

最近、検証のために OS を入れ直すことが多いのですが、バニラ状態から毎回行う設定項目の私的チェック・リストです。VPS だと簡単に入れ直すことが出来て便利ですね。

毎回行うことなので、作業効率的にはスクリプトや Ansible などで設定した方がいいかもしれません。しかし、私は絶対忘れる自信があります。そのため、最低限のセキュリティ設定は体で覚えたいなと思って毎回ゴリゴリ設定しています。もぅ、写経ならぬ乱取り稽古の勢い。

基本的に自分用(メモを見てあっ!と思い出せるもの)なので詳しい内容は記載していませんが、せっかくなので Qiita でシェアします。

「これ忘れとるよー」とお気付きの点や、おすすめの項目などありましたらコメントいただけるとありがたいです。

62
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?