Apache周りのセキュリティ

昨年末からいろいろあって、全てのWEBサーバのセキュリティ診断を行っています。

診断は、業界では有名なLAC社に委託をしているので、技術力は問題無いのですが、その指摘の細かさに驚きつつ、そんな穴誰も突付かないだろw(決してラックには言えませんが・・・)
とツッコミつつも、ミドルウェアの設定を変更したりバージョンアップを行っています。

で、その中では僕の認識が甘かった部分や、知らなかった物が何個もあったので、その対策とかのメモ。

【Apache】
 (1)ローカルユーザー情報の漏洩
    Userdir public_htmlとかなっていると、
    http://ドメイン/~存在するユーザー名   ・・・ Forbbiden
    http://ドメイン/~存在しないユーザー名  ・・・ Not Found
    となり、生きてるユーザーがいる事が分かってしまう。

    まぁ、会社のシステムでは使っていない機能なので停止。    
    Userdir disabled

 (2)エラーページからシステム情報の漏洩
    デフォルトだと400系や500系の時にApache情報が記載されるので、
    そこから脆弱性が漏れる可能性がある。
    ServerTokens Prod
    ServerSignature Off

【SSL】
 (3)脆弱な暗号化(SSLv2)のサポート
    SSLv2をサポートしている事自体がダメなんだって。
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+Exp:+eNULL
    SSLProtocol ALL –SSLv2

【PHP】
 (4)PHPトラッカー情報の漏洩
    これもシステム情報の漏洩系。
    expose_php = Off

ネットワークを簡単に切り替える方法

複数台のPCを、一時的に社外のネットワークに切り替える必要があった。

ITスキルが乏しい人に代えてもらうので、「ゲートウェイを○○にして、DNSはxxで、ブラウザのプロキシを外して・・・」とかを1人1人説明していたら時間が掛かってしまう。

全員が同じ時間に設定を切り替えるのであれば、指定時間にまとめてタスクを走らせる事もできるんだけど、今回はそれもNG。

今回は一時的なものだし、利用者が任意かつ簡単にネットワークの方法を替えられるように、batファイルを作成して、それを実行してもらおう。

用意するもの1(社外のネットワークに変更)
①static.bat(社外ネットワークは固定です)
②delproxy.reg

用意するもの2(社内のネットワークに変更)
③dhcp.bat(社内はDHCP付与)
④setproxy.reg

これを同じフォルダに保存してもらう、
社外のネットワークに接続するときは、static.batをクリック後にLANケーブルの差し替え、
社内のネットワークに接続するときは、dhcp.batをクリック後にLANケーブルの差し替えをやってもらおう。

続きを読む ネットワークを簡単に切り替える方法

1階に有線LANを通す!

久しぶりの更新w

約3ヶ月振りです(サボり過ぎ!)

さて、我が家のネットワークは、2階の子供部屋に”情報分伝盤”とやらが取り付けられており、そこにアンテナからのTV配線や光の終端装置が設置されています。

嫁が1階でPCを使うので、今までは2階に無線LANのAPを置いていましたが、最近の暑さでAPやルーターが過剰に熱を持ってしまい、日中にネットに繋がらないとクレームを度々言われていました(^^;)

そこで、嫁対策の為に、情報分伝盤の近くに小型の扇風機を置いてルーターを冷ますのと、1階にAPを移設して嫁PCの電波感度の向上を行ってみました!

1階にAPを置くには、LANケーブルを1階に通す必要がありますが、幸い壁の中にCD管が埋め込まれていたので、この中にLANケーブルを
通すことにしました。

ネットで調べてみると、引込み線たる針金が必要らしいですが、数十メートルで\4,000とか結構いい値段がしてしまいます(^^;)

そんなお金は小遣いから捻出出来るはずも無いので、さらに調べてみると、100均のビニール紐と掃除機で代用できると情報を見つけました!

LAN工事ドットコム様

で、まねてみました!

写真は取っていませんでが、ビニール紐+掃除機で、らくらく呼び込み線は開通!

で、ビニール紐の片側にLANケーブルを固定し、反対から引っ張るのみ!

20100822_1.jpg
通ったーーー!

コンセント部分は、Amazonで安価だったモジュラジャックを購入。
モジュラジャック(Amazon)

20100822_2.jpg
ケーブルを剥き、モジュラジャックの所定の位置に配線をして、、、

20100822_3.jpg
付属の部品でケーブルを挟む!
で、コンセント部分の完成!
20100822_4.jpgあとは、壁に取り付けるだけw
20100822_5.jpg
子供らに邪魔されながらの作業でしたが、1人でやって大体2時間程度で終了。
電気屋さんに工事費用に聞いたら¥12,000って言われていた工事が、部品代だけで¥2,000ぐらいで収まったのが1番うれしいw

あと、2階の機器に扇風機の風を当てているので、少しは嫁からのクレームも無くなるかな。

MT5.02にしてみたよ

MovableTypeのセキュリティリリースが5月12日にあったっぽいので、ウチもバージョンアップしてみました。

[重要] セキュリティアップデート Movable Type 5.02 の提供を開始

今までPostgreSQLでMT4.27を動かしていたけど、DBをMySQLに変更してMT5にアップグレードw

しかも仕事中にw

今も会社ですが、記事の作成テストを兼ねて、動作確認してみます。

問題なさそう?

DL360のCPU温度異常

