サーバーを確認したところ、/var/log/auth.log
1日あたり500件を超えるパスワード/侵入試行の失敗通知を受け取っていることがわかりました。私のサイトは小さく、そのURLは不明瞭です。これは正常ですか?何らかの対策を講じるべきですか?
サーバーを確認したところ、/var/log/auth.log
1日あたり500件を超えるパスワード/侵入試行の失敗通知を受け取っていることがわかりました。私のサイトは小さく、そのURLは不明瞭です。これは正常ですか?何らかの対策を講じるべきですか?
回答:
今日のインターネットでは、これは悲しいことにごく普通のことです。IPネットワーク全体で見つかった各サーバーにログインしようとするボットネットの大群があります。通常、よく知られているアカウント(ルートや特定のアプリケーションアカウントなど)に対して単純な辞書攻撃を使用します。
攻撃の標的は、GoogleやDNSエントリでは見つかりませんが、攻撃者は特定のサブネット(既知のルートサーバーホスティング会社など)のすべてのIPアドレスを試すだけです。したがって、URL(したがってDNSエントリ)が不明瞭であっても問題ありません。
そのため、次のことが非常に重要です。
さらに、authlogをスキャンするfail2banをインストールできます。IPから特定のログイン試行の失敗が検出されると、そのIPを/etc/hosts.deny
iptables / netfilterに追加して、攻撃者を数分間ロックアウトします。
SSH攻撃に加えて、脆弱なWebアプリケーション(一部のブログアプリ、CMS、phpmyadminなど)についてWebサーバーをスキャンすることも一般的になっています。そのため、それらを最新の状態に保ち、安全に構成してください。
action.d/iptables.conf
です。
数百は問題ありません...先月、サーバーの1つで4万回の試行が失敗しました。私はそれらをプロットするのに苦労しました:地図
sshポートを変更してPort Knockingを実装すると、数値は0になりました:-)
grep 'Failed password' /var/log/secure* | grep sshd | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq
(重複を許可する場合は、末尾の| uniqを削除します)。次に、それらをCSVに入れて、zeemaps.comにアップロードできます。彼らはマップ(郡ごとの試行回数のための赤に緑を)着色する回数を使用する場所私は私は、その後、より良いマップを見てきましたが、私はジェット機は、1人の考え出したていない
私は、公開鍵認証のみを許可し、ルートログインを許可しないことに加えて、「ターピット」を使用します。
でnetfilter
ありrecent
、あなたが(で使用できるモジュール、INPUT
チェーンは):
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT
つまり、ポート22への接続試行はすべてrecent
、IPとその他の「tarpit」という名前のモジュールによって一覧表示されます(興味がある場合は、を参照してください/proc/net/xt_recent/tarpit
)。明らかに、他の名前を使用できます。
IPをリストまたはリストから削除するには、次を使用します。
echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit
これにより、試行が300秒で5回に制限されます。既存の接続を持つユーザーは、既に確立された接続を持ち、さらに(レート制限を超えて)作成することが許可されているため、その制限に悩まされないことに注意してください。
ルールを好みに合わせて調整しますが、ルールがその順序で追加されることを確認します(つまり、追加するときはこの順序で使用し、挿入するときは逆の順序で使用します)。
これにより、ノイズが大幅に削減されます。また、ポートを変更するという認識されているセキュリティとは異なり、(ブルートフォーシングに対する)実際のセキュリティも提供します。ただし、ご使用の環境で実行可能な場合は、ポートを変更することをお勧めします。ノイズレベルも大幅に削減されます...
これをfail2banと組み合わせることができますが、私はこれと上記のルールのみを使用せずに正常に実行しています。
編集:
これを行うことで自分を締め出すことができるので、特定のポートをノックして禁止を解除できる次のようなものを追加できます。
iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove
はい。最近ではかなり普通です。
可能であれば、管理目的で公開鍵認証のみを使用してください。ワークステーションで秘密鍵を生成します。
$ ssh-keygen -t dsa
〜/ .ssh / id_dsa.pubの内容をサーバー〜/ .ssh / authorized_keys(および/root/.ssh/authorized_keys、直接ルートログインが必要な場合)にコピーペーストします。
サーバーの/ etc / ssh / sshd_configを設定して、公開鍵認証のみを受け入れます。
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin without-password
サーバーが多すぎる場合は、Puppetを使用してそれらに対して公開キーと構成を実行できます。
見てDenyhostsとfail2banの繰り返しSSHのログイン試行をブロックするとご覧にSnortをフルIDS / IPSが必要な場合。
http://denyhosts.sourceforge.net/を使用します
はい、公開鍵認証を使用し、パスワード認証を無効にする必要があります。
試行は機械化されているため、数値は問題ないようです(はい、いくつかのサイトに比べて高く、他のサイトに比べて低くなっています)。通常は次の手順を実行する必要があります。攻撃を検出しなくても、サイトを毎日攻撃の標的と見なします。攻撃を検出しない、存在しないという意味ではありません。
たった500個しか得られないというのはちょっと低いと思います。
以前の雇用主では、コンピューターセキュリティの研究者の1人が、侵入攻撃の絶え間ない流れを「宇宙ノイズと同等のインターネット」と呼びました。彼は、インターネット上のシステムを検索し、システムを乗っ取ろうとするスクリプトを自動的に悪用する、通常の継続的な悪意のあるトラフィックの流れとして説明しました。ボットネットやその他の悪意のあるシステムは、SETIによく似た脆弱なシステムについて、インターネットを永久にスキャンおよび再スキャンします。
これは一般的ですが、それはあなたが良い戦いと戦うべきではないという意味ではありません。サーバーをより安全にする方法のいくつかの手順を次に示します。
ドメイン名に関連付けられたIPアドレスでSSHアクセスを無効にすることにより、共有環境またはコロケーション環境でこの数を大幅に減らすことができます。リストにない非ドメインIPアドレスは、このタイプのトラフィックをあまり受信しないため、リストにないIPを購入し、このIPをSSHアクセスにのみ使用します。
サーバー環境内のプライベートネットワークにIPsec / VPNを実装できる環境にいる場合、これが理想的です。すべてのSSHインターネットアクセスを無効にし、統合されたライトアウトソリューションがあることを確認します。VPNをセットアップし、VPNからのSSHアクセスのみを許可します。
VLANがオプションではない場合、既知のIPアドレス範囲からのSSH接続のみを許可するようにルーターまたはファイアウォールルールを構成します。
これらの手順に従うと、SSHを介してサーバーにアクセスするためにホスティング会社のネットワークを侵害する必要があることを知っているため、夜はずっと安眠できます。
何百もの失敗したSSH接続を見るのはかなり普通です。
オプションがある場合は、SSHポートを非標準のものに変更するだけです。サーバーを必ずしも安全にする必要はありませんが、ログを確実にクリーンアップします(そして、意図的に侵入しようとしている人を見ることができます!)
fail2banなどの自動ロックアウトメカニズムの使用に加えて、もう1つのオプションがあります。実際には、攻撃者の不正使用アドレスISPに連絡してください。それは完全に無駄に思えるかもしれませんが、スクリプトキディの場合、ISPはそれらに対してアクションを起こすことをいとわないでしょう。
不正使用アドレスを見つけるには、arin.netから始めて、whoisを使用してIPアドレスを検索します。別の地域のレジストリにリダイレクトされる場合がありますが、最終的にはアドレスを含むIPブロックの責任あるISPを見つけることができます。abuse @アドレスを探すか、技術担当者にメールしてください。
関連するログファイルエントリを含む丁寧なメッセージを送信し(プライベート情報を削除するようにしてください)、問題のあるホストに対してアクションを実行するよう依頼します。
はい、それは正常です。小さなウェブサイトであなたの状況にあるクライアントに私が言うこと。
常にハッキングされる準備をしてください。
開発サーバーにWebサイトのコピーを用意します。これは、無料で入手できるXAMPPを使用したWindowsデスクトップにすることができます。
開発サーバーを常に変更してから、ライブWebサイトにアップロードします。WordpressのようなCMSである場合は、開発サーバーで投稿を作成してから、ライブサーバーにコピーして貼り付けます。
ライブWebサイトから開発サーバーに何もダウンロードしないでください。
行っていない変更がないか、定期的にWebページを監視してください。具体的には、薬物または「強化」製品への隠されたリンク。これを行う多くのブラウザアドインとプログラムを見つけることができます。
侵害された場合。ホストに通知し、すべてを削除し、すべてのパスワードを変更し、クリーンな開発サーバーを空のWebサーバーにアップロードします。ホストと協力して、再発を防ぎます。
小規模なサイトにはセキュリティチームは必要ありません。それはあなたのホストが提供することになっているものです。そうでない場合は、ライブサーバーを移動しようとするよりも、開発サーバーを使用している場合の方がはるかに簡単な別のホストを取得します。
お役に立てれば。
既に受け取った他の優れた提案に加えて、特定のサーバーに適切な場合はAllowUsersディレクティブも使用します。これにより、指定されたユーザーのみがSSH経由でログインできるようになり、安全でない構成のゲスト/サービス/システムアカウントからアクセスできる可能性が大幅に減少します。
例:
AllowUsers admin jsmith jdoe
AllowUsersオプションは、sshサービスにアクセスできるユーザーを指定および制御します。スペースで区切って、複数のユーザーを指定できます。
はい、それは正常です。あなたはできる :
Fwknopは、スプーフィングされず、単に接続を許可するのではなく実際に認証するため、より優れたポートノック実装の1つです。
opensshが使用するポートは変更できますが、実際にはセキュリティは向上していません。
Google認証システムまたはwikidを使用したssh認証の強化
これにより、パスワードベースの攻撃と、管理者のマシンを侵害し、sshキーとパスワードのコンボを盗む、断固とした攻撃者/標的型攻撃の可能性を保護します。
最新のpwn2own compを見るだけで、熟練した攻撃者が完全にパッチされた管理ボックスを侵害するのがどれほど簡単かを確認できます。
悲しいことに、これは非常に正常です。システムにfail2banなどを追加して、攻撃者を自動的に検出して禁止することを検討する必要があります。まだ行っていない場合は、公開鍵でsshのみを使用することを検討し、sshでのrootログインを許可しないでください。ftpを使用してシステムにファイルを転送する場合は、代わりにscp / sftpの使用を検討してください。
私はpam_abl
一時的にブルートフォーサーをブラックリストに登録するために使用しますが、それはうまく機能します。hosts.deny
またはに依存するよりも、独自のデータベースを使用してPAMで認証を行う方が良いと思いますiptables
。
もう1つの利点は、pam_abl
ログファイルのスキャンに依存しないことです。