Linux CentOS 防止SSH暴力破解

来源:https://www.cnblogs.com/l-hh/archive/2019/07/17/11204251.html
-Advertisement-
Play Games

一. 問題的發現 昨晚苦逼加班完後,今早上班繼續幹活時,SSH連接伺服器發現異常的提示,仔細看了一下嚇一小跳,昨晚9點鐘到現在,一夜之間被人嘗試連接200+,慌~~~ 1. 速度查一下log 發現secure日誌文件咋都這麼大?原來不止是昨晚被攻擊,之前就已經挨無數的暴擊了。 2. 打開日誌文件瞧瞧 ...


一. 問題的發現

昨晚苦逼加班完後,今早上班繼續幹活時,SSH連接伺服器發現異常的提示,仔細看了一下嚇一小跳,昨晚9點鐘到現在,一夜之間被人嘗試連接200+,慌~~~

1. 速度查一下log

[root@zwlbsweb ~]# cd /var/log
[root@zwlbsweb log]# ll -h
-------------------------省略部分信息------------------------------
-rw-------  1 root  root  4.9M Jul 17 10:10 secure
-rw-------  1 root  root   38M Jun 24 03:29 secure-20190624
-rw-------  1 root  root   64M Jun 30 03:10 secure-20190630
-rw-------  1 root  root   46M Jul  7 03:37 secure-20190707
-rw-------  1 root  root   14M Jul 15 03:41 secure-20190715
-------------------------省略部分信息------------------------------

 發現secure日誌文件咋都這麼大?原來不止是昨晚被攻擊,之前就已經挨無數的暴擊了。

2. 打開日誌文件瞧瞧

發現被無數不同的IP地址和不同的用戶進行SSH嘗試連接。

隨便拿個IP地址,百度一下,全是國外的IP地址,太可惡了:

二. 防範辦法

雖然我的密碼很複雜了,但是為了以防萬一,還是速度百度一下,斬草除根

1. 修改 SSH 預設埠

  • 註:修改之前,記得請把對應埠在防火牆添加規則。

i. 修改SSH埠為 2298(這個埠建議使用 1024 以上的)

[root@zwlbsweb ~]# vim /etc/ssh/sshd_config
---------------配置如下----------------
Port 2298

ii. 重啟SSH

[root@zwlbsweb ~]# systemctl restart sshd

iii. 查看埠是否更改

[root@zwlbsweb ~]# netstat -ntlp | grep 2298
tcp    0   0 0.0.0.0:2298   0.0.0.0:*   LISTEN   15156/sshd          
tcp6   0   0 :::2298        :::*        LISTEN   15156/sshd

註:還有個步驟就是“禁止root登錄”,我這裡就不禁止root登錄了,因為密碼太複雜記不住,切換root用戶不方便。

2. 防止 SSH 暴力破解腳本

註:同一個IP地址超過10次的嘗試,就加入/etc/hosts.deny。

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /sshPrevent/black.txt
DEFINE="10"
for i in `cat  /sshPrevent/black.txt`
do
        IP=`echo $i |awk -F= '{print $1}'`
        NUM=`echo $i|awk -F= '{print $2}'`
        if [ $NUM -gt $DEFINE ];
        then
         grep $IP /etc/hosts.deny > /dev/null
          if [ $? -gt 0 ];
          then
          echo "sshd:$IP" >> /etc/hosts.deny
          fi
        fi
done

添加計劃任務:

[root@zwlbsweb ~]# crontab -e
*/5 * * * * /bin/bash /sshPrevent/ssh_pervent.sh
# 每五分鐘檢查一次

# 重啟crontab
[root@zwlbsweb ~]# systemctl restart crond

五分鐘後,查看是否成功:

[root@zwlbsweb ~]# cat /sshPrevent/black.txt 
103.101.232.208=1
103.108.187.4=2
103.248.220.249=15
104.131.93.33=1
104.236.122.193=2
104.236.186.24=2
104.236.246.16=1
104.244.79.33=4
104.248.211.180=2
......
-------------------------------我是分割線----------------------------------
[root@zwlbsweb ~]# cat /etc/hosts.deny
#
# hosts.deny    This file contains access rules which are used to
#        deny connections to network services that either use
#        the tcp_wrappers library or that have been
#        started through a tcp_wrappers-enabled xinetd.
#
#        The rules in this file can also be set up in
#        /etc/hosts.allow with a 'deny' option instead.
#
#        See 'man 5 hosts_options' and 'man 5 hosts_access'
#        for information on rule syntax.
#        See 'man tcpd' for information on tcp_wrappers
#
sshd:103.248.220.249
sshd:104.248.88.106
sshd:106.12.18.37
sshd:106.51.230.186
sshd:106.75.17.91
sshd:112.21.188.183
sshd:112.221.179.133
......

小小的防範措施就到此完成了!

三. 隔一段時間查看效果如何

半天已經過去了,我們再次查看 secure 日誌文件。

SSh連接沒有提示了,日誌也恢復了正常狀態,感謝博友們,收工!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQLite簡易版ORM 首先打開項目,使用nuget搜索sqlite-net,如下圖: 下載完成後,我們會多出兩個文件,SQLite.cs和SQLiteAsync.cs。 我們新建一個文件夾SQLiteResources,把這倆文件放進去。 然後我們創建兩個表實體,如下: 接下來我們創建一個SQL ...
  • 小白開學Asp.Net Core 《八》 — — .Net Core 數據保護組件 1、背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)這個開源項目的時候,想做一些防止惡意攻擊的小功能(如果 我通過頁面 /Dome/GetData?id=123,那是 ...
  • 最近剛好在學習NetCore框架所以就在網上搜索了一下相關的開源框架項目,正好在Github上找到了一個不錯的開源框架所以推薦給大家看看哈哈哈。 1:項目相關技術 運行NetCore SDK版本為2.2+ 資料庫:Mysql 5.7+ 使用SqlSugar ORM 2:項目源代碼地址: github ...
  • 一.概述 本篇詳細瞭解一下asp.net core filters,filter叫"篩選器"也叫"過濾器",是請求處理管道中的特定階段之前或之後運行代碼。filter用於處理橫切關註點。 橫切關註點的示例包括:錯誤處理、緩存、配置、授權和日誌記錄。 filter可以避免重覆代碼,通過Attribut ...
  • 介紹.NET歷史、開源之路、基礎、路由、依賴註入、HttpContext、cookie|session、HttpClient、gRPC、單元測試、發佈部署等等。 ...
  • linux常用命令: echo:在終端輸出字元串或變數提取後的值 date:顯示及設置系統的時間或日期 reboot:重啟 poweroff:關機 wget:下載 ps:查看系統中的進程狀態(常用參數 -aux) top:動態地監視進程活動與系統負載等信息 pidof:查看服務pid kill:終止 ...
  • NFS(網路文件系統)用於linux共用文件 第1步:配置所需要的環境 使用兩台Linux主機 配置好yum源,安裝nfs服務,清空nfs伺服器上iptables防火牆預設策略。 [root@NFS ~]# yum install nfs-utils -y 第2步:在NFS伺服器上建立用於NFS文件 ...
  • 本節為 Docker 的環境搭建 只適合Linux環境,推薦Ubuntu。本例以Ubuntu16.04 x64為例 前提條件 內核版本要求大於3.10 安裝 出現版本號說明安裝成功 設置 當直接使用 時,會發現沒有許可權 設置非root用戶使用docker 1. 添加docker用戶組 2. 將登陸用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...