30分で構築できる運用管理環境とセキュリティ対策
安定した運用を続けていくためには,サーバー管理者による日々のサーバー管理が欠かせない。グループウエアの運用を開始し,業務の一部として機能し始めると,システム・ダウンが業務に及ぼす影響が計り知れなく大きくなるからだ。 バックアップファイルとDB内のデータを保存バックアップ対象となるファイルやデータは,(1)ファイル共有やワークフローでアップロードしたファイル群,(2)掲示板管理ファイル,(3)グループウエア設定ファイル(gw.php),(4)データベース管理システム「MySQL」に保存されているデータ,の4つだ。(1)は,gw.phpの「$savefile_path」で指定したディレクトリに格納されている。デフォルトでは,/var/www/html/wiz/filesディレクトリ以下のファイルだ。( 2 )は,w i z ディレクトリ( 連載では「/var/www/html/wiz/」)配下のbbs/admin/settingsディレクトリ内に格納されているファイルである。(3)は,wizディレクトリ内に格納されている。 この(1)から(3)までは,すべて独立したファイルなので,テープなどのバックアップ・メディアやネットワーク経由で別のマシンのディスクなどに,そのままコピーして保存するだけで構わない。また,すべてのファイルはwizディレクトリ内に保存されているため,wizディレクトリごとコピーしてもよい。 例えば,wizディレクトリ全体をtarコマンドでまとめてgzipコマンドにより圧縮して1つのファイル(ここでは,/rootディレクトリ内の「wizbackup.tar.gz」とする)に保存するには,
のようにコマンドを発行する。そして,このファイルをテープや別のマシンにコピーすればよいだろう。 MySQLのバックアップ(4)のMySQLに保存されているデータをバックアップする方法としては,主に,「論理バックアップ」と「物理バックアップ」の2種類がある。前者は,データベースを停止せずにバックアップを取得する方法だ。一方,後者はデータベースを停止させて,確実にバックアップを取得する方法である。 前者の場合,データベースに更新処理が行われていない状態,つまりユーザーからのアクセスがない状態にしなければならない。さもないと,バックアップしたデータから復旧した際にデータに不整合が起こるかもしれないからだ。運用方法を考慮して,どちらかの方法を選択していだたきたい。 (1)論理バックアップとリストア論理バックアップには,MySQL付属のmysqldumpユーティリティを用いる。このユーティリティでは,SQLを用いたテキスト形式のダンプ・ファイルとしてデータベースの中身を出力できる。そのため,部分的なリストアも可能だ。例えば,次のように実行すると,
/rootディレクトリ以下のダンプ・ファイル「masters_dump.sql」に,バックアッ プが作成される。 なお,ここで指定した,mysqldumpユーティリティのオプションの意味は,MySQLのマニュアル「4.9.7 mysqldump(テーブル構造とデータのダンプ)」(http://dev.mysql.com/doc/mysql/ja/mysqldump.html)を見て理解していただきたい。 リストアには,mysqlユーティリティを用いる。ただし,mysqldumpが生成するSQL文は,テーブル名称順になる。その場合,InnoDB形式で外部参照キーが定義されているとテーブルの作成に失敗する。そこで,ダンプ・ファイルの先頭に,
を追記してから,mysqlユーティリティに読み込ませる必要がある。 リストアの手順としては,
(2)物理バックアップとリストア24時間,常に運用しているシステムではなかなか難しいのだが,システムを一定時間停止できれば,物理バックアップの方が確実だ。手順としては,データベースが含まれるディレクトリをすべてバックアップしてしまうのが良いだろう。 MySQLをいったん停止し,データベースが含まれる/var/lib/mysqlディレクトリをtarコマンドでまとめて,gzipコマンドにより圧縮して1 つのファイル(mysqldata.tar.gz)として作成する。
これをテープなどのバックアップ・メディアに保存すればよいだろう。バックアップを作成し終えたら,必ず運用が再開できるように,MySQLを起動しておく。
パフォーマンスの維持 不要なデータを削除グループウエアの運用を続けていくと,データ量やログの増加により性能が劣化することがある。日々の運用管理として性能を劣化させないことも重要だ。そこで,初期の性能を維持できる方法を紹介しよう。 一定期間経過したデータを消すグループウエアが保存する情報には,スケジュール,当番表,施設予約,アクセス・ログなどのように,時間が経過してしまうと価値がなくなる情報と,共有ファイルや掲示板のように時間を経過しても価値を持つ情報の2種類がある。前者のデータであれば,ある一定の期間を過ぎたデータを削除した方がハード・ディスクの無駄な領域を減らし,データ量の増大も防げる。例えば,“1年以上経過したスケジュールなどのデータは削除する”といった,グループウエアの運用ポリシーを策定したとしよう。この運用ポリシーに従って,機械的にデータを削除することもできる。 削除対象になるデータは,スケジュール,当番表,施設予約とアクセス・ログの4つになる。それぞれデータは,「schedule2」「touban」「reservation」「gwlog」のテーブルに格納されている。図1に示したシェル・スクリプト(wiz_deldata.sh)を作成し,cronコマンドで毎月1回実行する(図2) なお,図1の3行目のdateコマンドのパラメータを書き換えれば,保存期間を任意に指定できる。詳しくはdateコマンドのマニュアルを参照していただきたい。 図1 1年以上経過したスケジュールなどのデータを削除するスクリプト(wiz_deldata.sh)
図2 cronコマンドによりwiz_deldata.shを定期実行 毎月1日に実行される。
セキュリティ対策基本から応用までセキュリティ対策と一口で言っても,情報漏えいの防止や,ウイルスやワームからのデータ保護など,さまざまなものがある。また,ある一部分だけをセキュアにしても,ほかが弱いのであれば,セキュリティ対策として不十分だ。当然,これだけやっておけば完璧という線引きはないのだが,インターネットに接続して稼働させるグループウエアとして,最低限必要な対策を施しておこう。最も基本となるセキュリティ対策インターネットに接続するサーバーの基本的なセキュリティ対策は以下の3点である。(1)不要なサービスを停止する (2)不要なポートを閉じる (3)定期的にアップデートする いずれも,システム全体で弱い部分を減らし,クラッキングなどからサーバーを守るために効果的な方策だ。不要なサービスが起動されていなければ,それをターゲットとする攻撃は無効になる。不要なポートを閉じておけば,そのポートへは外部から攻撃することすらできない。さらに,定期的にソフトウエアをアップデートしておけば,既に発見されているセキュリティ・ホールへの攻撃も未然に防げるだろう。 本連載第1回ではインストールや設定作業を円滑に行えるよう,不要なサービスを立ち上げたままにしておいたり,不要なポートをふさぐファイアウオールの設定をオフにしていた。ここで,不要なサービスを止め,ファイアウオールを有効にしよう。 (1)不要なサービスを停止するFedora Core2において,既に起動しているサービスを停止するには,
表1 不必要なサービス
なお,serviceコマンドで不要なサービスを止めただけでは不十分である。システムを再起動した際に自動的に起動されてしまうからだ。自動起動するサービスの設定には,ntsysvコマンドもしくはchkconfigコマンドを用いる。
(2)不要なポートを閉じるFedora Core 2では,Linuxカーネルに標準で組み込まれているファイアウオール・ソフト「iptables」を使用する。setupコマンドを実行して「ファイヤーウォールの設定」を選び,起動したCUI画面から必要な設定を施す。
最後に「セキュリティレベル」の「有効」にチェックを付けて,〔OK〕ボタンを押すと設定が反映される。 ちなみに,ここで実施したファイアウオールの設定は,/etc/sysconfig/iptablesファイルに記録される(図3)。CUIからでも任意のポートを開けるなどの設定は可能だが,より木目細かい設定をするのなら,/etc/sysconfig/iptablesファイルを直接編集しよう。書き換えた設定を反映させるには,iptablesを再起動すればよい。 図3 ファイアウオールの設定 /etc/sysconfig/iptablesファイルに書き込まれる。
(3)定期的なアップデートソフトウエアの定期アップデートには,Fedora Core2が備える「yum」(Yellowdog Updater Modified)を用いる。定期アップデートを有効にするには,yum のサービスを起動するだけでよい。
この設定により毎日午前4時2分にアップデートが実行される。 バッファ・オーバーフロー対策基本的なセキュリティ対策を実施したら,典型的な攻撃に対する防御も施そう。コンピュータを攻撃する代表的な方法として,バッファ・オーバーフローを悪用するものがある。これは,不正プログラムを含んだ多量のコードをコンピュータに送り込み,プログラムが用意したバッファをあふれさせ,関数の戻り値を書き換えるという方法だ。うまく書き換えることができれば,送り込んだ不正プログラムが関数実行の終了時に起動される。最悪の場合,root権限を取られてしまうこともあり得る。バッファ・オーバーフローを悪用した攻撃を防ぐ対策もぜひ実施しておきたい。(1)Libsafeを用いる「Libsafe」は,スタック・バッファ・オーバーフローを引き起こす原因となる,C言語の関数(strcpyやgets)に渡すデータの境界値を事前にチェックしたり,スタックの戻りアドレスやフレーム・ポインタの正当性をチェックしたりすることで,攻撃を察知して防御するライブラリである。Libsafeは,次のようにバイナリ・パッケージを入手し,rpmコマンドで導入できる。
Libsafeをインストールすると,システム全体で,Libsafeを使用する設定になる。正常に動作しているかは,Libsafeのバイナリ・パッケージに含まれるテスト用のバッファ・オーバーフロー攻撃ツールにより確認できる。攻撃ツールを実行し,図4のように「セグメンテーション違反です」と表示されれば,Libsafeのバッファ・オーバーフロー防御機能が有効になっている。 図4 Libsafeの動作確認 「セグメンテーション違反です」と表示される。
必ずApacheでも有効になっていることを確認しよう。図5のようにlddコマンドを実行して,「/lib/libsafe.so.2 => /lib/libsafe.so.2」という行が表示されると,Libsafeのライブラリが呼び出されていることが確認できる。 ただし,Libsafeの防御機能は既に動作中のプロセスには適用されない。最後にすべてのプロセスに適用されるようにマシンを再起動する。 なお,Libsafeは共有ライブラリとしてインストールされる。そのため,ライブラリが静的にリンクされたコマンドには無効だ。さらに,すべての関数がチェックされるわけではないし,ヒープ領域で発生するバッファ・オーバーフローには無効であることに注意されたい。 (2)Exec-Shieldを用いるFedora Coreは,「Exec-Shield」という,バッファ・オーバーフローによる攻撃を防止する機能を備えている。具体的には,スタックを含む,いくつかの領域に実行権限を与えない機能と,領域の配置をランダムに変更する機能だ。Fedora Core2では,後者の機能は既に有効になっている。一方,前者は有効になっていない。前者の機能を常に有効にするには,カーネルの起動時オプションに「execsh i e l d = 2 」を指定する。それには,/etc/grub.confファイルの,起動するカーネルを指定している行に「e x e c -shield=2」のオプションを追加し,マシンを再起動する。
有効になれば,
もし,Exec-Shield により動作しないプログラムがあった場合は,個々の実行ファイルごとに無効にする。以下は,メール・サーバー「Postfix」の実行ファイルに対し,Exec-Shieldを無効にした例だ。
-sオプションで無効に設定する。また,-qオプションで有効と無効が確認できる。「X」が無効,「-」が有効である。ちなみに有効にするには,-cオプションを用いる。
WAFによる対策たとえ,Apacheを最新の状態に保っていたとしても,Apacheの設定ミスやWebアプリケーションのバグにより,SQLインジェクションやクロス・サイト・スクリプティングなどの攻撃からサーバーを守れないことは十分にあり得る。何かの対策を施しておかなければならない。そこで,Apache用のWebアプリケーション・ファイアウォール(WAF)である「mod_security」を導入してセキュリティを高めよう(図6)。このmod_securityは,Webアプリケーション用の侵入検知・防止エンジンであり,Apacheのモジュールとして動作する。そして,Webサーバーのすべての入出力をチェックし,設定したフィルタリング・ルールを用いて不正な文字列を検出した場合に,その文字列を含む通信をブロックできる。 (1)mod_securityの導入まず,mod_securityをビルドするのに必要なhttpd-develパッケージを導入する。
次にmod_securityのソース・アーカイブを入手し,展開する(執筆時点の最新バージョンは1.8.6)。
最後に,Apacheのapxsコマンドでモジュールのコンパイルや設定を施す。
ちなみに,apxsコマンドに指定した-c オプションによりコンパイルが実行され,-aオプションによりApacheの起動時にmod_securityが読み込まれるように/etc/httpd/conf/httpd.confファイルに設定が書き込まれる。そして,-iオプションにより,/usr/lib/httpd/modulesディレクトリにコンパイルされたモジュールのファイル(mod_security.so)が格納される。 (2)mod_securityの設定mod_securityを導入したら,フィルタリング・ルールを作成する。フィルタリング・ルールは,/etc/httpd/conf.d/mod_security.confファイルに書き込まれている(図7)。これをカスタマイズしよう。HTTPのリクエストに対するフィルタリング・ルールは,SecFilterディレクティブを用いて記述する。書式は以下の通りだ。「キーワード」には,通信を遮断したいキーワード(正規表現が使用可能)を,「アクション」には,キーワードと一致した際の動作(allow,deny,status,redirect,execなど)を記述する。ちなみにアクションは省略可能である。
リクエストではなく,ヘッダーやパラメータなどのフィルタリングする場合は,SecFilterSelectiveディレクティブを使う。
なお,SecFilterScanPOSTディレクティブを「On」にすると,フォーム内に入力した「<」「>」や「'」などの特殊文字を検知すると通信が遮断される。HTMLタグなどの入力を許可したい場合には注意が必要だ。 書き換えたフィルタリング・ルールを有効にするには,Apacheを再起動する。
通信を遮断した際には,/var/log/httpd/audit_logファイルにアクセス・ログが記録される。図8に示したものは,Windows用のWebサーバー・ソフト「IIS」(Internet Information Server/Services)のセキュリティ・ホールを狙ったワーム「Nimda」によるアタックのログである。 ログ監視 管理者にメールで通知それでは,最後にFedora Core2のログ監視機能を紹介しよう。日々の運用管理に役立てていただきたい。Fadora Core 2には「Logwatch」というログ監視ツールが含まれている。Logwatchは,/etc/log.d/conf/logwatch.confファイルに設定した内容を基にして,毎日4時2分に各種ログをチェックして管理者にメールを送るソフトウエアだ。標準で導入されるため,すぐに使える。 例えば,管理者を「root」にし,すべてのサービスのログを詳細なレポートとしてメールにて日々送信するには,/etc/log.d/conf/logwatch.confファイルの以下の個所を書き換える。
にすると,詳細なレポートが出力される。
にしてあれば,/etc/log.d/scripts/servicesディレクトリ配下にある,すべてのサービスのログが監視対象になる。ディスク容量も監視対象になるため,ディスクの空き領域不足も未然に避けられることだろう。 *** セキュリティには完全な対策方法はないことを念頭に置き,運用に入ってからも,ネットワーク監視の「Snort」,改ざん検知の「Tripwire」,ログ監視のや「Swatch」などのソフトウエアも必要に応じて導入し,より強固なセキュリティ対策を実施していただきたい。さらに,セキュアOS「SELinux」やLinux侵入検知システム「LIDS」(Linux Intrusion Detection System)などを用いて,Linux自体のセキュリティを高めることも良い方法だ。 連載第2回目までが終了したが,連載では紹介し切れないことが多数ある。システム・コンサルタンツがまとめている,La!cooda WIZに関するよくある質問と回答「FAQ(Frequently AskedQuestions)」(http://wiz.syscon.co.jp/FAQ.htm),またはLa!cooda WIZユ ーザー・コミュニティのサイト「La!cooda WIZ ファンクラブ♪」(http://wiz.syscon.co.jp/xoops/)なども活用していただきたい。 図8 遮断された通信のログ(/var/log/httpd/audit_log) Windows用のWebサーバー・ソフト「IIS」(Internet Information Server/Services)のセキュリティ・ホールを狙ったワーム「Nimda」によるアタックのログである。
あのオープンソースがガチンコ! インストールはラクラク簡単、5分で完了! ムリ・ムラ・ムダをなくすグループウェア「ラクーダST」とは。 [PR] 短期・高収入・高校生向けのバイト検索 パートやアルバイトを探すのに、いまやパソコンや携帯電話を使ってネットで検索するのが常識。 実践グループウェア構築術 ウィルス対策ソフトなんてどれも同じだと考えていませんか?検出性能か、価格か、ブランドか、あなたに合ったベストソリューションはどれ? ウイルス対策ソフトに関するトピックスをメールマガジンでお知らせしています ウィルス対策ソフトを比較するメルマガ をまぐまぐで登録
|
|
|||||||||||||||||||||||||||||||||
Copyright(c) 1999-2017 ITNAVI.com サイト運営者情報
|