SSH サーバーは保護されています。 大量のブルートフォースをホストするための SSH のセットアップ

ゴロヴナ / ザヒスト

この短いメモでは、ssh サーバーのセキュリティを向上させる方法をすぐに選択しました。 vikonnnіpriyomiの中で最も頭が痛くて最も単純なものの説明、および折り目は、読者がしゃがむことをあまり示していません。

主なメリット

設定は、デーモンの sshd 構成ファイル (/etc/ssh/sshd_config) で設定されます。 以下に、構成ファイルの一部をコメントで示します。

### ネットワーク ### # 勝利の非標準ポート (>1024) ポート 5679 # 勝利のみ IPv4 # inet = IPv4, inet6 = IPv6, any = both AddressFamily inet # プライベート IP アドレスのみを受け入れる #ListenAddress 0.0. 0.0 # Vykoristovuem から別のプロトコル バージョンへ。 # 明らかに必要になるまでグラフィックリダイレクト (X サーバー) を有効にする X11Forwarding no # TCPKeepAlive を無効にして ClientAliveInterval を有効にする # TCP スプーフィングなどの攻撃を防ぐ TCPKeep (600 秒まで) inactivity ClientAliveInterval 600 ClientAliveCountMax 3 ### 主要な構成ファイル # ## # プロトコル バージョン 2 の HostKeys HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # Wicker traffic # サンドボックス - openSSH >= 5.9 ("yes" - 新しいバージョンの場合) UsePrivilegeSeparation サンドボックス # この値を変更すると、 # 古いキー /etc/ssh/ssh_host_rsa_key(,.pub) を削除し、sshd を再起動して新しい # キーを作成します。 # # 人生の時間が鍵です、tobto。 数時間後、フロント キーとして新しいキーが上部に # 生成されます。 KeyRegenerationInterval 1h # ServerKeyBits キーの強度 2048 # 承認は公開キーによって許可される PubkeyAuthentication yes # ディレクトリからの信頼できるキーの取得 AuthorizedKeysFile .ssh/authorized_keys ### ロギング ### ### 認証key LoginGraceTime 30s # public エントリ以降のログインは禁止されています root PermitRootLogin no # そのディレクトリ内のファイル権限の明示的な再チェックを有効にします 不正なエントリの場合にパスワードを再試行する回数 MaxAuthTries 3 # 原則として # (Challenge-respon. public/private key challenge) PasswordAuthentication no # 「challenge-respon」を有効にします。 . Won Marne with Multiple Keys ChallengeResponseAuthentication no # パスワードを獲得できない場合、(PAM, login(1)) は必要ありません UsePAM no UseLogin no # クライアントが最後の変更セットのみを送信できるようにする # RH BZ# CVE-2014-252 # ShellShock エクスプロイト AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_

これらは、sshd 構成ファイルで設定されるパラメーターです。 修正を変更した後、sshd サービスを再起動する必要があります。

コメント

  • キーで承認する場合は、キーが必要です 前方クライアント マシンで生成し、公開鍵をサーバーにコピーします。 おしり:
クライアント $ ssh-keygen クライアント $ 猫 ~/.ssh/id_rsa.pub | ssh-p 5679 [メール保護]「猫 >> ~/.ssh/authorized_keys」
  • /var/log/auth.log ファイルにはログ エントリが含まれます。 sshd. このファイルが利用可能な場合は、ログ システムを修正する必要があります。 syslog と syslon-ng のバット。 syslog-ng を微調整していて、/etc/syslog-ng/syslog-ng.conf ファイルに新しい行を追加する必要がありました。
宛先 authlog ( file("/var/log/auth.log"); ); ログ (ソース (src); 宛先 (authlog););

syslog-ng サービスを再起動します。

  • 標準以外のポートを使用する場合は、ファイアウォール (iptables、firewalld など) を微調整する必要がある場合があります。
    お尻 iptables のセットアップ:
