web-dev-qa-db-ja.com

防止-IPからの多数の失敗したログイン試行

CentOS 6.3サーバーを実行していて、現在、サーバーから「IPからのログイン試行の失敗回数が多い」というタイトルの電子メールを15分程度ごとに受信しています。

確かに、以下の設定では、(私の静的IP)を使用している人だけがログインを試みることができるはずです?

その場合、これらのリモートの不明なユーザーがログインしようとして、これらの電子メールを生成していますか?

現在のセキュリティ手順:

  • rootログインのみが許可されますwithout-password
  • StrictModes yes
  • SSHパスワードログインが無効になっています-PasswordAuthentication no
  • SSH公開鍵が使用されます
  • SSHポートが40kを超える数に変更されました
  • cPHulkが構成され、実行されている
  • ログインは特定のIPアドレスに制限されています
  • cPanelとWHMは私の静的IPのみに制限されています

sshd_config

[email protected]

hosts.allow

ALL : <Static IP>

hosts.deny

ALL : ALL

iptables

iptables -I INPUT -s <Static IP> -p tcp -m tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 22 -j REJECT
4
Dan

私がすることは、使用することです Fail2Ban &それをあなたのsshログファイルに向けます。そうすれば、同じIPから指定された回数の失敗した試行を取得した場合、fail2banはファイアウォールルールを自動的に追加して、指定した期間、それらのIPからパケットをドロップします。

8
churnd

前もって1つの小さな詳細。 sshdは「TCPラップ」されているため(通常はLinuxの場合)、表示されるログエントリは_hosts.deny_からのもののように見えます。詳細については、 _man tcpd_ を確認してください。

ファイアウォールルールを使用すると、(sys)ログに記録される内容をより適切に微調整できます。つまり、静的IPをホワイトリストに登録し、他のすべての人をブラックリストに登録する場所です。

既存のルールをiptablesに変換する場合は、次のシェルスクリプトを使用できます(PORTSMYIPをニーズに一致する変数に置き換えます)。

_#!/bin/bash
IPT="echo /sbin/iptables"
MYIP=1.2.3.4
PORTS="22 443 8080"
$IPT -P INPUT DROP
for port in $PORTS; do
        $IPT -I INPUT -p tcp --dport $port -s $MYIP -j ACCEPT
done
_

...またはそれより短い:

