2. MySQL
MySQLを堅牢にするには、若干の基本的な対策が欠かせません。つまり、ネットワークにアクセスさせない、chrootを使用して特定のグループとユーザーのみが実行する、破られにくい管理者用パスワードを作成する、匿名アクセスを禁止する、必要のないもの(サンプルのデータベースとテーブル、テスト用のデータベースとテーブルなど)をすべて取り除く、といったことです。Security Focusに掲載されているハウツーが参考になります。これはシリーズの一部で、他にApacheとPHPのセキュリティ強化に関する記事もリンクされています。『MySQL Reference Manual』のセキュリティに関する章も役に立ちます。また、chrootはセキュリティデバイスではありませんが、Security Focusは使用を推奨しています。
3. Apacheを保護する
Apacheを保護する方法については、今でもこのページが最良の解説と言えるでしょう。
ユーザーログインやユーザー入力など、すべての機密性の高いセッションは、OpenSSLで保護する必要があります。
4. SELinuxまたはAppArmorを使ってすべてを保護する
Fedora Linuxには、Apacheポリシーを含む良質のSELinuxポリシーと、グラフィカルな管理ユーティリティsystem-config-selinuxが標準で用意されています。簡単とは言いませんが、ゼロから始めるよりは簡単です。AppArmorも調べてみる価値があります。SELinuxより簡単に扱えるとされており、どちらが優れているかを巡る議論は楽しく、有益な情報が得られます。
まとめ
簡単に言ってしまうと、Linuxサーバー、あるいはLinuxやUnix系オペレーティングシステムはセキュリティがしっかりしているから安心と思ったら大間違い、ということです。セキュリティの基本を守るのは当たり前で、それに加えてスキルと経験も必要です。攻撃を企む輩は次々に登場しますし、今日では犯罪組織がインターネットの威力に目を付けています。ちょっとしたテスト用の設備を用意するのは簡単で費用もかかりませんし、自由に使えるドキュメントやヘルプは数多くあります。Linuxセキュリティの未来は、SELinuxやAppArmorのようなツールにかかっています。「馬が盗まれた後で馬小屋に鍵をかける」ような古典的な対処法ではなく、このようなセキュリティツールを利用して未知の攻撃から身を守る方法を探っていきましょう。
関連資料
- "Little Bobby Tables, we call him"(3コマ目)
- Data Validation
- Problems with PHP
- (Other) Problems with PHP
- Top 7 PHP Security Blunders
- PHP4は公式に廃版となり、2007年12月31日を最後にサポートが打ち切られました。ただし、"2008年8月8日までは深刻なセキュリティフィックスのみケースバイケースで対応"します。
- Fedora SELinux Apache
- Novell AppArmor Documentation
- Tips for Taming SE Linux