昨年の11月に買ったばかりのHP DL360で、CPUの温度異常だとよw

Mar 19 14:36:23 hogeserver hpasmxld[3774]: WARNING: System Overheating (Zone 21, Location System, Temperature 66C)
Mar 19 14:36:23 hogeserver hpasmxld[3774]: A System Reboot has been requested by the management processor in 60 seconds.
Mar 19 14:36:23 hogeserver wall[9101]: wall: user root broadcasted 1 lines (79 chars)

週明けの火曜日ににハード交換だな。

sftp接続のカスタマイズ

以前構築した、OpenSSHを使って、chroot環境下でSFTPを動かす方法のカスタマイズを行った。

今回設定したのは、ログ出力と、bash権限を持つアカウントだけ鍵認証を行う設定。

理想の状態はこんな感じ。

  1. chroot後の環境で、データのやりとりをsyslogで管理したい
  2. sftpのログ専用のファシリティを設ける
  3. rsshユーザーはパスワード認証、bashユーザーは鍵認証をさせる

【 chroot環境下のログの採取方法 & sftpファシリティの追加】
通常、chroot環境では、/dev/logを参照することが出来ないので、ログ出力は行えない。
そこで、syslogのオプションに、chroot後のディレクトリのdev/に、ソケットを作成する記述を行う。

[/etc/sysconfig/syslog]
 変更前:SYSLOGD_OPTIONS=”-m 0″
 変更後:SYSLOGD_OPTIONS=”-m 0 -a chrootディレクトリ/dev/log”

通常では-aオプションは19個までしか設定出来ないっぽい。

オプションの変更後、syslogを再起動すると、設定したchrootディレクトリ/varにlogファイルが作成されている。

次に、sshd_configのSubSystemの箇所に、internal-sftpにログを出力するように編集し、編集後sshdの再起動を行う。

[/etc/ssh/sshd_config]
 変更前:Subsystem       sftp    internal-sftp
 変更後:Subsystem       sftp    internal-sftp -f local1 -l info

※-fはsyslogのファシリティ、-lでログレベルを指定する。

参考にしたサイトとかだと、ファシリティをauthprivに設定しているとこが多かったけど、/var/log/secureにsftpのログを追記したくなかったので変更する。
新規にlocal1というファシリティを作成して、そのログを/var/log/sftp.logに出力するように設定。
作成後、syslogの再起動が必要。

 echo “local1.* /var/log/sftp.log” >> /etc/syslog.conf

【 SSHの認証方法の変更 】
最後にbashも持つアカウントは鍵認証をさせて、sftp専用のユーザーはパスワード認証をさせる。

[/etc/ssh/sshd_config]
全ユーザー共通の設定(鍵認証させる)
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no

sftpユーザーはMatchのこんな感じになる。
 
Match Group chrootgroup
PasswordAuthentication yes
AllowAgentForwarding no
AllowTcpForwarding no
ChrootDirectory /usr/local/chroot/
PubkeyAuthentication no

ここまで設定したら、sshdを再起動。

試しに、teratermからsftpユーザーで接続してみると、ユーザー名とパスワードの入力プロンプトは表示されるが、正常なパスワードであっても、一瞬rsshのエラーが出てきて接続が終了する。

iphoneが壊れた・・・

電源が切れたので、充電ケーブルを差し込んで電源を入れたら、最初のリンゴマークから全然先に進まなくなった。

修復方法を調べたら、こちらの記事と一緒の状況とだったので、記事通りに対応すると、iTuneで認識する事に成功。

バックアップデータが昨年の脱獄前のデータしか無かったが、取り敢えずそこまで戻せました。

今から再脱獄と設定のやり直しです。

修復とか言いつつ、アプリは全部入れ直しってw

BlueCoat ProxySGの監視

nagiosのプラグインを幅広く揃えてあるMonitoringExchangeにも、BlueCoatProxySGのプラグインが存在しなかった為、自作でプラグインを用意する事にしました。

nagiosのプラグインの作成方法を少し調べたら、どうやら決められた終了コードを返せばよいらしい。

終了コードはこれらしい。
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3
DEPENDENT=4

で、作ってみた。
BlueCoatProxySGのMIBを追加している環境で作ったので、MIB定義も念の為アップロードしておく。

bcmib.zip

全てbashで書いています。

例によって、私はプログラマではありませんので、ご使用は自己責任でお願いします。

両方のdiskの状態を取得出来るOIDはあったのですが、snmpwalkでの取得結果が2行表示されますが、nagiosのWEB画面には1行しか送信出来ないの部分をどのように表示させれば分かりやすいのかを考えるのがメンドくさかったので、プラグイン自体を2つに分けていますw

チェックファイルの使い方は、各ファイルをエディタで開き、
 HOST=監視対象のIPアドレス
 COMMUNITY=SNMPのコミュニティ名
 CRITICAL=クリティカルにする値(パーセント)
 WARNING=ワーニングにする値(パーセント)
を修正して下さい。

来週は内部温度監視と、ファン回転数監視のプラグインを作成してみますw

それにしても、BlueCoat ProxySGのCPU使用率が、夜中でも100%に達してクリティカルのアラートがガンガン飛んでくる。
全て2分程度で正常値に戻るので、保存されたキャッシュのクリーニングとかの処理を定期的に実施しているのかな。

なんにしても、アラートメールが結構うざいので、BlueCoat ProxySGのCPU監視のインターバルだけ調整が必要かもしれない。