web-dev-qa-db-ja.com

サーバーが常に攻撃されている

私はシステム管理の世界ではかなり新しいです。最近アプリケーションに取り組んでいて、アプリケーションサーバーのログを確認すると、ブルートフォースでサーバーに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

これはかなり正常なことですか、それとも何か心配事をする必要がありますか?

33
SivaDotRender

インターネットのすばらしい世界へようこそ...

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

60
Fabby

フラッディングログを作成するのに十分なログイントライアウトを行うのは、ごく普通のことです。

SSHポートの変更は、「あいまいさによるセキュリティ」タイプの解決策ですが、洪水には役立ちます。あまりエレガントではないことを強調します。理由により、サービス用の事実上のポートがあります。

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

PermitRootLogin no

また、sshdログを監視して、違反者の再発を監視しているfail2banも確認してください。たとえば、特定のIPから3分間に5回ログインに失敗すると、そのIPは10分間ブロックされます。ログのスパムをさらに減らすために、禁止期間を24時間に増やしました-成功しました。 :)

15
nperson325681

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

  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. 信頼できる場所をホワイトリストに登録していることを確認してください。

8
pawel7318

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

私は病院のネットワーク管理者です。ボックスをインターネットに直接接続することは、常に悪い考えです。あなたが見ているのは、インターネット上の脆弱性をスキャンする何千もの自動化されたスキャナーです。これらすべての種類のソフトウェア(ポートスキャン、さまざまな既知の脆弱性テスト)のすべての種類のソフトウェア(ssh、telnet、ftpなど)がidsボックスに表示されます。
ご使用のマシンはファイアウォール/ NATソリューションの背後にあり、必要なポートのみをインターネットに転送する必要があります(80、443など)。比較的簡単です。
managent(SSH telnet)に使用できるものを用意することは、インターネットに直面するのはよくありません。何らかの理由で、そのサーバーのSSH/telnetソフトウェアにバグがある場合、自動ボットはハートビートでそれを検出し、あなたはめちゃくちゃになります。ソフトウェアのバグは常に発生し、パッチがリリースされるまで、またはパッチの適用を忘れないようにするには、しばらく時間がかかる場合があります。

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

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

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

7
person

カーネルの内部ファイアウォールは 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
5
cff

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

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

すでに言及したいくつかのこともお勧めします:

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

私がこのコミュニティに参加したのは、十分に対処されていないと思われることが2つあるためです。

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

SSHサーバーでの後続の「試行」を禁止する場合の@cff回答の別の例:

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秒(10分)に4回以上発生した場合、オリジンは「禁止」されます。より安全であるため、@ cffソリューションの代わりにこれを使用してください(自分をロックアウトした場合は、10分待ってから再試行してください)。

2
xryl669