在下這幾天發現我的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服務,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/141633.html
標籤:Linux
