Linux 防SSH暴力攻擊

来源:https://www.cnblogs.com/thelovelybugfly/archive/2020/01/17/12205293.html
-Advertisement-
Play Games

在下這幾天發現我的VPS 總是莫名遭受到 江蘇鎮江那邊的IP 登錄請求攻擊 ,跟蹤了下路由,發現ip是從蒙古那邊出去的,然後意識到可能是有掃描埠的。。 方法一: 現在的互聯網非常不安全,很多人沒事就拿一些掃描機掃描ssh埠,然後試圖連接ssh埠進行暴力破解(窮舉掃描),所以建議vps主機的空間 ...


在下這幾天發現我的VPS 總是莫名遭受到 江蘇鎮江那邊的IP 登錄請求攻擊 ,跟蹤了下路由,發現ip是從蒙古那邊出去的,然後意識到可能是有掃描埠的。。

 

方法一:

現在的互聯網非常不安全,很多人沒事就拿一些掃描機掃描ssh埠,然後試圖連接ssh埠進行暴力破解(窮舉掃描),所以建議vps主機的空間,儘量設置複雜的ssh登錄密碼,那麼有什麼更好的辦法來解決這個問題?,就可以使用denyhosts這款軟體了,它會分析/var/log/secure(redhat,Fedora Core)等日誌文件,當發現同一IP在進行多次SSH密碼嘗試時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏蔽該IP的目的。

DenyHosts是一個腳本,旨在由Linux系統管理員運行以幫助阻止SSH伺服器攻擊(也稱為基於字典的攻擊和蠻力攻擊)。

如果你曾經查看過ssh日誌(在Redhat上是/ var / log / secure,在Mandrake上是/var/log/auth.log,等等...),可能會警覺看到有多少黑客試圖訪問您的伺服器。希望他們都沒有成功(但是,話又說回來,你怎麼知道?)。自動阻止攻擊者繼續進入您的系統不是會更好嗎?

安裝腳本 

DenyHosts官方網站為:http://denyhosts.sourceforge.net/

如果使用了 LNMP一件安裝包 佈置的環境,該包自帶該軟體可以一鍵安裝,命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5/tools/ && ./denyhosts.sh 回車確認即可開始安裝配置,不需要下麵的步驟進行安裝配置。(該tools目錄下也有denyhosts相似的工具fail2ban的一鍵安裝工具 ./fail2ban.sh 安裝即可)

1、下載DenyHosts 並解壓

# wget http://soft.vpser.net/security/denyhosts/DenyHosts-2.6.tar.gz
# tar zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6

2、安裝、配置和啟動

安裝前建議執行:echo "" > /var/log/secure && service rsyslog restart 清空以前的日誌並重啟一下rsyslog

# python setup.py install
因為DenyHosts是基於python的,所以要已安裝python,大部分Linux發行版一般都有。預設是安裝到/usr/share/denyhosts/目錄的,進入相應的目錄修改配置文件

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control

預設的設置已經可以適合centos系統環境,你們可以使用vi命令查看一下denyhosts.cfg和daemon-control,裡面有詳細的解釋
接著使用下麵命令啟動denyhosts程式
# chown root daemon-control
# chmod 700 daemon-control
# ./daemon-control start

如果要使DenyHosts每次重起後自動啟動還需做如下設置:
# ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig --level 2345 denyhosts on
或者執行下麵的命令加入開機啟動,將會修改/etc/rc.local文件:
# echo "/usr/share/denyhosts/daemon-control start" >> /etc/rc.local

DenyHosts配置文件/usr/share/denyhosts/denyhosts.cfg說明:

SECURE_LOG = /var/log/secure
#sshd日誌文件,它是根據這個文件來判斷的,不同的操作系統,文件名稍有不同。

HOSTS_DENY = /etc/hosts.deny
#控制用戶登陸的文件

PURGE_DENY = 5m
DAEMON_PURGE = 5m
#過多久後清除已經禁止的IP,如5m(5分鐘)、5h(5小時)、5d(5天)、5w(5周)、1y(一年)

BLOCK_SERVICE  = sshd
#禁止的服務名,可以只限制不允許訪問ssh服務,也可以選擇ALL

DENY_THRESHOLD_INVALID = 5
#允許無效用戶失敗的次數

DENY_THRESHOLD_VALID = 10
#允許普通用戶登陸失敗的次數

DENY_THRESHOLD_ROOT = 5
#允許root登陸失敗的次數

HOSTNAME_LOOKUP=NO
#是否做功能變數名稱反解

DAEMON_LOG = /var/log/denyhosts

為防止自己的IP被屏蔽,可以:echo "你的IP" >>  /usr/share/denyhosts/allowed-hosts 將你的IP加入白名單,再重啟DenyHosts:/etc/init.d/denyhosts ,如果已經被封,需要先按下麵的命令刪除被封IP後再加白名單。

如有IP被誤封,可以執行下麵的命令解封:wget http://soft.vpser.net/security/denyhosts/denyhosts_removeip.sh && bash denyhosts_removeip.sh 要解封的IP

更多的說明請查看自帶的README文本文件,好了以後維護VPS就會省一些心了,但是各位VPSer們註意了安全都是相對的哦,沒有絕對安全,將密碼設置的更Strong,並請定期或不定期的檢查你的VPS主機,而且要定時備份你的數據哦。

與DenyHosts類似的軟體還有fail2ban功能上更多,還可以對ftp進行保護,自己可以搜索看一下。

