トップ ITインフラ セキュリティ 公開サーバーのセキュリティ

公開サーバーのセキュリティ―脆弱性診断ツールやOSやApache、ルータなど対策観点

脆弱性診断ツールやOSやApache、ルータなど対策観点など。公開サーバーのセキュリティについてまとめています。

ツール、OSやミドルウェア、ルータなどネットワーク機器の順にまとめていきます。

ツール

エンジニアの観点やパターンファイルは重要ですが、ツールを使いこなせなければ見つけられるものも見つからなかったりしますね。 オープンソースのツール中心にピックアップしています。

診断ツール

Webアプリケーションファイアフォール(WAF)

IDS(侵入検知システム)

監視ツール

解析ツール

OS

リモートアクセスできるユーザを制限する

rootやミドルウェア操作ユーザなど一般的な名前のユーザはリモート接続できないようにします。

# vi /etc/ssh/sshd_config

#PermitRootLogin yes
⇒コメントを外し、PermitRootLogin noにします。
service sshd restart

パスワード

数字と英字の組合せ16文字以上にして解読しにくいパスワードを使用し、定期的に変更します。

OSのパッチ適用を最新化

Linux

# yum update

Web・APサーバ

Apache HTTP Serverの例となっていますが、同じ観点でnginxも設定できると思います。

ページ表示、送受信

ヘッダー関連

基本的なヘッダ関連の対策例です。

Apache HTTP Serverのバージョン情報などを非表示にする例

# vi httpd.conf
変更前)ServerTokens OS
変更後)ServerTokens Prod

クリックジャッキング(フレームタグを使用した偽サイト)防止の例

# vi httpd.conf
追加)Header always append X-Frame-Options SAMEORIGIN

IE8以降に導入されたXSSフィルターの活性化

# vi httpd.conf
追加)Header set X-XSS-Protection "1; mode=block"

MIME タイプの問題を悪用した攻撃を防ぐ

# vi httpd.conf
追加)Header set X-Content-Type-Options nosniff

IEでダウンロードしたファイルを直接開かせない

# vi httpd.conf
追加)Header set X-Download-Options: noopen

SSLv2 および SSLv3 を無効にする (SSLv2 と SSLv3 以外はすべて有効にする)

# vi httpd.conf
追加)SSLProtocol All -SSLv2 -SSLv3

定期的なログの確認

ログを閲覧すると攻撃を目のあたりにできるので、 恐怖心から想像したり確認したり、調べたりするので効果的に知識がつくと思います。 なので定期的に自分の目でログを確認するといいです。

攻撃パターンを考えたり、勉強する

攻撃パターンの例

  1. whoisなどサイトで存在するグローバルIPアドレスと所有者情報の一覧を作る。
  2. 22番ポートでSSH接続で応答があるものの一覧を作る。
  3. そのIPアドレスのWEBサイトにアクセスしたり、攻撃したりして情報(OSやミドルウェア)の情報を収集する。
  4. OSやミドルウェアの脆弱性を狙ってさらに情報収集する。
  5. 調べた情報をもとに特定または連想されるユーザでログインとパスワードで認証を繰り返しログインする。
  6. ログインできたら、プロセス情報やログイン情報が表示されないようにしたOSのライブラリを配置する。
  7. そのサーバを利用して悪用する。
  8. ライブラリなど元に戻してアクセスの痕跡を消して気づかれないようにして終了する。

ログインユーザのIPアドレスチェック

SSHによるアクセスを/var/log/secureログで確認します。

知らない<IPアドレス>でログイン成功していないか?

知らない<IPアドレス>があったら、即座にユーザのパスワードを変更し、 sshdのポートを変更したり、サーバーのIPアドレスを変えたり、できる対策を検討します。

cat /var/log/secure |grep Accepted
Mar 22 16:39:01 <ホスト名> sshd[<プロセスID>]: Accepted password for <ユーザ> from <IPアドレス> port <ポート> ssh2

※/var/log/secure-日付のログも忘れずに確認します。

知らない<IPアドレス>でパスワード失敗が出ていないか?

知らない<IPアドレス>でパスワード失敗が出ていたら、 設定ポートでSSH接続できることが知られているので sshdのポートを変更したり、サーバーのIPアドレスを変えたり、できる対策を検討します。

# cat /var/log/secure | grep "Failed password"
Apr 23 00:18:20 <ホスト名> sshd[<プロセスID>]: Failed password for invalid user <ユーザ> from <IPアドレス> port <ポート> ssh2

※root、ドメイン名、組織名、tomcatなどミドルウェア名、adminなど簡単にわかるユーザ名のユーザは使用しないこと。 ユーザ名まで分かるので後はパスワードの組合せを試すだけという状態になるので危険。

その他の知らない<IPアドレス>からの接続確認

netstatでも確認できます。 Foreignのところに知らないIPが有るとだめです。

# netstat -tnap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
:
tcp        0     52 <ローカルIP>:<SSHポート>          222.186.134.90:35143        ESTABLISHED 14385/sshd
:

※222.186.134.90は実際にログインを繰り返してきたChinaのIP。

ルータ

自宅のルータの例

パスワード

数字と英字の組合せ16文字以上にして解読しにくいパスワードを使用し、定期的に変更します。

ファイアウォール設定

使用するポート以外は通過しないように設定します。 LAN外からFTPやSSHなどリモートアクセスできないようにします。

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Bcc /Eclipse /gcc /gdb /g++ /JDK /JUnit /ZAP

技術・仕様
Ajax /CORBA /Java EE(旧称J2EE) /JNI

ライブラリ/Framework/CMS
jQuery /Lucene /MyBatis /RESTEasy /Spring /Struts /Seasar2 /WordPress

ITインフラ OSとミドルウェア
Linux /Windows /シェル
Apache/Tomcat /MySQL /Redis /Solr /vsftpd

ITインフラ PC 製品
ZOTAC

ITインフラ サーバー
Web公開サーバー構築

ITインフラ ネットワーク
プログラミング /機器 /構築

ITインフラ セキュリティ
公開サーバーのセキュリティ

SI
ホームページの作り方 /小さな会社のISMS

その他
IT用語 /ITスキル体系 /トレンド履歴 /翻訳英語の学習 /RSEUserGuide翻訳

スポンサーリンク