root# iptables -A INPUT -p tcp -m state --state NEW, ESTABLISHED --dport 5679 -j ACCEPT root# -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0. 0.0/0 状態 NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 状態 NEW tcp :80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 状態 NEW,ESTABLISHED tcp dpt:5679 ...

足りないもの

基本的な調整が少ないツェー。 Dodatkovo を設定できます

  • ファイアウォール (iptables)

この記事では、zakhistu SSH vіdの基本的な方法を見ることができます 大規模ブルートフォース攻撃。 この場合の大規模な総当たり攻撃では、パスワードを SSH 自体に送信することはできませんが、賭けの選択に対して不安定なログインパスワードのリモート明示のために、サーバーの範囲を広げることはできません。

SSH 大量ブルートフォース攻撃の主な特徴は、ポート 22 での広範な IP スキャンと、よく使用されるさまざまなパスワード名とパスワード (たとえば、root:passwd123、admin:server123 など) です。

サーバーでの最近の SSH 認証試行のログ ファイルから統計を表示するには、次のコマンドを入力します。

猫 /var/log/secure* | grep "失敗したパスワード" | grep sshd awk "(print $1, $2)" | 並べ替え-k 1,1M-k 2n | ユニーク -c

このスクリーンショットには、最近の日別の承認数に関する統計が含まれています。 同様のデータを自分で入力する場合は、SSH を総当たり攻撃として保護するためにログインする必要があります。

1.ヤクショー・ウィー 勝てない承認のために、ルート、管理者、管理者、ユーザーなど、ハッキングされることが多いルートの名前。 認証用の折りたたみ式パスワードを獲得すると、すぐに別のポイントに移動できます。 more folding のパスワードを変更するには、次のコマンドを入力します。

パスワード #your_login#

#your_login#- あなたの名前は Koristuvacha です。
新しいパスワードを入力すると、パスワードは表示されず、カーソルは一箇所になります。

SSH 経由でサーバーにアクセスし、新しいアカウントを作成してパスワードを設定し、次のコマンドを入力します。

adduser #newuser# passwd #newuser#

#新しいユーザー#- あなたの新しい im'ya koristuvach、im'ya koristuvach のように vikoristovyte をしないでください。 your_nickadmin(たとえば、foxadmin、useralex、rootidler)。

2. 次に、新しいログイン名とパスワードを使用して SSH 経由でログインします。 次のコマンドを使用して、SSH デーモン (sshd_config) の構成を検査します。

Vi /etc/ssh/sshd_config

代わりに、次のような罪を犯している場合:

から始まる行 # єがコメントアウトしました。

ショブ 大量のブルートフォースから SSH を保護する、コメントして、次のパラメーターを変更または追加します ファイル:
a) ポート・yacomuへの移植 SSHDそのサービス料金を受け入れます。 コメント アウト (行の耳の前に表示 # ) と標準値を変更 22 一方、1024 から 65536 までの予約済みポート - 予約済みポートのリスト。例:

ポート 2022

シチョブ・ヴィダリティ # 意味を変える ポート 22、キーボードを手の甲で押す 、必要な行を編集した後、 キーを押します ESC

b) ログイン猶予時間- システムに特派員を登録するための採点時間。 koristuvach が指定されたディレクティブによって入力された時間を延長してシステムに入ることができなかった場合、セッションは削られます。 値を変更します。

ログイン猶予時間 1 分

c) PermitRootLogin- koristuvachevіを許可 SSH プロトコル経由でログインします。 への変更 番号.

PermitRootLogin いいえ

d) ユーザーを許可- SSH プロトコル経由でのログインを許可します。 ここで、#your_login# を、私の kolistuvach による新しい作成に置き換えることができます。

AllowUsers #your_login#

e) MaxAuthTries- 1回のセッションでシステムに入ろうとした回数。 許容されるサンプルの最大数に達すると、セッションは削減されます。

MaxAuth 試行回数 2

その結果、次のようになります。

ポート 2022 LoginGraceTime 1m PermitRootLogin no AllowUsers #your_login# MaxAuthTries 2

