SSHでログイン遅延を提供する方法


11

sshを使用してログインしている間、ログインの遅延を提供したいと思いました。同じことを行う方法をいくつか試しましたが、望ましい結果が見つかりませんでした。

私は与えられたリンクによって提供されるステップを試みました。

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

自分のマシンにPAMモジュールがインストールされていないため、PAMファイルに関連する変更を行うことができません

だから、私に同じことをする他の方法を提案させてくれる体はありますか?

組み込みプラットフォームで実行しているLinuxカーネルのみを使用しています。


なぜ遅延を導入したいのですか?あなたの最終的な目標は何ですか?
CVn

ブルートフォース攻撃の可能性を防ぎたかった。
ラム

3
新しい接続に遅延を導入するだけでは、総当たり攻撃を防ぐことはできません。実際の問題を解決するために設計されたツールを見る必要があります。与えられたコマンドを実行することによって繰り返しログエントリに反応するように特別に設計されたフェイル2バンから始めて、不正アクセスを取得するためのブルートフォース攻撃を防ぐために特に使用されることが多いです。
CVn

それは素晴らしいマイケルですが、私は私が持っている既存のインフラストラクチャでそれを行わなければなりません、ssh経由で接続するたびに遅延をどのように導入できますか?
Ram

2
おい、fail2banあなたが既に持っている正確なインフラストラクチャを使用します-sshログとiptablesルール。
Shadur 2013

回答:


11

方法#1-パスワードログインを無効にする

パスワードログインを許可する必要がない場合は、単にログインを許可しないことで、目的の効果が得られます。この行を単にに追加して/etc/ssh/sshd_configください:

PasswordAuthentication     no

さらに、次のようにMatch演算子を使用して、パスワードの使用を特定のユーザーに制限できますsshd_config

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

方法#2-iptables

を使用iptablesして、失敗したログイン試行を追跡し、特定のしきい値を超えた場合にそれらをドロップすることもできます。これは、hostingfuの例に似ていますが、理解しやすくなっています。

$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

注:最初の行は基本的に、sshポートでの新しい接続試行に使用されるパケットにのみ適用されるルールを作成します。2行目は、60秒以内にIPからの試行が4回を超える場合、そのIPからのトラフィックはすべてブラックホール化されることを示しています。このソリューションでは、さまざまなユーザーアカウントでの試行の有無は関係ありません。

方法#3-PAMを使用する

PAMが利用できないとおっしゃっていましたが、利用できた場合、これがログインの失敗を遅らせる方法です。sshログインの失敗を単に遅らせることを意図している場合は、PAMモジュールを使用できますpam_faildelay。このPAMモジュールは通常、デフォルトの組み合わせに含まれています。

私のFedora 19システムでは、これはデフォルトのインストールの一部です。

に関連するファイルを探しますpam_faildelay

$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz

それらが提供するRPMを確認します。

$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686

使用法

失敗時に遅延を作成するには、このような行をsshdpam構成ファイルに追加するだけです。再びFedora / CentOS / RHELシステムでは、このファイルは次の場所にあります/etc/pam.d/sshd

10秒の遅延を作成するには:

       auth  optional  pam_faildelay.so  delay=10000000

60秒の遅延:

       auth  optional  pam_faildelay.so  delay=60000000

上記の方法を使用して20秒の遅延で、PAM構成sshdファイルを次のように変更しました。

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_faildelay.so  delay=20000000
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

ログインすると:

$ date
Tue Dec 17 09:16:30 EST 2013

$ ssh blah@localhost
blah@localhost's password: 
Permission denied, please try again.
blah@localhost's password: 

...Control + C....

$ date
Tue Dec 17 09:16:50 EST 2013

参考文献


@slmに感謝しますが、ここでもpamモジュールをインストールできず、私のsshd認証はpamからではありません。他の方法を提案しますか
Ram

@AmitSinghTomar-申し訳ありませんが、私の答えを拡張しました。私はあなただけの問題ではなく、すべての方法をカバーするあなたの質問に対する標準的な答えを作成しようとしていました。
slm

詳細な回答をありがとう@slm、あなたが提案した2番目の方法に従うことに興味があります。試してみて結果を知らせてください。また、sshを使用した最初のログイン試行で遅延が発生しますか?
Ram

@AmitSinghTomar-いいえ、4回試行した後でのみ遅延します。を--hitcount 4超えると、ルールは問題のあるIPアドレスを60秒間ブラックホール化します。
slm

私があなたに知っておきたかった1つのポイント、あなたの3番目の方法が機能するために(PAM)、それはssh認証がpamを介して起こる必要があることを必要としますか?
Ram

3

パスワードを無効にします。パスワードなし、ブルートフォース攻撃なし。

ログインにssh-keysを使用できます。これは、より安全で、ハッキングするのがさらに困難になるはずです。


0

Ubuntu 16.04 とのopenssh-serverクリーンインストールでは、0文字を超える間違ったパスワードを入力すると遅延が発生します。遅延は1秒以上のようです。

ゼロ文字の誤ったパスワード試行の場合、遅延はありません。したがって、パスワードが実際に空の文字列でない場合、攻撃者はパスワードが空の文字列ではないとすぐに判断します。空の文字列はおそらくパスワードとして許可されていないので、彼らはすでに知っているので、空の文字列を試そうとはしません。

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