web-dev-qa-db-ja.com

cpanelサーバーでの最高のApacheログファイル許可

サーバーにログインできるとんでもないハッカーなどの悪意のあるボットからサイトを保護するために、Apacheやcpanelを壊すことなくaccess_logとerror_logを可能な限り保護したいと思います。

Apacheが実行しているユーザーはすべて、ログファイルへの読み取りおよび書き込みアクセスが必要であると考えています。

Cpanelにログファイルにアクセスするための特別な要件があるかどうかはわかりません。ログファイルのアクセス許可の制限が厳しすぎると、cpanelの何かが壊れるかどうかわかりません。

現在、誰もがログファイルへの読み取りアクセス権を持ち、ルートとグループルートのみが読み取りおよび書き込みアクセス権を持っています。他のすべてのユーザーの読み取りアクセスを無効にしたいのですが、cpanelやApacheに何らかの影響がありますか?

私の目標は、ウェブサイト/ウェブサーバーのセキュリティを改善し、機能を損なうことなく高速でページを提供し続けることです。

私のサーバーはLinuxベースです。

1
Mike

シェルを介してログインできる場合、ゲームオーバーであり、@ w3d Apacheログファイルで言及されているように、心配はほとんどありません。

  • Apacheはログファイルに直接書き込みます。ホストパス内に保存されていない限り、誰もそれらのログを表示できません。

セキュリティが大きな懸念事項である場合は、次のプラクティスを使用していることを確認する必要があります。

  • SSHは、ユーザー名やパスワードではなく、SSHキーを使用して保護する必要があります。使用しない場合は無効にし、必要に応じて起動します。
  • CPanelアカウントでは複雑なパスワードを使用する必要があります。理想的には、数字、大文字、記号を含む少なくとも12〜18桁の長さのものを使用します。 cPanelも双方向認証を追加するプロセスにあります。これがリリースされたらすぐに有効化する必要があります。cPanelの領域外のすべてのプラットフォームについても同様です。
  • FTPSまたはFTP TLS/SSLを優先して、FTPを無効にする必要があります。サーバーは、fail2banなどを使用してブルートクラッキングをブロックする必要があります。
1
Simon Hayter

サイモン・ヘイターズの声明に基本的に同意します。シェルアクセスを取得した場合、たとえばShell_execを使用しているphpアプリケーションへのインジェクションによるシェルアクセスを制限していなければ、個人的に信頼できるソースからシステムを復元することを考え始めます。しかし、問題は、その時に彼らがどうやって得たのかわからない場合、次はどうやって止めることができるのでしょうか? -妥協のないログエントリがあると、侵入の再構築に役立ちます。

しかし質問に対して、nginx(およびメモリからApacheも同じ)がUbuntu 14.04でログファイルのアクセス許可を設定する方法は次のとおりです。

$ls -al /var/log/
... 
drwxr-s---  2 mysql     adm      4096 Nov 22 06:38 mysql
-rw-r-----  1 mysql     adm         0 Nov 20 17:39 mysql.err
-rw-r-----  1 mysql     adm         0 Nov 22 06:38 mysql.log
drwxr-x---  2 www-data  adm      4096 Nov 22 06:38 nginx
-rw-------  1 root      root        0 Nov 22 06:38 php5-fpm.log
-rw-r-----  1 syslog    adm      9734 Nov 23 00:17 syslog
...

"others"にnginxdirectory自体に対する許可を与えないことにより-通常のユーザーはファイル自体を見ることさえできません-読むことはできません。ルート権限がある場合、これを行うことができます

$ Sudo ls -al nginx/
total 28
drwxr-x---  2 www-data adm    4096 Nov 22 06:38 .
drwxrwxr-x 13 root     syslog 4096 Nov 22 06:38 ..
-rw-r-----  1 www-data adm    2082 Nov 23 00:30 access.log
-rw-r--r--  1 root     root   9803 Nov 22 06:26 access.log.1
-rw-r-----  1 www-data adm       0 Nov 22 06:38 error.log

これで、www-dataadmまたはrootでない限り、ログを読み取ることはできません。 access.log.1はWebサーバーによって作成されませんが、ログアーカイブユーティリティlogrotateは読み取り許可を持ちますが、rootwww-data、またはadm以外の人が勝ったため'/var/log/nginx/access.1.logへのパス内のすべてのセグメントにアクセス許可がないため、まだファイルを読み取ることができません(directoryアクセス許可はまだそれらをブロックしています)。
したがって、この許可構造を試すことができます-suに昇格したり、ユーザーをwww-dataまたはadmグループに追加したり、同様-システムによって異なりますが、ログディレクトリにアクセスしてログを読み取るだけです。
また-重要なのはlogrotate機能の権限を壊さないこと-ログレコードをクリーンアップすること(特定の年齢-通常は1年以上のログエントリのアーカイブと削除)です。

1
the_velour_fog