tsіystattimizakіnchimonalashtuvannyaで SSH zahistuvіd質量の場合 残忍な力. 編集後 、キーボードを押す : 、下部に新しい行と距離が入力されています wqキーを押します 入る. 損失が発生した場合、変更は保存されます。

Yakscho Vishchos は間違った方法で強盗されました (たとえば、彼らはうっかり見てしまいました)。 貯蓄なしで去るためにキーの組み合わせの代わりに vikoristovyte wq、キー ク!

SSH セットアップが完了したら、次のコマンドでデーモンを再起動します。

サービス sshd の再起動

ここで、SSH プロトコル経由で接続する場合、新しいポートを検証します 2022 (その種のヴィーがナラッシュトゥヴァンニャで注文されたので)副官 標準ポート 22.

SSH インストールの現在の状態で、パスワードを使用してログインできるユーザーと、SSH 秘密鍵を使用しないとログインできないことをお伝えしたいと思います。パスワードの選択に自分自身。

連絡先

パスワードを求めてサーバーを保護するには、sshguard または sshit ユーティリティを使用できます。

ロボティクスの原理。

sshguard と sshit は同じ原則に従います。 不正な認証に関するシステム レポートを分析し、到達時に、攻撃している IP をブロック ファイアウォール ルールに入力します。 最後の 1 時間後、IP ルールが表示されます。
ロボットにファイアウォールをインストールする必要があります。

SSHガード

sshguard

  • AIX ネイティブ ファイアウォール- IBM AIX オペレーティング システム用
  • ネットフィルター/iptables- Linux ベースのオペレーティング システムの場合
  • パケット フィルタ (PF)- BSD オペレーティング システム用 (Open、Free、Net、DragonFly-BSD)
  • IPファイアウォール (IPFW)- FreeBSD および Mac OS X 用
  • IP フィルター (IPFILTER)- FreeBSD、NetBSD、および Solaris 用
  • tcpd の hosts_access (/etc/hosts.allow)- UNIX 間で移植可能
  • ヌル- 検出を適用するが防止を適用しないポータブルな何もしないバックエンド

私は、PFに置かれたzamіttsіでそれにvicorist PFを置きました。

sshguard のインストール。

FreeBSD:

ポートからインストール可能

Cd /usr/ports/security/sshguard-pf/&& make install clean

何らかの理由でチートしない場合は、残りのバージョンを sshguard サイトから取得し、手動で収集します

./configure --with-firewall=pf && make && make install

デビアン:

apt-get インストール sshguard

sshguard ロボットの OS セットアップ。

ログを保存するファイルを作成します

# touch /var/log/sshguard

Debian (喘鳴):

//etc/default/sshguard 攻撃行で編集可能

#mcedit /etc/default/sshguard #ARGS="-a 40 -p 420 -s 1200" ARGS="-a 5 -p 420 -s 2400 -b 5:/etc/sshguard/blacklist"

次にsshguardを再起動します
サービス sshguard の再起動

FreeBSD:

PF 構成に 2 つの行を追加する必要があります

テーブル 持続する

sshguard がロボット IP を入力するテーブルを開きます。

からの $if0 proto tcp ですばやくブロック

同じブロック ルールを PF 構成ファイルのルール ブロックの先頭に追加する必要があります。 ブロックする接続の $if0 インターフェイス。すべてのインターフェイスでブロックするには、any に変更します。
設定ファイルの再読み込み

auth.info;authpriv.info |exec/usr/local/sbin/sshguard

そしてsyslogを再起動します

#/etc/rc.d/syslogd 再起動

さて、これらの sshguard の操作の後、ロックの背後にあるパラメーターで攻撃をブロックします。
で攻撃されたとき /var/log/auth.log私たちは多かれ少なかれ同じです

Jun1611:01:40 www sshd:無効なユーザー テスト from61.172.251.183Jun1612:29:48 www sshd:無効なユーザー テスト from85.114.130.168Jun1612:29:49 www sshd:In5 user1 www sshd:Invalid user test from85.114.130。 168Jun1612:29:50 www sshd:無効なユーザー テスト from85.114.130.168Jun1612:29:50 www sshguard:Blocking85.114.130.16

