中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

面對SSH暴力破解,給你支個招

發布時間:2020-08-02 23:26:52 來源:網絡 閱讀:854 作者:OpenInfra 欄目:云計算

在最近一次云上線的過程中,頻繁遇到綁定公網浮動IP的云主機遭受外界SSH暴力破解***及用戶設置弱密碼的問題,由此引發的安全問題引起了針對防御SSH暴力破解的思考。

SSH暴力破解

hydra 和medusa是世界頂級密碼暴力破解工具,支持幾乎所有協議的在線密碼破解,功能強大,密碼能否被破解關鍵取決于破解字典是否足夠強大。在網絡安全***過程中,hydra 和medusa是必備的測試工具,配合社工庫進行社會工程學***,有時會獲得意想不到的效果。圖示兩款工具使用密碼字典窮舉SSH密碼的過程。

面對SSH暴力破解,給你支個招

iptables限制ssh訪問頻率

面對暴力破解,根據其工作原理可知:降低其試錯頻率,提高其試錯次數,從而將破解時間提高到不可容忍的程度,是一條有效的防范手段。

提高***方試錯次數,無非是提升密碼長度,擴展密碼復雜度,定期更換密碼這些手段。而降低***方的試錯頻率其實也是一條值得一試的防御手段。

通過調用iptables的state模塊與recent模塊,實現對SSH訪問的頻率限制。這里重點解釋下不常用的recent擴展模塊。

recent模塊

Recent,該擴展能夠動態的創建IP地址列表,用于后期以多種不同形式做出匹配。該擴展支持以下多種選項:

面對SSH暴力破解,給你支個招

iptables規則內容

要實現對SSH訪問頻率的控制,iptables規則如下兩條:

#若是SSH訪問,源IP在最近訪問列表中,且60秒內訪問次數大于等于3次,則丟棄。??? ? ??

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH_RECENT --rcheck --seconds 60 --hitcount 3 -j DROP?

#若是SSH訪問,則將源IP加入最近訪問列表中。? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH_RECENT –set??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

實現效果

實現效果如下圖所示。高頻率的密碼試錯將被終結,直至一分鐘超時后才可重新開始。

面對SSH暴力破解,給你支個招

在/proc/net/xt_recent目錄中,存在名為SSH_RECENT的一個日志文件。文件中記錄了上面輸入的iptables規則記錄的最近訪問SSH服務的源IP信息以及訪問時間。其中默認記錄的oldest_pkt是20個,可以通過modprobe ipt_recent ip_pkt_list_tot=50調大。默認記錄的源IP是100個,可以通過modprobe ipt_recent ip_list_tot=1024 擴大記錄數量。

面對SSH暴力破解,給你支個招

iptables實現遠程開啟ssh功能

任何一次靠譜的網絡***都起步于網絡偵查。如果***者在網絡偵查階段未發現目標開啟SSH登錄服務,這也將挫敗其針對SSH發起***的計劃。這里常用的操作都是更改SSH的默認22端口至其他端口號上以迷惑端口掃描軟件。實際通過nmap等工具還是可以掃描到端口上捆綁的具體服務,如下圖所示。這里通過一個取巧的辦法,利用指定報文長度的ICMP作為鑰匙,開啟主機上的SSH服務。通過這種方式隱藏SSH服務端口。

面對SSH暴力破解,給你支個招

iptables規則內容

以指定包長的ICMP報文,作為鑰匙,開啟對端的SSH服務。具體iptables規則如下所示。

#用78字節的icmp數據包作為鑰匙(包含IP頭部20字節,ICMP頭部8字節),將源IP加入SSH白名單??? ? ? ? iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --name SSH_ALLOW --set -j ACCEPT? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

#檢查訪問SSH服務的源IP是否在白名單中,且白名單中的IP有效期為15秒。若在白名單中則放行通訊。?

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH_ALLOW? --rcheck --seconds 15 -j ACCEPT??

#對于已建立的SSH連接放行? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

#其他SSH無關匹配全部拒止??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

iptables -A INPUT -p tcp --dport 22 -j DROP

實現效果

最終可以實現下圖所示效果。在未使用指定包長ICMP之前,SSH服務無法通行(步驟1)。在使用指定包長ping之后(步驟2),使用SSH可以正常連接(步驟3)。以此實現了指定包長ICMP作為鑰匙開啟SSH通信服務的效果。其原理與上節限制SSH通信頻率的原理一致。

面對SSH暴力破解,給你支個招

Fail2ban防止SSH暴力破解

安裝:

Centos上可以直接通過yum install fail2ban –y安裝。安裝完成后,可在/etc/fail2ban路徑下找到程序運行的相應文件。在filter.d目錄下存放有fail2ban支持的所有過濾器,action.d目錄下存放有fail2ban支持的所有動作。通過在jail配置文件中組合多種過濾器與動作,可以實現各種自定義的防御功能(不僅限于SSH防護)。

