Linux 防SSH暴力攻擊

在下這幾天發現個人VPS 老是莫名遭受到 江蘇鎮江那邊的IP 登陸請求攻擊 ,跟蹤了下路由,發現ip是從蒙古那邊出去的,而後意識到多是有掃描端口的。。python

 

方法一:

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

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

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

安裝腳本 安全

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

若是使用了 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 安裝便可)服務器

一、下載DenyHosts 並解壓ssh

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

二、安裝、配置和啓動工具

安裝前建議執行: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

具體修改步驟以下:

一、備份原sshd配置文件

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

二、修改sshd配置文件

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

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

在 Port 22 下面添加一行 Port 3322  其中3322爲你更改SSH後的端口。

這裏建議先保留原來的22端口,待新的SSH端口測試正常工做後再刪掉原Port 22 端口行。

修改完成後保存。

三、重啓SSH服務器

重啓SSH服務器命令:systemctl restart sshd

若是沒有systemctl的話能夠執行:/etc/init.d/sshd restart 或 /etc/init.d/ssh restart

若是沒有報錯的話就生效了,能夠 ss -ntl 或 netstat -ntl 查看一下端口。

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

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新端口規則:

阿里雲之類的有安全組之類設置的雲服務器必定要在安全組規則裏將新端口添加到「入方向」的容許規則。

五、putty、xshell之類的SSH軟件鏈接測試

添加上新的SSH端口後必定要經過putty、xshell之類的SSH軟件鏈接測試一下,測試能夠正常鏈接而後再編輯 /etc/ssh/sshd_config 將Port 22 這一行直接刪除或這一行前面加 # 註釋掉,而後再按前面的命令重啓SSHd服務。

相關文章
相關標籤/搜索