sshguard のパラメーターの調整

sshguard には、変更できる多くのパラメーターがあります
-a一部の IP がブロックされた後の最近の認証試行回数。 通常は 4 です。
-p数秒後、IP のロックが解除されます。 通常は 420 です。
-s sshguard が IP を記憶する秒数。 1200のロック用。30分間の攻撃が1回あった場合、デフォルトの攻撃で禁止に入ることができません。
-w IPアドレス、マージ、またはファイルアドレスへの方法。 ファイル形式は 1 行 1 レコードで、# はコメントを示します。
-bリンクを介してIPをブロックすると、ブラックリストと新しいリストへの道が追加されます。 ブラックリストは sshguard の開始時に取り上げられ、自動的にはクリアされません。

sshguard には構成ファイルがなく、sshguard の起動時にパラメーターが設定されます。 sshguard モードでは、syslog を開始して syslog.conf を編集し、最近 3 回自動通知を 30 分間試行した後、sshguard が IP をブロックし、5 回ブロックした後、それをブラック リストに追加します。

Auth.info;authpriv.info |exec/usr/local/sbin/sshguard -a 3-p 1500-b 5:/usr/local/etc/sshguard.blacklist

最初に 420 秒間ブロックされ、7 分後に再び表示されました
突然 2 * 420 で 14 の whilins を通して見ることができます
3 回目は 2 * 2 * 420 で、28 回のホイリンの後に見られます。
2^(N-1)*420 N 回目。

クソ

Sshit - perl システムには perl スクリプトと 2 つのモジュールが必要です

  • IPC::共有可能
  • プロシージャ::PID::ファイル

Sshit vmієpratsyuvati少ないpfとipfw。

インストール中

cd /usr/ports/security/sshit/&& make install clean

Nalashtuvannya sshit。

Sshit には、ロックの値をオーバーライドできる構成ファイル /usr/local/etc/sshit.conf があります。

FIREWALL_TYPE = "pf"; # どんなファイアウォールが勝つか MAX_COUNT = 3; # IP がブロックされるまでの最近の認証試行回数 WITHIN_TIME =60; # 開くことを許可された秒数によって設定された最近の認証の数 RESET_IP = 300; # 数秒で IP のロックが解除されます。 PFCTL_CMD = "/sbin/pfctl"; PF_TABLE="badhosts"#不正な IP が入力されたテーブル

ロボットたわごとのための Nalashtuvannya OS。

sshguard の構成と同様に、PF 構成ファイルを編集します。

テーブル からの $if0 proto tcp でブロックをすばやく永続化します $if0 ポートへ ssh ラベル "ssh brute"

設定ファイルを読み直します

#pfctl -f /etc/pf.conf

syslog.conf を編集

auth.info;authpriv.info |exec/usr/local/sbin/sshit

そしてsyslogを再起動します

セキュア シェルはここにあります。 1995 年のリリース以来、SSH は Linux の高度なリモート アクセス プロトコルとして幅広く使用されています。

どうやら、強さは素晴らしいです - 強さは素晴らしいです。 不適切に構成された SSH デーモンは、より脅威になり、助けが少なくなる可能性があります。 これらの記事では、SSH のセキュリティを向上させる 5 つの小さな方法を見ることができます。

1. root ログインを有効にします。

最も単純な壷。 明らかに、SSH 経由での root ログインを許可する理由はほとんどありません。 このようなアクセスを含めることは簡単に達成でき、セキュリティを確保できません。

/etc/ssh/sshd_config を知っています (ディストリビューションにない場合は、別のディレクトリでワインを変更することができます)。 新しいものでは、PermitRootLogin フィールドは意味のある意味で "no" に置き換えられています。

PermitRootLogin いいえ

明らかに、サービスを提供するためにシステムをオーバーライドする途中で、著名なコリストゥバッハ、プロテザ・ザイボイ・ペレスコドイの下で誰かを強制的にシステムに侵入させることは不可能です。

