SSh登錄失敗的日誌查看與攻擊預防


以前由於服務器裏沒有什麼重要的東西,也就一直沒有關注過登錄日誌,剛纔在配置ssh chroot出現錯誤是纔去看的auth.log,記得這個文件就是個登錄日誌,並且我以前偶爾查看時都不多內容,因此就直接cat查看了,誰知道居然是滿屏滿屏的,"Failed password for root XXX.XXX.XXX.XXX",等了將近一分鐘仍然不見底,最後只好Ctrl+c提早結束,而後寫條命令了下,看看究竟有多少個IP在暴利破解個人root:
grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
python

命令很簡單,也就不過多作解釋了,直接看看結果:
4540 86.122.189.166
855 61.1.84.12
576 61.164.145.33
304 184.32.139.224
284 200.195.151.82
222 110.234.129.177
210 200.62.142.142
202 213.152.176.153
202 129.121.32.94
42 122.228.197.134
38 119.161.145.215
30 79.174.68.97
15 82.166.223.235
13 76.28.73.184
1 119.68.246.2
服務器

最多的4000屢次,還行,估計離解出個人密碼還有段距離,但是爲了防範未然,也讓個人auth.log文件能清淨一些,索性就加些防範措施。
至於預防措施到時多種多樣,我這裏說幾種我剛纔嘗試過的,或者嘗試了放棄的
一、修改SSh端口,禁止root登錄
網絡


這個比較簡單,只須要修改/etc/ssh/sshd_config文件就行了
sudo vi /etc/ssh/sshd_config
Port 4484
#這裏就該爲你認爲別人猜不到的端口號
PermitRootLogin no
#這裏改成no即爲禁止root登錄
ssh

最後保存,重啓
sudo /etc/init.d/ssh restart
工具

二、禁用密碼登錄,僅用證書密鑰登錄測試


在客戶端生成密鑰
ssh-keygen -t rsa
spa

把公鑰拷貝至服務器
ssh-copy-id -i .ssh/id_rsa.pub server
.net

也能夠手動將.shh/id_rsa.pub拷貝至服務器用戶目錄的.ssh中,記得修改訪問權限
scp .shh/id_rsa.pub server:~/.ssh
rest

在服務器中
cd ./.ssh/
mv id_rsa.pub authorized_keys
chmod 400 authorized_keys
日誌

最後修改/etc/ssh/sshd_config
RSAAuthentication yes
#RSA認證
PubkeyAuthentication yes
#開啓公鑰驗證
AuthorizedKeysFile    .ssh/authorized_keys
#驗證文件路徑 
PasswordAuthentication no
#禁止密碼認證
PermitEmptyPasswords no
#禁止空密碼
UsePAM no
#禁用PAM

最後保存,重啓
sudo /etc/init.d/ssh restart


三、安裝denyhosts

暴露在網絡上的主機都是有風險的,其中一種風險就是ssh暴力破解攻擊(ssh brute force attack)。

請先看看你的Linux主機的 /var/log/secure 文件的內容,若是你發現裏面記錄有無數條用各類甚至在你的系統中都不存在的用戶名來嘗試登陸你的系統的日誌,那麼你就要小心了,這頗有多是別人在用工具不斷嘗試破解你的登陸賬號。

若是你的密碼不夠複雜,那麼極可能你會遭殃。防範的方法有不少種,這裏介紹一種用第三方軟件來實現防護的方法。

據網上的資源介紹,有下面幾個防護軟件:

sshfilter http://www.csc.liv.ac.uk/~greg/sshdfilter/

Fail2Ban  http://fail2ban.sourceforge.net/

DenyHosts http://denyhosts.sourceforge.net/

 

這幾個軟件我沒有所有接觸過,僅用了DenyHosts。下面就說一下DenyHosts的安裝和使用。

 

 

到這裏去下載:http://sourceforge.net/projects/denyhosts/files/

下載.tar.gz的安裝包就能夠了,安裝很方便。

寫本文的時候,其版本爲2.6(DenyHosts-2.6.tar.gz)。

 

