序論
ここではCGIウェブ・インタフェース周りに焦点をあてより強い認証とサーバ・セキュリティ実現の紹介を意図しています。
あなたの監視するサーバとNagios環境のセキュリティを強化するには多くの方法があります。
これが全セキュリティのアプローチの終わりとみなすべきでありません。
代わりに、あなたのシステムのセキュリティを厳しくするのに使える幾つかのテクニックへの紹介と考えます。
常に研究して、利用可能な最も良いテクニックを使うべきです。
報酬が取れるネットワークで最も重要なサーバをあなたの監視サーバとして扱います。
追加テクニック
- ダイジェスト認証を使うさらに強力な認証 クイックスタート Fedora, クイックスタート OpenSuse, クイックスタート Ubuntuに従ったなら、アパッチの基本認証を使用しているということです。 基本認証は全てのhttp要求と一緒に「そのままのテキスト」であなたのユーザ名とパスワードを送ります。 ダイジェスト認証の様な更に安全な認証方法を使うのを検討します。これはあなたのユーザ名とパスワードをMD5ハッシュしてそれぞれの要求に送ります。
- すべてのウェブ通信にTLS/SSLを強制 アパッチはmod_sslモジュールでTLS/SSLを提供します。 TLS/SSLはクライアントとサーバの間の強いパブリックキー/プライベートキー暗号を使用することで盗聴、改竄を防ぐ安全なトンネルを提供します。
- アクセス制御を使いアパッチを制限 あなたのIPアドレス、IPアドレスの範囲、またはIPサブネットでNagiosマシンへのアクセス制限することを考えます。 あなたのネットワーク外からのアクセスが必要でしたら、VPNかSSH Tunnelsが使用できます。 これは簡単で強力なあなたのシステムのHTTP/HTTPSでのアクセス制限です。
ダイジェスト認証を実装
ダイジェスト認証の実現は簡単です。 'htdigest' ツールを使用することで新しいタイプのパスワード・ファイルを作成して、次に、nagios(/etc/httpd/conf.d/nagios.conf)のためにアパッチ設定を変更します。
'htdigest'ツールを使用して、新しいパスワード・ファイルを作成します。 違いは、あなたが慣れている'htpasswd'ツールに'realm(レルム:ID、パスワード、ロールの組合せ)引数を渡す必要があることに注意する事です。 この場合、'レルム'はアパッチ設定における、'AuthName'指示の値に対応します。
htdigest -c /usr/local/nagios/etc/.digest_pw "Nagios Access" nagiosadmin
次に、以下の例を使いNagios(通常 /etc/httpd/conf.d/nagios.conf)のためにアパッチ設定ファイルを編集します。
## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthType Digest
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/.digest_pw
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthType Digest
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/.digest_pw
Require valid-user
</Directory>
## END APACHE CONFIG SNIPPETS
そして、新しい設定が実施できるようにアパッチ・サービスを再起動します。
/etc/init.d/httpd restart
強制TLS/SSLを実装
アパッチとOpenSSLをインストールしたのを確認します。 デフォルトで mod_ssl のサポートが有ります。もしまだトラブルを抱えているなら アパッチのTLS/SSL暗号ドキュメントを読むとヘルプを見つける事ができます。
次に、TLS/SSLサポート動作することをHTTPS Nagios Webインターフェースを使ってアクセスして確認します。( https://your.domain/nagios )を使用 まだ働いていて続けられるなら次のステップに進みます。それは、Nagios ウエブインターフェースの全ての要求についてHTTPSを強制使用し、ブロックします。 もし、トラブルがあるなら、アパッチのTLS/SSL 暗号化 ドキュメントを参照し、Googleで あなたのアパッチ導入特有のトラブルシューテングします。
次に、'sbin'と'share'両方のディレクトリに'SSLRequireSSL'指示を追加することで、Nagios(通常 /etc/httpd/conf.d/nagios.conf)のためのアパッチ設定ファイルを編集します。
## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
...
SSLRequireSSL
...
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
...
SSLRequireSSL
...
</Directory>
## END APACHE CONFIG SNIPPETS
新しい設定が反映するようアパッチ・サービスを再起動します。
/etc/init.d/httpd restart
IPサブネットがロックダウンを実装
以下の例は、アパッチのアクセス制御を使用することで特定のIPアドレス、IPアドレスの範囲、またはIPサブネットにNagios CGIを制限する方法を示します。
以下を例として使用し、'Allow', 'Deny' そして 'Order' 指示を使って アパッチ設定ファイルをNagiosのために編集します。
## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
...
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1 10.0.0.25 # Allow single IP addresses
Allow from 10.0.0.0/255.255.255.0 # Allow network/netmask pair
Allow from 10.0.0.0/24 # Allow network/nnn CIDR spec
...
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
...
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1 10.0.0.25 # Allow single IP addresses
Allow from 10.0.0.0/255.255.255.0 # Allow network/netmask pair
Allow from 10.0.0.0/24 # Allow network/nnn CIDR spec
...
</Directory>
## END APACHE CONFIG SNIPPET
重要な注意
- ダイジェスト認証はあなたのユーザ名とパスワードを平文でなくデータとして送ります。
- ダイジェスト認証はベーシック認証と同じくらいには一般にサポートされません。
- TLS/SSLには、「介入者攻撃」の可能性があります。 攻撃者がフィッシング攻撃、ISPの監視、または会社LANのファイアウォール認証放棄など、サーバとクライアント間にそれ自体を挿入できるなら、中間者MITM(Man-In-The-Middle)攻撃は被害を受け易いです。 それで、証明書検証について研究します!
- アパッチ・アクセス制御はHTTP/HTTPSプロトコルの保護だけです。 強いシステムのためIPtables を調べ、広くファイアウォール制御を行います。
- 最も重要に、セキュリティは、変化する標的であり、知り、調べ続ける事が最も重要です。 多分「現在のセキュリティ!」などをPodcastで聞くことです。