書かれていることをすべて読み、それを実行に移した後、サーバー上で認証用のキーを取り除きます。 すべてを変更したら、インタラクティブな紹介を行うことができます。

パスワード認証なし
ChallengeResponseAuthentication いいえ

Python スクリプト管理者の助けを借りて、不注意でログインしたときにホストを自動的にブラックリストに追加し、長時間それらを追放することができます。 インストールする最も簡単な方法:

ヨーロッパ ~ # emerge -pv denyhosts
マージされるパッケージは次のとおりです。
依存関係を計算しています...完了!
app-admin/denyhosts-2.5 0 kB
ダウンロードの合計サイズ: 0 kB
エウロパ ~ # 出現拒否ホスト

プログラムのドキュメントはあまり豊富ではありません (たとえば、たとえば)。通常、すべての構成オプションは構成ファイルに記述されています。

ヨーロッパ $nano -w /etc/denyhosts.conf

DenyHosts 構成が特定の問題を引き起こしたとは思いません。構成を注意深く読んでください。

構成後、スケジューラーを介して chi デーモンでプログラムを実行できます。 Gentoo デーモンの場合:

rc-update add denyhosts デフォルト

cron を使用して、スキン 10 分としましょう:

Python /usr/bin/denyhosts -c /etc/denyhosts.conf

DenyHost のすべての利点は、ホストをブロックすることだけではなく、SSH サーバーにアクセスしようとするだけでなく、「ブラック リスト」を DenyHost サーバーと同期できるホストにもアクセスしようとします。 このようにして、ホストの集合リストが作成され、攻撃者に復讐します。 根っからの攻撃に打ち勝つ。

4. ポート番号を変更します。

SSH デーモンの存在をスキャンする自動スクリプト内の悪意のあるコードをさらにテストします。 vipadkivs の最も重要な数で、悪臭は 22 のポートに侵入しようとしますが、これは私たちの手に渡るだけです。 ポートを変更すると、不正アクセスのサンプルが自動的に増えます。

confizi varto を変更します。

SSH- merezh からのデータの暗号化された送信のセキュリティを確保するように設計された同じプロトコル。 広くvykoristovuєtsyakolіに Linuxリモートサーバーによる監視のための管理者。 インターネットに接続しているサーバーも、サーバーへのアクセスを奪うために SSH サービスによって攻撃されることがよくあります。 管理者の権限を持つ通信者のパスワードの最も広い範囲。 これらの手順では、安全のための基本的な推奨事項を確認します SSH繋がり。

折りたたみパスワードを設定する

サーバーへのパスワードを推測しようとする悪意のある者から、サーバーが攻撃される可能性があります。 SSH、悪意のあるリスクを軽減するために、現在のパラメーターと一致するサーバーのクラウド レコードにパスワードを設定することをお勧めします。

  • 8 文字以上
  • 勝利の大文字と小文字 (AaBb)
  • ヴィコリスト文字 - 数字と記号 ( [メール保護])

強力なパスワードは悪によってのみ保護されるわけではありません SSH protocol, ale th zagalom pokraschit zahist サーバー.

Vykolist SSH キー

サーバーの補遺は、サーバーに接続するためのキーになります SSH、任意の接続のコンピューター/サーバーでキーを生成する必要があります。

ヤククリエイト SSHキーオン Windows OS:

でキーを作成するには Linux次のコマンドを入力します。

ssh-keygen -t rsa

接続先のサーバーにキーをインストールするには、次のコマンドを入力します。

ssh-コピー-id-p 22 [メール保護]

  • -p 22- サーバーポート yakim の動作 SSHプロトコル (変更される可能性があります。詳細は以下を参照)
  • 管理者- サーバーにログイン
  • 192.168.1.1 - サーバーの IP アドレス

すべてが正しく行われていれば、パスワードを入力する必要のないキーでサーバーに接続できるようになります。

非標準ポートを活性化する