(1)解壓安裝包:

tar zxf DenyHosts-2.6.tar.gz

 

(2)進入解壓出來的目錄下,而後再安裝:

cd DenyHosts-2.6/

python setup.py install

(會輸出一堆信息,不用理會它)

 

(3)爲了能開機自動啓動,在系統中作一個名爲「denyhosts」的符號連接,而後添加到啓動項中:

ln -s /usr/share/denyhosts/daemon-control-dist /etc/init.d/denyhosts

chkconfig --add denyhosts

 

(5)到 /usr/share/denyhosts/ 目錄下,將配置文件denyhosts.cfg-dist複製爲一個新的配置文件——後面會說爲何要這樣作:

cd /usr/share/denyhosts

cp denyhosts.cfg-dist denyhosts.cfg

 

(6)修改配置文件:

vi denyhosts.cfg

配置文件的內容很長,可是咱們沒有必要修改全部的參數,不少都只要使用默認就夠了,可是有一些是必需要改的,部分說明以下:

 

# ssh日誌文件,對RedHat來講,就是這個文件。對其餘系統來講,可能不是該文件,請參考詳細的說明

SECURE_LOG = /var/log/secure

 

# 描述禁止登陸的文件

HOSTS_DENY = /etc/hosts.deny

 

# 當DenyHosts以--purge參數調用時,比這個參數設置的值久的時間的HOSTS_DENY記錄將被刪除(該參數留空的話,表示從不會清除任何HOSTS_DENY記錄)

PURGE_DENY = 

 

# 發生block的狀況時,須要block的服務名

BLOCK_SERVICE  = sshd

 

# 最多容許系統中不存在的用戶登陸失敗多少次

DENY_THRESHOLD_INVALID = 2

 

# 最多容許有效用戶登陸失敗多少次

DENY_THRESHOLD_VALID = 3

 

# 最多容許root登陸失敗多少次

DENY_THRESHOLD_ROOT = 3

 

# 是否作域名反解析

HOSTNAME_LOOKUP=NO

 

# 用來接收報警信息的郵箱

ADMIN_EMAIL = xxx@163.com

 

# smtp服務器地址,當你須要DenyHosts發郵件給你報警的時候,要設置這個參數

SMTP_HOST = smtp.163.com

 

# smtp服務器端口

SMTP_PORT = 25

 

# 登陸郵箱賬戶的用戶名

SMTP_USERNAME=usr

 

# 登陸郵箱賬戶的密碼

SMTP_PASSWORD=pas

 

# 郵件中的發件人信息

SMTP_FROM = DenyHosts <xxx@163.com>

 

# 報警郵件的標題

SMTP_SUBJECT = DenyHosts Report

 

其餘的基本上不用改了。

文章來源:http://www.codelast.com/

(7)啓動服務:

/etc/init.d/denyhosts start

(從輸出的信息來看,這種啓動方法其實是調用了以下的命令:

/usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg

可見,它使用的配置文件是/usr/share/denyhosts/denyhosts.cfg ,這也是爲何咱們在上面的步驟中要把默認的配置文件複製爲一個新的配置文件「denyhosts.cfg」的緣由了。)

 

(8)測試:

從另外一臺服務器上,以一個不存在的用戶名和密碼來ssh登陸部署了的DenyHosts服務器,若是你在DenyHosts的配置文件中設置的是錯誤地嘗試一次就被block,那麼你就會發現你這臺登陸的客戶端服務器被block了。而且,在部署了DenyHosts的服務器上,查看文件/etc/hosts.deny 的內容,會發現多了一條記錄,正是屏蔽了登陸者的那一條記錄,這就說明生效了。

 

文章來源:http://www.codelast.com/

備註:

若是一臺服務器被誤block了,能夠在部署DenyHosts的服務器上,將文件 /etc/hosts.deny 中相應的條目刪掉,再重啓DenyHosts服務(/etc/init.d/denyhosts restart),就能夠解除block了。

相關文章
相關標籤/搜索