私のサーバーは常に攻撃されています[閉じられました]


32

私はシステム管理の世界ではかなり新しいです。私は最近アプリケーションで作業しており、アプリケーションサーバーのログを確認するとき、ブルートフォースによってサーバーにsshしようとするさまざまなIPアドレスを常に取得しています。サーバーログの例を次に示します。

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

これはかなり普通のことですか、それについて心配する必要がありますか?


3
ポート番号を変更して、それが持続するかどうかを確認してください。彼らがあなたを明確にターゲットにしていないのなら、おそらくそうではないでしょう。
goldilocks

13
最善の解決策は、SSHでパスワード認証を無効にすることです。これにより、ブルートフォース攻撃が確実に阻止されます。
ウィレム


3
@Willem-いいえ、パスワード認証を無効にしても攻撃は阻止されません。失敗するだけです(攻撃者はパスワード認証が無効になっていることを認識せず、試行を続けます)。
マーティンVegter

回答:


59

素晴らしいインターネットの世界へようこそ。

しかし、本当の答えは次のとおりです。はい、これは正常です。BotNetMaffiaは、いくつかの余分に保護されたサーバーを常に使用できます...


1
私は、野生の野生のインターネットでSSHを使わないことを好みます。+1
ルイFリベイロ

2
sshのデフォルトポートを変更する以外に、ポートノッキングもあります
パブロA

15

フラッディングログを作成するのに十分なログイントライアウトを行うことは、かなり正常です。

SSHポートを変更することは、「セキュリティによる不明瞭さ」タイプのソリューションになりますが、洪水を助長します。あまりエレガントではないことを強調します。理由により、サービス用の事実上のポートがあります。

デフォルトでオンになっているはずですが、ルートとしてサーバーにSSHで接続できないようにしてください。サーバー間でかなり一貫しているのはユーザー名であり、したがってパスワードのブルートフォースログイン試行の主要なターゲットです。次の行で設定を強制しますsshd_config

PermitRootLogin no

またfail2ban、sshdログを繰り返して攻撃者を監視することも検討してください。たとえば、特定のIPから3分間に5回ログインに失敗すると、そのIPは10分間ブロックされます。ログスパムをさらに削減するため、禁止時間を24時間に延長しました。:)


1
apt-get install fail2banは基本的にカバーされます
ウィレム

7
「ログスパムをさらに減らすために、禁止時間を24時間に増やしました」サーバーに物理的にアクセスできない限り、いつかは深く後悔するでしょう。;)
ダニエル

8

いくつかのことを行うことをお勧めします。

  1. sshがリッスンしているポートを(1024をはるかに超える値に)変更し、プロトコルのバージョン1を使用していないことを確認します。

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. インストールfail2ban-ログファイルを監視し、既存のファイアウォールルールを更新することにより、障害が発生しやすいアドレスを一時的または永続的に禁止します(iptables)。

  2. 信頼できる場所をホワイトリストに登録したことを確認してください。


7

はい、心配してください。やけどすることはありませんが、ITのベストプラクティスに従う必要があります。転ばぬ先の杖。

私は病院のネットワーク管理者です。ボックスをインターネットに直接接続することは常に悪い考えです。あなたが見ているのは、インターネット上の脆弱性をスキャンする何千もの自動スキャナーです。私はすべての種類のソフトウェア(SSH、TELNET、FTP、など)私たちのIDSボックスに表示のために物事のこれらおよびすべての種類(ポートスキャン、様々な既知の脆弱性テスト)を参照してください
あなたのマシンは、ファイアウォール/ NATソリューションの後ろでなければなりませんが、あなたが唯一べき必要なポートをインターネットにポートフォワードします(80、443など)。比較的簡単です。
何らかの理由でそのサーバー上のSSH / telnetソフトウェアにバグがある場合、自動ボットがハートビートでそれを検出するため、managemnt(SSH telnet)に使用できるものを用意することはインターネットに直面するのは悪い考えです。ねじ込まれます。ソフトウェアのバグは常に発生し、パッチがリリースされるまで、またはパッチを忘れないようにするのに時間がかかる場合があります。

リモートで管理する必要がある場合は、VPNソリューションなどのセットアップを検討するか、Windowsを使用している場合は、リモートデスクトップ用のターミナルサービスゲートウェイをセットアップします。2枚のNICを備えた別のLinuxまたはWindowsボックスを使用して、VPNとNATのルーティングとリモートアクセスを設定できるのは、小さなお店だけの場合です。それ以外の場合、シスコのようなベンダーには、ハードウェアファイアウォール/ NATソリューション(Cisco ASA)があります。

要約すると、マシンをNATの背後に配置します。サービスの目的を実行するために必要なポートのみをポート転送します。管理使用されるサービスをインターネットに移植しないでください。代わりに、リモート管理のためにVPNを検討してください。

