毎晩、RedHat 4サーバーで数百、時には数千の失敗したsshログインが発生します。リモートサイトからのファイアウォールの理由から、標準ポートで実行する必要があります。これをブロックするためにすべきことはありますか。多くの人が同じIPアドレスから来ていることに気付きます。しばらくしてそれらを止めるべきではないでしょうか?
毎晩、RedHat 4サーバーで数百、時には数千の失敗したsshログインが発生します。リモートサイトからのファイアウォールの理由から、標準ポートで実行する必要があります。これをブロックするためにすべきことはありますか。多くの人が同じIPアドレスから来ていることに気付きます。しばらくしてそれらを止めるべきではないでしょうか?
回答:
iptablesを使用して、SSHポートへの新しい着信接続をレート制限できます。ターンキーソリューションを提供するために、iptablesの構成全体を確認する必要がありますが、基本的には次のようなルールの追加について話していることになります。
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT
これらのルールは、テーブルの前の方でESTABLISHED接続を受け入れていることを前提としています(したがって、新しい接続のみがこれらのルールにヒットします)。新しいSSH接続はこれらのルールにヒットし、マークされます。60秒以内に、単一のIPアドレスから5回試行すると、そのIPからの新しい着信接続がドロップされます。
これは私にとってはうまくいきました。
編集:追加のソフトウェアはインストールされず、カーネルモードで完全に行われるため、この方法は「fail2ban」よりも好みます。"fail2ban"のようにログファイルの解析は処理しませんが、問題がSSHのみである場合、ソフトウェアのインストールが必要で、より複雑なユーザーモードは使用しません。
-m condition
iptablesマッチを使用してください。
fail2banは、ログイン試行の失敗が多すぎるIPアドレスをブロックすることでこれを支援できます。
可能であれば、SSHに標準以外のポート(ポート10222)を使用することをお勧めしますが、そうは言っていないので、DenyHostsなどを使用することをお勧めします。
http://denyhosts.sourceforge.net/
素晴らしいパッケージ、インストールと設定が簡単。
インターネット上の任意の場所からシステムにsshできるのは良いことですが、開いているsshポートにロックして、システムに対してさまざまなjoeアカウントおよび辞書攻撃を適用する自動パスワード攻撃システムがあります。これは、毎晩のログサマリーを読むことを意味する場合があり、帯域幅の無駄です。
同じシステム上にWebサーバーがある場合、phpおよびtcpラッパーを使用して、sshインバウンドトラフィックを既知のシステムに制限し、さらにインターネット上の任意のシステムからのアクセスを許可するバックドアキーを与えることができます。
方法は次のとおりです。
/etc/hosts.deny内のすべてのssh接続を拒否します。
# /etc/hosts.deny fragment
sshd: all
/etc/hosts.allowでIPによる既知のシステムを許可し、さらに一時アクセス用のファイルを追加します。
# /etc/hosts.allow fragment
sshd: 10.0.10.2 # some system
sshd: 172.99.99.99 # some other system
sshd: /etc/hosts.allow.temporary-sshd-access
Webサーバーでphpファイルを作成し、my-sshd-access.phpのようなわかりにくい名前を付けます。
<?php
function get_ip()
{
return getenv("REMOTE_ADDR");
}
?>
<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';
print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);
$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);
print "Wrote: ";
readfile($out);
?>
PHPコードを許してください-私はどこかからそれをスワイプしたので、たぶん全体をきれいにすることができるでしょう。アクセスするシステムのIPアドレスを/etc/hosts.allow.temporary-sshd-accessファイルに追加するだけです。このファイルは、接続時にsshd(/etc/hosts.allowに含まれているため)によって読み取られます。 。
Web上の任意のシステムにいて、このシステムにSSH接続したい場合は、まずWebブラウザーを使用してこのファイルにアクセスします(またはwgetまたはequivilentを使用します)。
$ wget http://your.system.name/my-sshd-access.php
これで、システムにSSH接続できるようになります。これが頻繁にsshされる可能性のある場所であれば、/ etc / hosts.allow.temporary-sshd-accessファイルの内容を読み取り、IPアドレスを/ etc / hostsに永続的に追加するのは簡単です。許可します。
拒否ホストも見たいかもしれません。
参考までに、OpenSSH 6.7はtcpwrappersサポートをドロップします。つまり、denyhostsはおそらく新規インストールのソリューションではありません。
あなた自身を助けて、パスワードログインを無効にしてください。排他的に認証キーを使用します(たとえば、Google ssh-keygen-例:http : //www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/document/html/SSH-with-Keys-HOWTO-4 .html)サーバーはより安全になり、より快適に接続できるようになり(ssh-agent、ssh-add、keychainを確認してください)、sshブルートフォース攻撃の被害者ではなくなります。
別の解決策は、sshを別のポートに移動することです。これらのワームはかなり愚かです。
正直なところ、SSH(およびポート22)を実行する必要がある場合、これらを避けることはできません。パスワードを受け入れる必要がある場合は、さらに悪い状態です。
最善の策は、SSHログを除外するようにログ分析ソフトウェアを構成することです。次に、別のインスタンスを実行してSSHログのみを調べ、procmailを使用して失敗した試行を除外します。複数の失敗したIPアドレスからのログインの成功を監視するスクリプトを作成することもできます。
人々があなたのSSHサーバーを調べるのを止める方法はありません。Denyhosts、fail2ban、およびiptablesの例はある程度まで機能しますが、正当なユーザーを誤ってブロックするという追加の危険性があります。最善の方法は、それを吸い込んでログ分析プロセスを自動化して、考えなければならない時間を減らすことです。
Red Hatサーバーでshhログインに失敗したと言うとき、どのようなファイアウォールが背後にあり、何人がshhにログインする必要がありますか。可能であれば、実際のサーバーに近づく前にファイアウォールでの試行を制限することをお勧めします。
正当にアクセスする必要があるIPアドレスの範囲を制限できる場合は、ファイアウォールでアクセスリストを設定できるはずです。ファイアウォールでトラフィックを制限できる場合、サーバーが何かの標的にされているように聞こえるので、ネットワーク侵入システムを調べることをお勧めします。
ほとんどのWebホストは、APF + BFDを使用して、失敗したSSHログインをIPブロックします。現在、CSF(Configserver firewall)には、同じことを行うLFDと呼ばれるツールが含まれています。さらに、サーバーにアクセスしたくない特定の国(韓国、中国など、私のSSHプローブの99%に由来するようです)。
複数のホストでこの問題に対処する必要がある場合は、OSSECをチェックしてください:http ://www.ossec.net/main/ossec-architecture
これにより、一元化された場所から複数のエージェントを構成して、ブルートフォース攻撃に自動的に対応することができます(ログから抽出できる他のパターンと一緒に)。
ソフトウェアの非常に素晴らしい作品:)
DenyHostsに似た別のオプションは、sshutout http://www.techfinesse.com/sshutout/sshutout.htmlです。