方法有很多種,這裡介紹兩種。
(1).配置安全的shhd設定
不允許root使用者直接登入到系統,新增乙個普通使用者,必要時再切換到root使用者。
修改預設埠號。
不允許密碼登入,只能通過金鑰登入系統。
root使用者的密碼足夠複雜,足夠長,可以包含大小寫字母、數字和特殊符號。
sshd配置資訊詳見:簡單了解sshd_config配置檔案。
sshd金鑰登入詳見:centos7做ssh免密登入。
(2).使用fail2ban來防護
1)確認python的版本必須大於2.4
[root@youxi1 ~]# python -vpython 2.7.5
2)要有epel擴充套件源
[root@youxi1 ~]# yum list installed | grep epel-releaseepel-release.noarch 7-11 @extras
3)yum安裝fail2ban
[root@youxi1 ~]# yum -y install fail2ban
4)修改配置檔案
說明:fail2ban的配置檔案儲存在/etc/fail2ban/目錄下,其中主要的有action.d資料夾、fail2ban.conf檔案與file2ban.d資料夾、filter.d資料夾、jail.conf和jail.d資料夾。action.d資料夾是動作資料夾,內含iptables和mail等動作配置。fail2ban.conf檔案和fail2ban.d資料夾定義了日誌級別、日誌位置和sock檔案位置。filter.d資料夾是過濾條件資料夾。jail.conf檔案和jail.d資料夾是主要配置檔案以及模組化。
[root@youxi1 ~]# ls /etc/fail2ban/action.d filter.d paths-common.conf paths-freebsd.conf
fail2ban.conf jail.conf paths-debian.conf paths-opensuse.conf
fail2ban.d jail.d paths-fedora.conf paths-osx.conf
主要修改的就是/etc/fail2ban/jail.conf檔案。這個配置檔案中有許多模組,針對sshd服務需要修改的是[sshd]模組。初始的[sshd]模組只有三行:
port = sshlogpath = %(sshd_log)s
backend = %(sshd_backend)s
在[sshd]模組中新增如下行:
//啟用sshd模組enabled = true
//過濾條件,sshd是過濾條件,對應filter.d資料夾下的sshd.conf檔案
filter = sshd
//動作,iptables是動作,對應action.d資料夾下的iptables.conf檔案,並傳遞三個引數。如果ssh埠不是22,那麼prot的值等於實際的埠號
action = iptables[name=ssh,prot=ssh,protocol=tcp]
//sendmail-whois是第二個動作,對應action.d資料夾下的sendmail-whois.conf檔案,並傳遞四個引數
//dest是接收郵箱,sender是傳送郵箱,sendername是郵件標題
sendmail-whois[name=ssh,[email protected],[email protected],sendername="fail2ban"]
//日誌檔案位址
logpath = /var/log/secure
//禁止時間1小時
bantime = 3600
//指定規定時間為3分鐘
findtime = 180
//規定時間內最大嘗試次數
maxretry = 3
5)啟動fail2ban並設定開機自啟
[root@youxi1 ~]# systemctl start fail2ban[root@youxi1 ~]# systemctl enable fail2ban
created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.
[root@youxi1 ~]# systemctl status fail2ban
● fail2ban.service - fail2ban service
loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
active: active (running) since 二 2019-05-14 15:59:01 cst; 28s ago
docs: man:fail2ban(1)
main pid: 12128 (fail2ban-server)
cgroup: /system.slice/fail2ban.service
└─12128 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/f...
5月 14 15:59:01 youxi1 systemd[1]: starting fail2ban service...
5月 14 15:59:01 youxi1 fail2ban-client[12125]: 2019-05-14 15:59:01,718 fail...7
5月 14 15:59:01 youxi1 fail2ban-client[12125]: 2019-05-14 15:59:01,719 fail...e
5月 14 15:59:01 youxi1 systemd[1]: started fail2ban service.
hint: some lines were ellipsized, use -l to show in full.
6)測試
連續輸錯密碼3次
[root@youxi2 ~]# ssh 192.168.5.101the authenticity of host '192.168.5.101 (192.168.5.101)' can't be established.
ecdsa key fingerprint is sha256:l8mum3o4x+apo/ulw0vovdhd0yltanvqeiulquuh0ay.
ecdsa key fingerprint is md5:d2:4f:03:4d:34:67:2c:93:a6:29:ae:f3:cd:23:cf:de.
are you sure you want to continue connecting (yes/no)? yes
warning: permanently added '192.168.5.101' (ecdsa) to the list of known hosts.
[email protected]'s password:
permission denied, please try again.
[email protected]'s password:
permission denied, please try again.
[email protected]'s password:
^c[root@youxi2 ~]# ssh 192.168.5.101
ssh: connect to host 192.168.5.101 port 22: connection refused
另外在本地也可以使用iptables -nl檢視被禁止的ip位址
chain f2b-ssh (1 references)target prot opt source destination
reject all -- 192.168.5.102 0.0.0.0/0 reject-with icmp-port-unreachable
return all -- 0.0.0.0/0 0.0.0.0/0
也可以使用fail2ban-client status檢視。
7)將被禁止的ip位址從黑名單中移除
有可能手誤被加到黑名單中了,但總不能等一小時吧。所以可以使用一下命令移除黑名單
[root@youxi1 fail2ban]# fail2ban-client set sshd unbanip 192.168.5.102 //sshd對應的jail.conf中的模組名192.168.5.102
fail2ban-client詳細用法請看幫助說明
8)注意
iptables重啟,那麼fail2ban也需要重啟。
修改埠,fail2ban的jail.conf中[sshd]模組,iptables動作傳遞的port引數也需要修改,最後重啟。
SSHD 服務防止暴力破解總結
openssh配置檔案 openssh常用配置檔案有兩個 etc ssh ssh config和 etc sshd config ssh config 為客戶端配置檔案 sshd config 為伺服器端配置檔案 服務啟動和關閉指令碼 root xuegodssh service sshd rest...
Fail2防止sshd暴力破解
簡介 fail2ban是一款實用軟體,可以監視你的系統日誌,然後匹配日誌的錯誤資訊 正則式匹配 執行相應的遮蔽動作。支援大量服務。如sshd,apache,qmail,proftpd,sasl等等 3 在logpath選項中支援萬用字元 4 需要gamin支援 注 gamin是用於監視檔案和目錄是否...
防止SSH暴力破解
我的伺服器每天都會有無數的ssh失敗嘗試記錄,有些無聊的人一直不停的掃瞄,這些人真夠無聊的,沒事吃飽了撐著,老找些軟體在那裡窮舉掃瞄,所以大家第一要記的設定乙個好的夠複雜的密碼。怎麼樣防,如果要一條一條將這些ip阻止顯然治標不治本,還好有denyhosts軟體來代替我們手搞定他。denyhosts是...