標準 SSHサービスがリッスン サーバーで実行されている 22 ポートデータを接続/転送するために、攻撃者は cym を送信し、サーバーに接続するための標準ポートを変更しない人を奪うことができます。 そのために、ポートを変更すると同時に、サーバーの悪へのリスクをもう一度変更しました。

どのビューの構成ファイル SSHサーバー上:

須藤ナノ /etc/ssh/sshd_config

次のようなコメントの新しい行がわかっています。

# ポート 22

目に見えるシンボル # - コメント オプションをクリーンアップして変更するには 22 さあ、数字は増え始めています 11060 そして成長のために、お尻のために私たちは打ちます 11 060 、行は次のようになります。

ポート 11060

設定を保存 " コントロール+エディターを終了します コントロール+バツ".

復活させる必要がある SSHサービス - 新しい調整が行われるように、次のコマンドを取得しました。

sudo サービス sshd 再起動

この順序で、この時間に接続するためのポートを思い出しました-サーバーに接続するには、非標準のポートオプションを指定する必要があります -p 11060 、 例えば:

ssh-p 11060 [メール保護]

coristuvachіvの一部未満へのアクセスを拒否する

SSHたとえば、サーバーには 3 つのクラウド レコードがあるため、接続は最大 4 つのクラウド レコードに制限できます。 管理者 , セルゲイ , アレックス- 一部のユーザーのみリモート接続を許可できます。 構成ファイルを開くのはどれですか SSH:

このファイルでは、矢印で行の残りの部分に移動し、そのような変更を加えて新しいファイルを追加します。

AllowUsers 管理者アレックス

設定を保存 " コントロール+エディターを終了します コントロール+バツ".

サービスのレザバンテージ SSH:

sudo サービス sshd 再起動

Tsim V 自身が kolistuvachs のリモート アクセスを許可しました 管理者і アレックス、その時間にヤク・コリストヴァッハ セルゲイ遠くに接続することはできません。

注意 SSH プロトコル 2

標準を超えて SSHバージョン 1 モードで動作している場合、このバージョンは古くなっているため、サイレントに矛盾がある可能性がありますが、セキュリティを強化するために、ロボットをバージョン 2 モードに切り替えることをお勧めします。どのビューについては、構成ファイルを開きます SSH:

須藤ナノ /etc/ssh/ssh_config

行を見つける:

#プロトコル 2

シンボルを削除 # - コメント オプションを削除して行を埋めるには、次のようにする必要があります。

プロトコル 2

設定を保存 " コントロール+エディターを終了します コントロール+バツ".

サービスのレザバンテージ SSH:

sudo サービス sshd 再起動

空のパスワードを消去

zamovchuvannyam の場合 SSHフェンス サービスはパスワードなしで coristuvachas に接続します。または、サーバーでこのオプションを無効にしている場合は、構成ファイルを開きます。 SSH:

須藤ナノ /etc/ssh/ssh_config

行を見つける PermitEmptyPasswordsとはどういう意味ですか? "番号".

PermitEmptyPasswords いいえ

ハイライトレポートジャーナル

ショブサービス SSH割り当てられた IP アドレスからの最近の接続のログを保持し、構成ファイルを開きます SSH:

須藤ナノ /etc/ssh/ssh_config

行を見つける ログレベルと副 情報いう 詳細、行は次のように vide の罪を犯しています:

ログレベル VERBOSE

ファイルを保存 " コントロール+「そして編集者に会う」 コントロール+バツ".

サービスのレザバンテージ SSH:

sudo サービス sshd 再起動

次のコマンドを入力すると確認できます。

猫 /var/log/secure

システムは、次のような情報を提供してくれました。

6 月 21 日 13:06:28 centos sshd: 118.212.143.47 ポート 48263 ssh2 からの root のパスワードに失敗しました

Tobto for this record mi bachimo, scho bula nevdala は、割り当てられたアドレスからサーバーに侵入しようとします。

尊敬の念のためのDyakuёmo、tsimuのすべて。

© 2022 androidas.ru - Androidに関するすべて