私のウェブサーバーはさまざまなIPアドレスによって常に攻撃されています。5つのパスワードを試してから、IPアドレスを変更します。
ssh-keysを使用してパスワードを許可しない、リモートrootログインを許可しないなど、さまざまなロックダウンを行いました。
これらの攻撃の試みを取り除くためにできることはありますか?それに失敗した場合、私が我慢すべき具体的な防御策はありますか?
私のウェブサーバーはさまざまなIPアドレスによって常に攻撃されています。5つのパスワードを試してから、IPアドレスを変更します。
ssh-keysを使用してパスワードを許可しない、リモートrootログインを許可しないなど、さまざまなロックダウンを行いました。
これらの攻撃の試みを取り除くためにできることはありますか?それに失敗した場合、私が我慢すべき具体的な防御策はありますか?
回答:
それは確かに人生の事実です。試行を数回失敗した後、攻撃しているホストを除外するツールをインストールできます。
DenyHostsはログファイルを分析し、攻撃者をファイルに自動的に追加します/etc/hosts.deny
。
必要に応じて構成する方法に関するドキュメントを確認してください。
更新:コメントで提案されたいくつかの重要なポイント
自分がロックアウトされる可能性があるため、ツールをDenyHostsとして適切に設定してください(たとえば、フィルタリングされないマシンまたはネットワークを設定できます)
DenyHostsはシステムのセキュリティを向上させません。IPレベルで攻撃をフィルタリングするだけです(小さなマシンの負荷を減らし、ログファイルのサイズを減らしますが、それ以上のことはありません)
refs Q1.3
denyhosts.sourceforge.net/faq.html#1_0
apt-get install denyhosts
ため、マシンからロックアウトされました。
私はついていきます 、これらの命令を各間違ったパスワードSSHログインの試み〜7秒の遅延を追加します。sshdをブルートフォーススキャナー用の「ターピット」にしました。
また、変更したtarpit sshdが失敗したパスワードをログに記録していることを追加する必要があります。これは、通常のユーザーが自分のパスワードとして誤って入力したものをrootユーザーに見せるため、完全に倫理的ではないかもしれませんが、私が唯一の「本当の」ユーザーであるので、大丈夫だと思います。
「ターピット」の側面は誰の時間も無駄にしないので、標準以外のポートで実行することはありません。
少数の人だけがシステムにSSHで接続する必要がある場合は、SSHを標準以外のポート(6422、8080など)に移動することを検討してください。それだけでログイン試行回数が大幅に削減されますたとえば、SSHエクスプロイトベースのワーム。
@Matteoの答えに同意します。あなたが見ているのは基本的に何千ものゾンビのシステムがあなたのサーバー上で分散ブルートフォース攻撃を実行していることです。それはその上で実行されているウェブサイトがあるからです。スクリプトキディ側の最小限の労力-彼は数千のゾンビに一度に数百のウェブサイトホストでブルートフォースを試み、成功したリターンのリストをコンパイルするだけのプログラムを持っています。
同様に、/var/log/apache2/access.log
ファイルに「http://your.web.host/phpmyadmin/」の多くの置換が表示される場合があります。これらは、PHPMyAdminをセットアップする最も一般的な方法の自動スキャンであり、見つかった場合は既知のエクスプロイトをいくつか試行します(これは、偶然、私が個人的に設定したPMAサイトを使用してくださいとお客様に伝え始めた理由です)独自のバージョンをインストールして最新の状態に保つのを忘れるのではなく、最新の状態に保ちますが、今は接線に向かっています。
元のコマンドを送信することは別として、時間や帯域幅もかかりません。それは火であり、忘れます。
このような状況で非常に便利なもう1つのソフトウェアは、fail2banです。これは、iptablesを使用して、明らかに偽のログオンまたは他のエクスプロイトが複数回試行された後の接続試行をブロックします。
IPTABLESを使用すると、Fail2BanやDenyHostsなどのデーモンを実行せずにトラフィックを停止できます。
# Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
あなたがそれを管理できるなら、このようなものに対処する最良の方法は、VPNを使用することです。そうすれば、彼らがターゲットにできるのはVPNだけです。Webサーバーなど、「全員」がアクセスするために必要なサービスを除いて、世界中に公開されているサービスはありません。その他はすべてファイアウォールでブロックする必要があります。これで、セキュリティについて本当に心配する必要があるのは、VPNだけです。可能であれば、サーバーを管理するコンピューターの静的IPを取得し、VPNをその特定のIPアドレスにロックダウンします。これは、人々がパスワードを総当たり攻撃しようとするのを阻止する唯一の方法です。
sshguardはうまく機能します。iptablesと一緒に使用しています。