採用lnmp的 tools 工具包提供的fail2ban 的話, 可以進入到  /etc/init.d/fail2ban   列印 該腳本信息 ,查看腳本配置信息。 

方法二: 

SSH伺服器(sshd)作為Linux上非常重要的服務,安全性是很重要的,首先網上有很多專門的伺服器用來掃描SSH預設的22埠並使用弱口令之類的密碼字典進行暴力破解,雖然可以使用上面所說的 lnmp自帶的denyhosts、fail2ban之類的安裝腳本,但是將預設SSH埠改掉能過濾掉大部分SSH暴力破解的訪問。該教程適合常見的CentOS/Fedora/RedHat、Debian/Ubuntu等常見的Linux發行版。

SSH伺服器的配置文件為:/etc/ssh/sshd_config

具體修改步驟如下:

1、備份原sshd配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

2、修改sshd配置文件

可以使用winscp、nano、vim之類的軟體編輯 /etc/ssh/sshd_config

查找Port 22,有可能 Port 22 是註釋的(即前面有#號,有的話刪掉 # 號)。

在 Port 22 下麵添加一行 Port 3322  其中3322為你更改SSH後的埠。

這裡建議先保留原來的22埠,待新的SSH埠測試正常工作後再刪掉原Port 22 埠行。

修改完成後保存。

3、重啟SSH伺服器

重啟SSH伺服器命令:systemctl restart sshd

如果沒有systemctl的話可以執行:/etc/init.d/sshd restart 或 /etc/init.d/ssh restart

如果沒有報錯的話就生效了,可以 ss -ntl 或 netstat -ntl 查看一下埠。

4、防火牆、安全組規則設置

iptables添加SSH新埠規則:

iptables -A INPUT -p tcp --dport 3322 -j ACCEPT             #3322替換為新的埠#
然後保存iptables規則

firewalld添加SSH新埠規則:

firewall-cmd --permanent --zone=public --add-port=3322/tcp             #3322替換為新的埠#
firewall-cmd --reload             #重載firewalld#

阿裡雲之類的安全組規則添加SSH新埠規則:

阿裡雲之類的有安全組之類設置的雲伺服器一定要在安全組規則里將新埠添加到“入方向”的允許規則。

5、putty、xshell之類的SSH軟體連接測試

添加上新的SSH埠後一定要通過putty、xshell之類的SSH軟體連接測試一下,測試可以正常連接然後再編輯 /etc/ssh/sshd_config 將Port 22 這一行直接刪除或這一行前面加 # 註釋掉,然後再按前面的命令重啟SSHd服務。

 


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

-Advertisement-
Play Games
更多相關文章
  • 本文將介紹如何在.NET Core3環境下使用MVVM框架Prism的使用事件聚合器實現模塊間的通信 一.事件聚合器 在上一篇 ".NET Core 3 WPF MVVM框架 Prism系列之模塊化" 我們留下了一些問題,就是如何處理同模塊不同窗體之間的通信和不同模塊之間不同窗體的通信,Prism提 ...
  • 官方資料:Shell Functions (Bash Reference Manual) 簡介 正如我們在《Bash腳本編程學習筆記06:條件結構體》中最後所說的,我們應該把一些可能反覆執行的代碼塊整合起來,避免反覆編寫使得代碼過於臃腫。 函數正是為瞭解決這個問題而存在的。函數在定義時,可以將常用的 ...
  • 先上目錄 chapter 3 [apue] dup2的正確打開方式 chapter 10 [apue] 等待子進程的那些事兒 chapter 14 [apue] 使用文件記錄鎖無法實現父子進程交互執行同步 chapter 15 [apue] 多進程管道讀寫的一些疑問 [apue] 測試管道容量的一些 ...
  • 在部署環境的時候,有時候會引用到虛擬主機的概念,什麼是虛擬主機呢,博主之前一直把虛擬主機的概念沒搞清楚,導致在部署的時候,一直動不動就404 ,或者500,或者伺服器不通 所以,什麼是虛擬主機呢? 虛擬主機概念大致同虛擬機的概念。 如果你有兩個不同功能變數名稱的網站,但是你只有一臺伺服器,這時候怎麼辦?其實 ...
  • fastdfs在雲伺服器的搭建和配置:https://blog.csdn.net/qq_41592652/article/details/104006289 springboot結構如下: application.properties配置如下: 1 server.port=8080 2 #單個文件最 ...
  • 前段時間寫一個傳遞文件句柄的小 demo,有 server 端、有 client 端,之間通過 Unix Domain Socket 通訊。 在普通模式下,雙方可以正常建立連接,當server端作為daemon啟動時,則第一次啟動成功,之後再啟動, listen 會連接報 ENOTSUPP 錯誤,導 ...
  • 安裝 首先安裝 "Docker" 與 "Docker Compose" 相關的組件,我們這裡直接使用準備好的 "ELK 鏡像" ,執行以下命令從 Dockerhub 上拉取指定版本的鏡像,在本例當中我使用的是 7.40 版本。 配置 為其編寫 文件,內容如下: 上面的 Yaml 文件內容大概意思就是 ...
  • 註意:非root用戶必須要有sudo許可權 一、安裝前的準備 1.查看當前主機是否有docker組 若沒有輸出結果則新建 再次查看,發現已經有了docker組 2.新增擁有sudo許可權的用戶(若知道root和其他擁有sudo許可權的系統用戶密碼,跳到3;若都沒有,必做) 修改該用戶的密碼 為新增的用戶添 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...