解決策 1:
<ブロック引用>アクセス方法
アカウントにアクセスできない理由は不明です。
マシンが攻撃を受けているか、負荷が高い場合は、プロバイダーに連絡して、アクセスを制限する (IP 制限) か、サーバーをオフラインにする (インターネットから切断する) ことを検討してください。
また、プロバイダーがサポートできる帯域外アクセスが必要になる場合もあります。
誰かがあなたのサーバーを侵害した場合、バックアップから復元するか、回復イメージを使用する必要があるかもしれません.
<ブロック引用>サーバー、特に SSH への攻撃を防ぐ方法
ブルート フォース ログオンを防止する最善の方法は?
そもそも彼らがあなたのマシンに到達させないでください!ブルート フォース攻撃がホストに到達する前に、または SSH レベルで阻止する方法はたくさんあります。
そうは言っても、fail2ban のようなものでオペレーティング システムを保護することは素晴らしいアイデアです。 http://en.wikipedia.org/wiki/Fail2ban
<ブロック引用>Fail2ban は DenyHosts に似ていますが、SSH に焦点を当てている DenyHosts とは異なり、fail2ban はログイン試行をログ ファイルに書き込むサービスを監視するように構成でき、/etc/hosts.deny を使用して IP アドレス/ホストのみをブロックする代わりに、fail2ban を使用できます。 Netfilter/iptables と TCP Wrappers /etc/hosts.deny を使用できます。
ブルート フォース ログインを防止するために考慮すべき重要なセキュリティ技術がいくつかあります。
SSH:
- root のログインを許可しない
- ssh パスワードを許可しない (秘密鍵認証を使用する)
- すべてのインターフェースでリッスンしない
- SSH 用のネットワーク インターフェース (eth1 など) を作成します。これは、リクエストを処理するインターフェース (eth0 など) とは異なります。
- 一般的なユーザー名を使用しない
- 許可リストを使用して、SSH アクセスを必要とするユーザーのみを許可する
- インターネット アクセスが必要な場合...アクセスを限られた一連の IP に制限します。 1 つの静的 IP が理想的ですが、0.0.0.0/0 よりも x.x.0.0/16 に固定する方が適切です
- 可能であれば、インターネット アクセスなしで接続する方法を見つけてください。そうすれば、SSH のすべてのインターネット トラフィックを拒否できます (たとえば、AWS では、インターネットをバイパスする直接接続を取得できます。これは Direct Connect と呼ばれます)
- fail2ban などのソフトウェアを使用してブルート フォース攻撃をキャッチする
- OS、特にセキュリティと ssh パッケージが常に最新であることを確認してください
アプリケーション:
- 特にセキュリティ パッケージなど、アプリケーションが常に最新であることを確認してください
- アプリケーションの「管理」ページをロックダウンします。上記のアドバイスの多くは、アプリケーションの管理領域にも当てはまります。
- 管理エリアをパスワードで保護します。ウェブ コンソールの htpasswd のようなものは、基盤となるアプリケーションの脆弱性を明らかにし、侵入に対する追加の障壁を作成します
- ファイルのアクセス許可をロックダウンします。 「アップロード フォルダ」は、あらゆる種類の厄介なもののエントリ ポイントになることで有名です。
- アプリケーションをプライベート ネットワークの背後に配置し、フロントエンド ロード バランサーとジャンプボックスのみを公開することを検討してください (これは VPC を使用した AWS での一般的なセットアップです)
解決策 2:
<ブロック引用>どうすればこの攻撃を抑制し、次の攻撃を防ぐことができますか
通常、デフォルトの ssh ポートを 22 から 1122 などの別のポートに変更します。これにより、ボットからの多くの自動攻撃が防止されますが、単純なポート スキャンで検出できます。とにかく:
vi /etc/ssh/sshd_config
ポート 22 を編集します ポート 1122 へ 、しかしこれでは十分ではありません。
ブルートフォースに対する自動 IPTables ルール
log2iptables を使用しています https://github.com/theMiddleBlue/log2iptables の代わりに Fail2ban を使用します。これは、正規表現を使用してログファイルを解析し、iptables を実行する単純な Bash スクリプトであるためです。たとえば、5 つの一致が発生した場合、log2iptables は特定の IP アドレスを削除します。 Telegram API を使用すると、彼が問題を見つけたときに電話でメッセージを送信できるので、クールです :)
これが役に立てば幸いです!
解決策 3:
これをまとめて、cronjob などとして 15 分ごとに実行します。
for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
count1=`grep $z /etc/hosts.deny | wc -l`
count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
sudo cp /etc/hosts.deny.bak /etc/hosts.deny
sudo chmod 666 /etc/hosts.deny
if [ $current ] ; then
echo "sshd : $current , $z" >> /etc/hosts.deny
else
echo "sshd : $z" >> /etc/hosts.deny
fi
sudo chmod 644 /etc/hosts.deny
fi
done