_#!/bin/bash
IPT="echo /sbin/iptables"
MYIP=1.2.3.4
PORTS="22 443 8080"
$IPT -P INPUT DROP
$IPT -I INPUT -p tcp -m multiport --dports ${PORTS// /,} -s $MYIP -j ACCEPT
_

...またはハードコードされた2行:

_/sbin/iptables -P INPUT DROP
/sbin/iptables -I INPUT -p tcp -m multiport --dports 22,443,8080 -s 1.2.3.4 -j ACCEPT
_

残念ながら、ポート番号を推測するための優れた方法はないため、ポート番号をハードコーディングすることになります。

また、_iptables -X INPUT_を使用して、ポリシーを設定する前にINPUTテーブルをフラッシュすることもできます。

上記は、簡単に説明すると、INPUTテーブルのデフォルトポリシーをDROPに設定し、指定されたポートへのTCP接続のみを許可します(_$PORTS_)指定されたIP(_$MYIP_)から。


自分の静的IPを除いて、非常に厳密なロックダウンに関心があるようです。そのため、次のことはまったく必要ありません。

私は、ServerFaultに関する以前の投稿で指摘したように、次のnetfilterルールを使用しています。 1日に数百回の侵入試行が発生するのは正常ですか?

ルールはthisサイトにすでに存在するため、ここでは繰り返しません。ただし、IPが自動的にターピットに配置されるまで、ログメッセージがいくつか表示されることに注意する必要があります。一般的に、非常に健全なsshd構成を考えると、試行回数についてそれほど心配する必要はないと思います。ターピット時間を調整して、攻撃者をより長く閉じ込めたり、より早く行動したりしますが、自分を締め出さないように注意してください。

また、最近、私はテストを行い、 sshguard が非常に好きになりました。多くの人がFail2Banと比較していますが、その範囲ははるかに広いと思います(sshdに限定されません)。このツールは、さまざまな機能を使用してログを解析し(直接、またはsyslog機能がログをファイルに配置した後)、さまざまな機能を使用してブロックできます(例:netfilter/iptables)。

人々が彼らの試みに粘り強いときはいつでも、私は完全なブロック(ファイアウォール)を入れました。

ログエントリだけが煩わしい場合は、logcheck(または他のツール)を構成して、それらをフィルタリングするか、sshdがバインドするポートを変更します。ただし、セキュリティ面では、このスネークオイルを検討します。

3
0xC0000022L

その構成でも、sshdは次の行に沿って失敗した試行を報告します。

Dec  3 00:56:35 servername sshd[31242]: refused connect from li471-78.members.linode.com (50.116.13.78)
Dec  3 00:56:40 servername sshd[31244]: refused connect from li471-78.members.linode.com (50.116.13.78)

おそらくあなたのログアラートがそれをトリガーしていますか?ログをチェックして、これが当てはまることを確認してください。

アラート機能の感度/検索パターンを変更することで、これをなくすことができます。

ファイアウォールを使用して、IPアドレス以外からのすべての着信SSHトラフィックをブロックすることで、それをなくすこともできます。ファイアウォールを使用している場合、sshdにヒットするものはないため、ログには何も表示されません。

3
cjc

ハッキングされた可能性があります。

rpm -Vv keyutils-libsサーバーのルートとして。

5が見えますか?もしそうなら、ライブラリの1つが攻撃バージョンに置き換えられています。

攻撃(おそらくcPanelを使用)の詳細については、 ここ を参照してください。

2
Nils

私はこれを個人的に使用して、サーバー上の一部のポートへのアクセスを制限しています。

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSHACCESS --rsource 
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 20 --name SSHACCESS --rsource -j DROP

コンテキストに合わせて--secondsおよび--hitcountsで遊ぶことができます。

また、ポートノッキングなどのより複雑なルールを使用することもできます。この場合、リクエスト(ping、tcp、telnetなど)を送信すると、システムはそのIPに対してのみSSHポートを数秒間開き、サーバーに対してsshを実行できます。これを実装するには、このリンクを確認してください iptablesを使用

これは、ポート1000をノックする単純なポートです。

-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1000 -m recent --set --name KNOCKING --rsource
-A INPUT -p tcp -m tcp --dport 22 -m recent --rcheck --seconds 5 --name KNOCKING --rsource -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP

これで、次のようにサーバーにSSH接続できます。

telnet <ip> 1000 ; ssh <ip>

これについてさらにサポートが必要な場合は、お知らせください。

1
Boynux

ここで説明されているように、-m connlimitを使用して、攻撃者の速度を落とそうとする誤った試行の数を制限することもできます。 http://www.cyberciti.biz/faq/iptables-connection-limits-howto/ =。

異なるIPブロックに除外や異なるタイミングを追加することも可能で簡単です。

また、デフォルトのsshdポートを一般的でないものに変更することも検討します。

0
apagr

幸いなことに、私はローカルISPの状況で、静的IPの支払いが決して事前の通知なしに変更されることがわかっています。この場所からサーバーに変更を加えるだけでよいため、ブロックできます。 iptablesおよびより高いsshポートを介したこの場所の外部のすべてのSSHアクセス。

したがって、sshd_configに次の変更を適用しました。

#example
Port 40000

また、静的IPアドレスとsshポートを使用してiptablesエントリを作成しました。

iptables -A INPUT -p tcp -s 1.1.1.1 --dport 40000 -j ACCEPT

これまでのところ、これでうまくいったようです!

0
Dan