セキュリティの問題に適切に対処するには、新規の開発に遅れをとらず、常に最新のセキュリティ問題に関する情報を入手することが重要です。システムをあらゆる種類の問題から保護するために、セキュリティ通知で推奨されているパッケージ更新版をできるだけ迅速に入手してインストールすることをお薦めします。SUSEのセキュリティ通知はメーリングリストで公開されており、リンクhttp://en.opensuse.org/Communicate/Mailinglistsから参加できます。リストopensuse-security-announce@opensuse.orgは、パッケージ更新版に関する最初の情報源であり、アクティブな貢献者の中でもSUSEのセキュリティチームのメンバーが含まれています。
メーリングリストopensuse-security@opensuse.orgは、必要なセキュリティ問題の説明の参照先として活用できます。同じWebページから参加してください。
bugtraq@securityfocus.comは、世界中で最もよく知られているセキュリティメーリングリストです。このリストは1日15~20件を受け付けているため、このリストを参照することをお勧めします。詳細は、http://www.securityfocus.comを参照してください。
ここでは、基本的なセキュリティ問題に対処する上で役立つルールについて説明します。
ジョブごとに考えられる最も限定的な権限セットを使用するというルールに従い、日常的なジョブはroot ユーザで実行しないようにします。これにより、カッコウの卵やウィルスに感染する危険性が減少し、自分自身のミスも防止できます。
セキュリティホールが検出されてからワームがサーバに侵入するまでにある程度の時間があれば、影響を受けるプログラムの更新バージョンが間に合う可能性が大きくなります。telnet、ftp、rshおよびrloginの代わりにssh(セキュアシェル)を使用することを、習慣づけてください。
IPアドレスのみに基づく認証方式は使用しないでください。
最も重要なネットワーク関連パッケージは常に更新し、対応するメーリングリストにサブスクライブして、この種のプログラム(bind、sendmail、sshなど)の新バージョンに関する通知を受け取ります。これは、ローカルセキュリティに関連するソフトウェアの場合も同じです。
/etc/permissionsファイルを変更し、システムのセキュリティに不可欠なファイルのパーミッションを最適化します。プログラムからsetuidビットを削除すると、そのジョブは意図した方法で実行できなくなる場合があります。一方、ほとんどの場合、プログラムの潜在的なセキュリティリスクもなくなることを考慮してください。同様のアプローチは、world-writableなディレクトリおよびファイルにも適用できます。
サーバの正常動作に不可欠でないネットワークサービスを停止します。これにより、システムの安全性が向上します。ソケットがLISTEN状態のオープンポートは、プログラムnetstatで検出できます。オプションとしてnetstat -apまたはnetstat -anpを使用することをお薦めします。-pオプションを使用すると、指定した名前のポートを使用しているプロセスを確認できます。
netstatの結果を、ホスト外部から実行したポートスキャンの結果と比較します。このジョブに適したプログラムはnmapで、マシンのポートが確認されるのみでなく、その背後で待機中のサービスについてもある程度の情報が得られます。ただし、ポートスキャンは攻撃的な行為と解釈される場合があるため、管理者から明示的な承認を受けない限りホスト上では実行しないでください。最後に、TCPポートのみでなくUDPポートも検出することが重要であることを忘れないでください(オプション-sSおよび-sUを使用します)。
システムのファイルの整合性を信頼できる方法で監視するには、SUSE Linux Enterpriseで利用可能なプログラムAIDE (Advanced Intrusion Detection Environment)を使用します。他人に改ざんされないように、AIDEで作成されたデータベースは暗号化します。さらに、マシン外部から使用可能なこのデータベースのバックアップは、ネットワークリンクで接続されていない外部データメディアに格納します。
サードパーティソフトウェアのインストール時には、適切な措置を講じます。幸いにして迅速に発見されたものの、ハッカーがセキュリティソフトウェアパッケージのtarアーカイブにトロイの木馬を組み込んでいた事例があります。バイナリパッケージをインストールする場合は、それをダウンロードしたサイトを信頼します。
SUSEのRPMパッケージは、GPGにより署名されています。SUSEが署名に使用している鍵は、次のとおりです。
ID:9C800ACA 2000-10-19 SUSE Package Signing Key <build@suse.de> Key fingerprint = 79C1 79B2 E1C8 20C1 890F 9994 A84E DAE8 9C80 0ACA
コマンドrpm --checksig package.rpmを実行すると、アンインストールされたパッケージのチェックサムと署名が正しいかどうかを確認できます。この鍵は、配布パッケージCDの1枚目と、世界中のほとんどのキーサーバにあります。
ユーザファイルとシステムファイルのバックアップを定期的にチェックします。バックアップが動作するかどうかをテストしなければ、実際には役に立たない可能性があることを考慮してください。
ログファイルを確認します。可能な場合は、小型スクリプトを記述して疑わしいエントリを検索します。実際、これは些細な作業ではありません。結局のところ、どのエントリが例外的でどのエントリがそうでないかがわかるのは自分だけです。
tcp_wrapperを使用して、サービスに接続できるIPアドレスを明示的に制御できるように、マシンで実行中の個々のサービスへのアクセスを制限します。tcp_wrapperの詳細は、tcpdおよびhosts_accessのmanページを参照してください(man 8 tcpd、man hosts_access)。
SuSEfirewallを使用して、tcpd (tcp_wrapper)が提供するセキュリティを強化します。
セキュリティ手段は冗長性を確保するように設計してください。何もメッセージが表示されないよりは、メッセージが複数回表示される方がセキュリティ上はお勧めできます。