最近、いくつかのサーバーで、古いスクリプトを介してアカウントがハッキングされ、ハッカーがアカウント内にcPanel/FTPブルートフォーシングPHPスクリプトをアップロードするという問題がいくつか発生しています。
PHPファイルは/ etc/passwdを読み取ってユーザー名を取得し、passwd.txtファイルを使用して127.0.0.1:2082にブルートフォース攻撃を試みます。
私はこれをブロックする方法を考えようとしています。 POST "GET /path/phpfile.php"以外は何もしないので、mod_securityを使用してこれをブロックすることはできません。
/ etc/passwdのアクセス許可を600に変更することを考えていましたが、ユーザーに関してこれがどのように行われるかはわかりません。
Localhost接続を:2082にレート制限することも考えていましたが、mod_proxyが影響を受けるのではないかと心配しています。
助言がありますか?
LDAPなどのユーザー名の/ etc/passwdを参照しない何らかの形式の認証を実行します。また、SELinuxをアクティブ化して、そのようなハッキングがステップ1ですぐに中断するようにすることをお勧めします(httpdはデフォルトのルールで/ etc/passwdを読み取ることができません)が、cPanelはシステムをロックダウンする高度な試みを嫌います。
何よりもまず有効にする cPHULK 、それはブルートフォースからcPanelを保護するのに役立ちます。 [〜#〜]決して[〜#〜]/ etc/passwdと/ etc/shadowのアクセス許可を変更しないでください。これらは、理由。 SELinuxは、セキュリティのextraレイヤーを追加し、エクスプロイトによるコード実行の取得を阻止しますが、この攻撃を阻止しない可能性があります。ポート番号を2082から2083などに変更します。彼らが使用しているスクリプトは、それほどスマートではない可能性があります。
mod_securityは素晴らしいですが、この攻撃を阻止するために何もしません。
より良いパスワードルールを適用することもできます。 THC-Hydraでブルートフォース攻撃を試みてください。アカウントが壊れている場合は、アカウントを無効にして、ユーザーに適切なパスワードを選択させるようにしてください。
したがって、最初に、ハッカーにcPanel/PHPスクリプトを最初にアップロードする特権と機能を与えた古いスクリプトを修正/削除します。その後はすべて bodge (悪い修正)実際の問題の周りで踊っています。それが修正されるまで、さまざまな問題が発生し続けます。
システムは、/etc/passwd
がワールドおよびグループで読み取り可能であることを期待します(つまり、644
または444
ですが、それでも問題が発生する可能性があります)が、パスワードハッシュを格納する/etc/shadow
should600
(owner read/write、group and everybody no accesso+rw,g-,a-
)。
CPanelの経験がないので、PAM認証モジュールを介して制限して、パスワードチェックの試行をレート制限し、パスワードブルートフォーシングの試行を無駄にすることができるかどうかはわかりません。私が考えていたPAMモジュールはpam_faildelay
と呼ばれ、複数の試行を遅くします。
Apache and mod_security を使用したtarpitスタイルのソリューションが、cPanelログインへのアクセスをレート制限する手段になるかどうかはわかりません。