ブルートフォース攻撃を防ぐためのシェルスクリプト設定

ブルートフォース攻撃を防ぐためのシェルスクリプト設定

シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフォースクラッキングを防止します。

ホストがサーバーに対して SSH リモート管理を実行していることが判明し、10 分以内に間違ったパスワードが 3 回入力されると、firewalld を使用して応答し、この IP の再接続を禁止し、6 時間後に再び接続が許可されます。

1. システム: Centos7.1 64 ビット

2. 方法: /var/log/secureを読み込んでキーワードFailedを検​​索する

1月4日 16:29:01 centos7 sshd[1718]: 192.168.120.1 ポート 2171 ssh2 からの root のパスワードに失敗しました
1月4日 16:29:02 centos7 sshd[1718]: pam_succeed_if(sshd:auth): 要件「uid >= 1000」はユーザー「root」によって満たされていません
1月4日 16:29:04 centos7 sshd[1718]: 192.168.120.1 ポート 2171 ssh2 からの root のパスワードに失敗しました
1月4日 16:29:06 centos7 sshd[1718]: エラー: 192.168.120.1 ポート 2171:0 から切断を受信しました: [preauth]
1月4日 16:45:53 centos7 sshd[1758]: 192.168.120.134 ポート 40026 ssh2 からの root のパスワードに失敗しました
3. シェルコード、test.shを作成する
#!bin/bash
#違法なIPアドレスを傍受する
月=$(LANG=C 日付 +"%b")
day=$(LANG=C 日付 +"%e")
now=$(LANG=C 日付 +"%T")
ten=$(LANG=C date -d "10分前" +"%T")

cat /var/log/secure |awk '$1=="'$month'" && $2=='"$day"' && $3>="'$ten'" && $3<="'$now'" { print}' |grep '失敗'|awk -F'from' '{ print $2}' |awk '{ print $1}'|sort |uniq -c > baduser.txt

#計算回数
times=`awk '{ print $1 }' baduser.txt`

#禁止された IP アドレス
シーケンス=1
i を $times で
する
   ip=`sed -n ''$seq'p' baduser.txt |awk '{ print $2}'`
   [ $i -ge 3 ]の場合
   それから
   ファイアウォール-cmd --add-rich-rule='ルール ファミリ=ipv4 送信元アドレス='$ip' ポート ポート=22 プロトコル=tcp 拒否' --timeout=6h
   フィ
seq=`式 $seq + 1`
終わり
4. test.sh スクリプトを cron スケジュール タスクに追加し、60 分ごとに実行します。
# crontab -e
*/60 * * * * sh /root/test.sh

ここに画像の説明を挿入

5. テスト

1. ターミナル ウィンドウを開き、ssh でサーバーに接続し、間違ったパスワードでサーバーに数回接続します。
すぐに、サーバー上のブラックリスト baduser.txt ファイルに次の記録が記録されました。

ここに画像の説明を挿入

IP がサーバーの baduser.txt ファイルに追加され、サーバーに接続できず、拒否されます。

ここに画像の説明を挿入

ssh のブルートフォースクラッキングを防ぐためのシェルスクリプト設定に関するこの記事はこれで終わりです。シェルスクリプトによるブルートフォースクラッキング対策に関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SSH ポート転送とは何ですか?何の役に立つの?
  • sshとは何ですか?使い方は?どのような誤解があるのでしょうか?
  • Linux リモート管理と sshd サービス検証の知識ポイントの詳細な説明
  • Centos8環境でSSHポート番号を変更する方法
  • SSH リモート管理サービス

<<:  Quill エディタでカスタム HTML レコードを挿入する詳細な例

>>:  CSS3で実装された6つの境界遷移効果

推薦する

画像を読み込むための JavaScript キャンバス

この記事では、画像を読み込むためのJavaScriptキャンバスの具体的なコードを参考までに紹介しま...

MySQL で固定されていない位置から文字列要素を抽出する方法

序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

Reactイベントスロットリング効果が失敗する理由と解決策

目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...

Vue3の状態管理の使用方法の詳細な説明

目次背景提供/注入共有状態の抽出データを提供するデータの挿入まとめ反応的な共有状態の抽出共有状態の使...

type="file" の入力ボックスのスタイル変更の概要

入力タイプ「file」とは何ですか?これが何なのかは説明する必要はないと思います。誰もが知っているこ...

CSS 経由で JS にパラメータを渡す方法

1. CSSを通す必要がある背景CSS におけるメディアクエリの用途は、デバイスサイズの判別、マウス...

IEの送信フォームの記録履歴クリックリターン情報を実現するためのCSSスタイルコントロールはまだ残っています

これは主に CSS スタイルのコントロールと META タグです。コードをコピーコードは次のとおりで...

nginx+uwsgi で Django プロジェクトを開始するための詳細な手順

Django で Web プロジェクトを開発する場合、開発およびテストのプロセスでは Django ...

よく使用される MySQL 関数の完全なリスト (分類および要約)

1. 数学関数ABS(x) xの絶対値を返します。 BIN(x) xの2進値を返します(OCTは8...

React Router で履歴リダイレクトを使用する方法

react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...

あなたが知らない Linux KDE アプリケーション 11 選

翻訳Kool Desktop Environment の略称。 Linux、Unix、FreeBSD...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

Docker ベースの GitLab 環境をデプロイする方法と手順

注意:仮想マシンのメモリは2G以上が推奨され、 Alibaba Cloudのアクセラレーションイメー...

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...