サーバ設定やること

  • ファイヤーウォールの設定。ポートをとにかく閉じまくる。
  • 作業ユーザ追加。作業ユーザのパスワード設定。
  • 作業ユーザに ssh用公開鍵設置
  • su でrootになれるユーザを作業ユーザのみ制限
  • sudo が使えるユーザ制限を作業ユーザのみに制限
  • root のパスワードを消す(オプション)
  • ソフトは基本 yum とか apt-get で標準のリポジトリから入れれるなら,そっちをつかう。ソースのダウンロードはできるだけしない。標準リポジトリに無い場合は,別のリポジトリ(できるだけメジャーなの)から入れれないか探し,リポジトリをついかする。自分でコンパイルすると大変なだけではなく,セキュリティの修正でバージョンアップした場合再度ダウンロードとコンパイルをしないといけないし,自分でいつ更新されたか調べる必要がある。また,自動設定の不具合がないとも限らないし,gccとかの組み合わせが悪いと変なセキュティホールが出てしまうかもしれない。
  • chkrootkit を入れる
  • logwatchを入れる
  • ssh サーバインストール
    • sshでrootログイン不可に変更
      sshサーバはわざとデフォルトでrootログインは有効なので無効にする。
    • ssh サーバのポート22から別のものに変更
      これをしないとSSHサーバへのクラッキングが多すぎて/var/log/secureログが大変になる。
    • denyhosts インストール
      sshサーバとかへの不正アクセスをしてくるやつのIPアドレスを /etc/hosts.deny に追加して自動拒否設定するソフト。
    • パスワード認証無効化
      パスワードクラックを不可能にしておく。
    • AllowUsers でsshでログインできるユーザを限定
    • sshサーバを自動起動設定
      chkconfig  sshd on とか
    • sshをファイヤーウォールの許可設定
      • アクセス可能なIPアドレス制限をかける。アクセス元IPアドレスが変わらないないか,範囲がはっきりわかっているなら,かける。
  • Webサーバ Apacheを入れる
    • ServerTokens Prod
      ServerSignature Off
      サーバの 情報をほぼ出さなくする。
    • Options の Indexes を消して index.html が無い時ディレクトリ内のファイルを一覧出さないようにする。
    • 403 エラーを 404 エラーに偽装する。
    • KeepAlive On
      をして1回の接続で複数ファイル取得できるようにする。セキュリティ設定ではない。ウェブサーバのパフォーマンスの設定。
  • PHPを入れる。PHP5.3系以上とPHP5.2系とPHP5.1系以下で設定・動作が結構違うのでインストール時PHPのバージョンに注意。使いたいアプリが対応しているかどうか確認。後で入れなおすのは大変なので要注意。
    • php.ini の設定
      • expose_php=off
        でPHPの情報を出さないようにする
      • [PHP]
        default_charset=”UTF-8″
        [mbstring]
        mbstring.internal_encoding=”UTF-8″
        でデフォルトの文字コードはUTF-8
      • [PHP]
        memory_limit でPHPのメモリ使用量を調整。
      • [PHP]
        upload_max_filesize でPHPでアップロードできるファイルサイズ上限の設定。同時に post_max_size でPOSTできる上限のサイズも設定。
      • 他,まだあったはず。
      • 終わったら apacheの再起動
  • MySQLサーバを入れる
    • my.cnf 設定
      [mysqld]
      default-character-set = utf8
      デフォルトの文字コードを UTF-8にしておく。
    • bind-address = 127.0.0.1
      接続できるアドレスを ローカルからのみにしておく。
  • phpからmysqlの接続ライブラリを入れる。
  • phpのgd とかpearとかもろもろを入れる。必要な拡張機能をどかどか入れる。
  • phpMyAdmin を入れる。yumでも入れれるようになったよ。
    • http://ほにゃらら/phpmyadmin/ から別の URLに変更。phpMyAdmin標準ディレクトリへのクラッキングが非常に多い。以前のバージョンにセキュリティホールがあったためだ。
      とにかく全然推測できない URLにすること。 conf.d/phpMyAdmin.conf に Alias でディレクトリが書いてある場合がある。
    • config.inc.php の
      $cfg[‘blowfish_secret’] = ”; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
      をなんかランダムで適当文字を代入するようにする。まぁCOOKIE認証をしなければ設定しなくでもよいが。

      $cfg[‘blowfish_secret’] = ‘ここにランダムな文字’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  • ファイヤーウォールを調整。
    iptables の設定はシンプルにすること。完璧に意味を理解して使うこと。よくわからないとか,複雑にしすぎて設定ミスがあってセキュリティホールになってしまうかもしれないし,設定ミスでリモートからつなぐことができなくなるかもしれない。

これ以外にもいろいろ設定している。長いので省略。

LINEで送る

コメントを残す