PS SSHポートを変更するとログボリュームが改善される可能性がありますが、実際にはSSHへのアクセスを妨げません。自動化された数千の脆弱性ファインダのどれでも、ポートスキャンを実行して、どのポートがどのサービスをリッスンしているかを確認できます。nmapと呼ばれるツールを使用して自分で行うことができます。


7
実際、VPNソリューションはSSHサーバーほど安全ではありません。どちらも、暗号化プロトコルが正しく実装され、サービスが適切に構成されていることに依存しています。さまざまな手段で、まったく同じレベルのセキュリティを提供すると言います。それから、私があなたをよく理解しているなら、あなたはVPNの後ろに SSHを置きます、そして、はい、それは1レベルより安全です。
lgeorget

はい、それは私が意図していることです、VPNを使用してファイアウォール/ natを通過させてからサーバーにsshします

1
ほとんどのVPNセットアップでは、クライアント認証のいくつかのレイヤーを通過するだけでなく、外部トラフィックが内部ネットワークに到達できる単一ポイントを提供します。多くのノードを持つことに対して。また、VPNコンセントレーターは、sshdインスタンス自体を収容している可能性のあるサーバーとは対照的に、通常、それ自体では興味深いターゲットではありません。sshジャンプボックス、ほとんどのVPN構成と同じくらい安全ですが、一般に、それはその方法ではありません。
ブラッチリー

5

iptablesによってカーネルの内部ファイアウォールを設定できます。そのため、ごく少数のマシンだけがサーバーにSSH接続して、他のIPパッケージをドロップできます。詳細についてはman iptables、を参照してください。

たとえば、192.168.1.67がsshのホストである場合、サーバーで次のように入力します。

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
リモート管理が唯一の選択肢である場合は、ひどくめちゃくちゃになることに注意してください。ほとんどのIPは半永久的です。ハードウェアを変更すると、焼き付けられます。
マスト

3

インターネット上にサーバーが本当に必要ですか?あなたが本当にインターネット上でそれを持ちたいなら、そこに置く前にそれが安全であることを確認してください。

ポートの変更は、あいまいさによるセキュリティにすぎません。攻撃者が単にスクリプトを実行するよりも高度な場合、それは役に立ちません。

私がお勧めすることはすでにいくつか言及されています:

  1. 私はFail2Banに同意し、適切に構成すると、スクリプトと最も洗練されたハッカーを寄せ付けません。
  2. PermitRootLoginをnoに設定することは必須です。
  3. ファイアウォールを構成します。私は通常iptablesルールを編集するだけですが、UFWやfireholのようなものでも動作します。

私がこのコミュニティに参加したのは、2つのことが適切に対処されていないと思うからです。

  • ファイアウォールの設定で、完全に不要なものをすべてブロック/無効にします。ポートを開く前に、「インターネットからこのサービスが本当に必要ですか?」と自問してください。開いたすべてのポート/サービスは、誰かが悪用できる別の潜在的なベクトルになります。そのサービスにバグがあり、サーバーへのルートアクセスを取得できる場合、サーバー上のすべてにアクセスできる可能性があります。あなたのセキュリティは、最も弱いリンクと同じくらい強力です。
  • 最後になりましたが、おそらく最も重要なことです。sshにアクセスしようとしているスクリプトは、時間の経過とともにパスワードを推測できる可能性があります。Fail2Banはそれらを大幅に遅くしますが、それでも潜在的に推測できます。その場合、アクセス可能なサービスで2要素認証が必要です。そのためには、Duo Securityの無料アカウントをお勧めします。https://www.duosecurity.com/docs/duounix

1
ポートを変更すると、ログファイルをクリーンアップできるという利点があります。スクリプトキディはほとんどの場合、デフォルト以外のポートを攻撃しないため、ログエントリは重大な脅威を表します。
マーク

ポートを変更しても、実際の脅威に対する使用はまったくゼロではありません。スピードバンプはそれほど大きな壁ではありませんが、それでもスピードバンプであり、これをやや大きなスピードバンプにする方法があります。また、2要素認証は、可能な場合はいつでも使用することをお勧めしますが、ほぼ常に可能であるはずですが、エッジケースもあります。特定の最小時間がある場合、Fail2Banがそれらを遅らせることを確信できます。それよりも頻繁にパスワードを変更するだけで、強制的に繰り返しやり直し、終了することはありません。
マシューナジモン

2

@cffの答えの別の例、SSHサーバーで連続した「試行」を禁止する場合:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

これは、接続試行を「タグ付け」し、600秒以内に4回以上発生すると(10分)、発信元は「禁止」されます。より安全であるため、@ cffソリューションの代わりにこれを使用します(ロックアウトした場合は、10分待ってから再試行します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.