サーバのセキュリティチェックというのは、管理者にとって非常に大切な業務である。昨今、セキュリティに対する意識が非常に高くなったという背景も有る。だが、俺は思うのだが個人の情報とかのセキュリティに対する意識は高くなってるかもしれないが、ネットワークやサーバに対するセキュリティ意識はまだまだ低いと思う。はっきり言わせてもらうが、趣味の領域の自宅サーバ管理のノウハウで企業のサーバのセキュリティ管理を行うというのはいささか物を知らない、とうしろうかと思う程である。2006年に入ってから、ISMS(ISO27000)情報セキュリティマネージメントシステムのようなISOの取り組みも企業間でのステータスとなりつつある。サーバ管理者のスキルアップはもちろんだが、企業のトップが情報システム管理者の重みをもっと認識すべきである。ここでは、ある会社のサーバ管理のセキュリティチェック項目を管理者用にまとめている。これで良い!と言うことは無いけど、サーバのセキュリティチェックのたたき台にはなるかと思う。
1.セキュリティ監視を行うための事前準備(セキュリティチェックを始める前に)
|
syslogの設定確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
syslog設定の確認を行う。(syslog.conf) |
auth、messages、secure、daemon、cron、の各log出力が行われるように設定してあることを確認する。詳しくは、
ここ を参照すること。 |
|
logrotateの設定確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
logrotate設定の確認を行う。(logrotate.conf) |
各logファイルのlogrotateの設定が行われていること。設定したlogファイルのrotateが行われ、ファイルサイズが肥大していないことを確認する。詳しくは、
ここ を参照すること。 |
|
ブートローダの確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
現在システムで使用しているブートローダの種類を調査する(特に古いカーネルのアップデートに支障が有るか無いかの確認のため)。
|
LILOまたはGRUBのどちらを使用しているか確認する。(起動時画面を確認) |
|
カーネルの確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
各サーバで使用しているカーネルの種類/バージョンを調査する(セキュリティホールが有り無しの判断のため)。
|
各サーバのカーネルの種類やバージョンを一覧にまとめる。 |
|
使用モジュールのバージョン調査
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
各サーバで使用しているモジュールのバージョンの調査を行う(セキュリティホールのない最新のバージョンであるか)。
|
各サーバの使用モジュールのバージョンを一覧にまとめる。 |
|
プロミスキャスモードの確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「ifconfig -a」を実行してプロミスキャスモードになっていないことを確認(どんなパケットでも受けとちゃうよモードは危険、さらにはトラフィック過多の元)。
|
コマンド実行結果の内容の「UP BROADCASAT」が「RUNNING
PROMISC」になっていたら、 ここ
を参考にプロミスキャスモードを解除すること。 |
|
メール不正中継の確認(Globalサーバのみ対象)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
不正中継調査機関のサイトでチェック(ORBLのサイト)を行う。つまり、MTAの設定チェック。 |
rbl.jp
で、メールの不正中継が行える設定でないことを確認する。もしくは、ORDB.org
で、メールの不正中継が行える設定でないことを確認する。 |
注:必要とあらばPrivateサーバにも適用する事。
|
モジュールのアクセス制御の確認(Globalサーバのみ対象)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
hosts_denyの内容を確認する。 ここ
の2項を参考にすること。 |
全てのサービスを禁止(ALL:ALL)の状態になっていること。 |
| 2 |
hosts.allowの内容を確認する。 ここ
の2項を参考にすること。 |
社内からの接続のみ許可の状態になっていることを確認する。(ALL
: 192.168.0.0/255.255.255.0等)
※サーバによって条件(設定)は異なるので注意。 |
| 3 |
「tcpmatch」コマンドを使用して、TCP_Wapperの設定の評価を行う。(設定したアクセス制限をシミュレーション) |
社内からの接続は、access: granted(許可)になり、それ以外は、access:denied(不許可)になること。要領は
ここ の2項を参照すること。 |
注:必要とあらばPrivateサーバにも適用する事。
|
バックアップサーバが用意してあるかの確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
現在使用しているサーバの予備を準備してあるか確認する。 |
サーバ予備機(サーバクーロン)が準備してあることを確認する。
※予備機が準備できていない場合は準備すること。 |
|
ルータのファームウェアのバージョンチェック
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
ルータのファームウェアのバージョンが最新版であることを確認する。 |
ルータのファームウェアのバージョンが最新版であること。
※最新版で無い場合、メーカのサイトからダウンロードしてファームウェアのupdateをおこなうこと。 |
2.セキュリィティチェック評価項目一覧(毎日、全サーバ確認)
|
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
各サーバの稼働状態監視。
アイコン表示色
■ 緑色:正常
■ 青色:通信障害発生→復旧
■ ピンク色:通信障害中 |
画面に表示される各ホストのアイコンが緑色に表示されていること。常に各サーバの状態を監視する。基本的にlogは毎日上書きされてしまうので、必要なlogを保存し、障害情報を確認する。
※同一サーバ、同一時間帯で定期的に発生しているか等。 |
| 2 |
logの内容(状態)を確認し、通信障害が発生していないことを確認する。
※業務時間外もしくは休日中に通信障害が発生していないことを確認。 |
状態表示を確認し、「正常」および「ユーザー情報」以外のlogが出力されていないこと。
※毎日logの保存を行い、障害情報の集計を行う。障害が同じサーバで同時間帯に定期的に発生しているか等。 |
logcheck
の実行(logchackで出力されたSystem Events及びSecurity Eventsの確認)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
各サーバのSystem Eventsの内容を確認する。
※サーバの種類によって出力結果が異なるので注意のこと。 |
不振な内容が無いことを確認する。logの見方は、 ここ
を参照すること。
※明らかに不振な内容については原因を究明する。(突発的か定期的に発生するかの切り分けも行う)サーバ用途別に不振な内容の一覧をまとめる。 |
| 2 |
各サーバのSecurity Eventsの内容を確認する。
※サーバの種類によって出力結果が異なるので注意のこと。 |
不正アクセス、DoS攻撃等、明らかに不振な内容が無いことを確認する。logの見方は、
ここ を参照すること。
※同じホストもしくはIPアドレスからの不正なアクセスが有る場合は、相手先を特定して、それが企業だった場合、証拠のlogを用意して、その会社の情報システムの管理者に連絡をして、その旨伝えること。 |
| 3 |
logrotateのエラーが出力されていないか確認する。 |
errors rotating logs等のエラーメッセージがないことを確認する。
※エラーが有る場合は、logrotate.confの設定を確認して編集すること。 |
3.セキュリィティチェック評価項目一覧(毎日、Globalサーバのみ確認)
rkHunter
(rootkitを探すツール)の実行の検出(結果logの内容を確認)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
File checks及びSelftests項目の検査結果を確認する。 |
結果が全て「OK」であること。 |
| 2 |
Rootkits項目の検査結果を確認する。 |
結果が全て「Not Found」であること。 |
| 3 |
malware項目の検査結果を確認する。 |
結果「OK」であること。 |
| 4 |
Login backdoors check項目の検査結果を確認する。 |
結果が全て「OK」であること。 |
| 5 |
File attributes項目の検査結果を確認する。(Fileの属性チェック) |
エラーが出力されていないこと。(Fileの属性チェック) |
| 6 |
Back doors項目の検査結果を確認する。 |
結果が全て「OK」であること。 |
| 7 |
Application version
checkの内容を確認する。 |
使用しているモジュールのversionを確認し、最新のバージョンになっていること。(古い場合は、update可能か調査する。) |
| 8 |
Security advisoriesの内容を確認する。(改善点のチェック) |
改善点が出力されている場合は、改善可能であるか調査し、可能であれば設定を変更する。 |
注:rkhunter自体のアップデートチェックも忘れずに(このスクリプトは、頻繁にアップデートされるらしい)。
4.セキュリィティチェック評価項目一覧(週二回、全サーバ確認)
|
プロセスチェック
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「ps -ef」コマンドを実行し稼働中プロセスの確認を行う。 |
運用に不振なプロセスが起動していないことを確認する。
※各Server毎に正常稼働時のプロセス一覧と比較する。
※基本的にリモートシェルを禁止する。したがって、TelnetもしくはSSHが稼動していないことを確認する。 |
| 2 |
必要なプロセスが停止していないかを確認する。
※各Server毎に正常稼働時のプロセス一覧と比較する。 |
|
Lastコマンドの実行(最終ログインユーザの確認)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「Last」コマンドを実行し、最終ログインユーザを確認する。 |
基本的にサーバ管理担当許可者以外のログインが無いことを確認する。 |
|
wコマンドの実行(同時ログインユーザの確認)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「w」コマンドを実行し、同時ログインユーザを確認する。 |
サーバ管理担当許可者以外の同時ログインユーザがないことを確認する。 |
不振なモジュールのチェック( Setuid
ファイルの確認)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「find / -type f \( -perm -u+s
-o -perm -g+s \) -exec ls -al '{}' \;」コマンドを実行しSetuidファイル一覧を表示する。 |
タイムスタンプが最近で、見たことがない怪しいファイルが存在していないことを確認する。
※怪しいファイルは「file」及び「strings」コマンド使用して内容を調査する。
「file」 = ファイルの種類を表示する。
「strings」= ファイル中の表示可能な文字列を表示する。 |
|
ログの確認(Auth/messages/secure/cron/daemon)
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
auth.logの内容を確認する。(認証に関する情報) |
不正アクセスの形跡はないか。 |
| 2 |
messages.logの内容を確認する。(一般的なシステムに関する情報) |
モジュールはエラーやワーニングを吐いてないか。 |
| 3 |
secure.logの内容を確認する。(セキュリティに関する情報) |
リモートポートへの不正アクセスの形跡は無いか。
DoSアタックの形跡はないか。
ポートスキャンの形跡はないか。 |
| 4 |
cron.logの内容を確認する。 |
必要ないジョブがスケジューリングされていないか。
cronデーモン自体は正常に動いているか。 |
| 5 |
daemon.logの内容を確認する。(常駐プログラム) |
リモートポートへの不正アクセスの形跡は無いか。
DoSアタックの形跡はないか。
ポートスキャンの形跡はないか。
不要なdaemonが動いてないか。
カーネルから吐き出されているエラーやワーニングは無いか。 |
|
パッケージ管理ツールによるアップデート
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
apt-get update ; apt-get upgrade等のコマンドでモジュールのアップデートを行う。 |
必要なモジュールのアップデートがないか。
※アップデートが有る場合は速やかにアップデートする。 |
注:ただし、apt-getについてはカーネルのアップデートまでやってくれるので、カーネルのアップデートをして欲しくない場合はアップデートしないように
ここ を参考にしてカーネルアップデートロックを掛けた方がよい。
5.セキュリィティチェック評価項目一覧(週二回、Globalサーバのみ確認)
|
Portのチェック
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
SuperScanもしくは nmap
(ポートスキャナ)を使用して、Portの状態を確認する。 |
Clientからスキャンして、不要なPortもしくは不振なPortが開いてないことを確認する。 |
|
lsof コマンドの実行
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
「lsof」コマンドを実行してLISTEN状態のPortを確認する。
lsof -i | grep LISTEN |
不審なLISTEN Portがないことを確認する。 |
|
リモート接続不可の確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
Globalサーバへのリモート接続を行う。(telnetもしくはssh) |
対象サーバのプロセス確認を行ってサービスが動いてない事をかくにんしてから、Clientよりリモート接続が行えないことを確認する。(対象のサーバに拒否されることを確認) |
|
mail.logの確認
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
mail.logの内容を見て、不正中継が行われていないか確認する。
|
メールの不正中継が行われていないことを確認する。これは、時々で良いがターゲットメールサーバの
不正中継ブラックリストチェック
をしたほうが望ましい。
※不正中継元は集計する。(不正中継元や頻度や時間帯を調査する。頻繁に不正中継を仕掛けてくるホストを優先的にMTAの設定でrejectする) |
6.セキュリィティチェック評価項目一覧(随時確認)
|
Unixモジュールのセキュリティホールのチェック
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
使用しているモジュールのバージョンにセキュリティホールがないか。 |
使用している各モジュールのバージョンに、セキュリティホールが発生していないことを確認する。セキュリティホールが見つかり次第、セキュリティパッチが出ているようなら当てる。
JPCERT
IPAセキュリティセンター
|
|
Unixモジュールのセキュリティホールのチェック
|
|
No
|
評価内容
|
合否判定基準
|
| 1 |
使用しているモジュールのバージョンにセキュリティホールがないか。 |
使用している各モジュールのバージョンに、セキュリティホールが発生していないことを確認する。
JPCERT
IPAセキュリティセンター
|
以上がチェック項目として上げてる一覧である。これで「完璧」と言う事は決してない。だけど、これだけのチェックをやっているサーバ管理者がこの世にどれだけ居るだろうか?私的に思うが、それほど多いとは思えない。本当なら、もっと色々なツールを使った攻撃や侵入のシュミレーションをターゲットサーバに行うのがベストだと思う。後は、事を起こされた後のフォローだ、ターゲットサーバのクーロンを作っておくのが望ましい。この件は、チェック項目の事前準備にもうたっている。
以上
|