配置及運行:

對于fail2ban而言,每個.conf配置文件都可以被同名的.local文件重寫。程序先讀取.conf文件,然后讀取.local文件。.local中的配置優先級更高。通過新建jail.local,增加下述配置,運行fail2ban-client start來實現對SSH暴力破解的防御。

[DEFAULT]

#白名單

ignoreip = 127.0.0.1/8

#解封禁時間

bantime? = 600

#試錯窗口時間

findtime? = 600

#容許試錯次數

maxretry = 3

[ssh-iptables]

#使能

enabled = true

#選擇過濾器

filter = sshd

#選擇防御動作

action = iptables[name=SSH, port=ssh, protocol=tcp]

#郵件通知

sendmail-whois[name=SSH,dest=yang.hongyu@99cloud.net, sender=test@email.com]

#SSH日志路徑

logpath = /var/log/secure

#容許試錯次數(優先級比default高)

maxretry = 1

運行效果:

通過對目標主機的SSH試錯,/var/log/secure日志中記錄了SSH登錄的錯誤信息。fail2ban通過對該文件的分析,識別出當前正在遭遇到SSH的暴力破解,繼而觸發防御功能。fail2ban-client status命令可以查看當前fail2ban的運行狀態,遭遇SSH暴力破解后,識別到的***IP被添加至Banned IP list中,實際阻斷功能則是fail2ban通過在iptables中下發針對***IP的阻斷規則來實現。

面對SSH暴力破解,給你支個招

Denyhost防止SSH暴力破解

Denyhost工作原理與Fail2ban基本一致,同樣是分析SSH的日志文件,定位重復的暴力破解IP。與Fail2ban通過寫iptables規則阻斷***IP的訪問不同,Denyhost通過將***IP記錄到hosts.deny文件來實現屏蔽***IP對SSH的訪問。

Denyhost安裝:

wget "downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz"

tar -xzf DenyHosts-2.6.tar.gz?

cd DenyHosts-2.6

python setup.py install

Denyhost配置及運行:

#生成配置文件副本

cd /usr/share/denyhosts/

#生成配置文件副本

cp denyhosts.cfg-dist denyhosts.cfg

#生成執行文件副本

cp daemon-control-dist daemon-control?

chmod 700 daemon-control?

#自定義配置文件denyhosts.cfg

#SSH log路徑

SECURE_LOG = /var/log/secure

#存儲SSH拒止host信息的配置文件路徑

HOSTS_DENY = /etc/hosts.deny

#拒止時間,此處配置為10分鐘

PURGE_DENY = 10m

#無效用戶登錄重試次數限制

DENY_THRESHOLD_INVALID = 5

#有效用戶登錄重試次數限制

DENY_THRESHOLD_VALID = 10

#ROOT用戶登錄重試次數限制

DENY_THRESHOLD_ROOT = 1

#啟動運行

./daemon-control start

Denyhost效果:

從Denyhost的運行日志中看出,對目標主機的多次SSH密碼試錯觸發了Denyhost的防御功能。***者的IP被添加至hosts.deny文件,該IP下的SSH訪問也被拒止。

?
面對SSH暴力破解,給你支個招

面對SSH暴力破解,給你支個招

網絡安全,何來一招鮮

可能有些人要說使用密鑰登錄就能完美解決SSH暴力破解的問題。這里要說一段歷史。2006年Debian Linux發行版中發生了一件有意思的事,軟件自動分析工具發現了一行被開發人員注釋掉的代碼。這行被注釋掉的代碼用來確保創建SSH秘密鑰的信息量足夠大。該代碼被注釋后,密鑰空間大小的熵值降低到215。這意味著不論哪種算法和密鑰長度,最終生成的密鑰一共只有32767個,復雜度比一個純6位數字的密碼的復雜度更差。該錯誤在兩年之后才被發現,無疑相當多的服務器上都利用這這種存在缺陷的弱密鑰。(引用自:Violent Python:A Cookbook for Hackers)

網絡安全沒有一招鮮。前文中列舉的四種安全加固方式也無法抵御運維人員設置的弱密碼,及***者的社工密碼庫。運維人員,唯有提高自身安全意識,合理利用安全工具,才能保障網絡安全。

最后說一句:道路千萬條,安全第一條。操作不規范,運維兩行淚。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽阳市| 久治县| 炎陵县| 仁布县| 安塞县| 辽阳县| 特克斯县| 鹿邑县| 保德县| 司法| 新郑市| 石嘴山市| 伊川县| 庄浪县| 五常市| 武鸣县| 正宁县| 格尔木市| 灯塔市| 泗阳县| 涟源市| 隆安县| 东阿县| 山东省| 舞钢市| 义乌市| 屏东县| 珠海市| 北票市| 门源| 民勤县| 惠来县| 威海市| 富蕴县| 紫阳县| 舟山市| 六枝特区| 启东市| 金塔县| 伊金霍洛旗| 安仁县|