﻿# 用 Deny Hosts 保護你的 Linux 伺服器

我在管理 Linux 主機時最常遇到的一個問題就是只要系統一上線，就會開始有人來 try 我的主機，所以我通常把不太對外的 port 用 iptables 設定僅限於特定 IP 可以存取，不過有時後主機必須對外的時候，被 try 的機會就很高了，例如說 SSHD 就是最常被入侵攻擊的服務之一，今天將介紹 [DenyHosts](http://denyhosts.sourceforge.net/) 套件，可有效的幫你阻擋非法的入侵行為。

[DenyHosts](http://denyhosts.sourceforge.net/) 是一支用 python 寫成的 Script，主要目的就是幫助 Linux 系統管理者保護你的 SSH 伺服器，避免被駭客用字典攻擊或暴力攻擊（就是一直用不同的帳號、密碼嘗試登入就是了）。如果你有固定在看你的 /var/log/auth.log （或 /var/log/secure）安全紀錄檔的話，就可以知道有多少人在攻擊或嘗試登入你的主機了。而 [DenyHosts](http://denyhosts.sourceforge.net/) 就是用來分析這個檔案，將非法登入的行為紀錄下來，超過允許的次數後就會將遠端的 IP 寫入到 [/etc/hosts.deny](http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-tcpwrappers-access.html) 檔案裡，直接將該 IP 給封鎖住，讓駭客無法再連線。

[DenyHosts](http://denyhosts.sourceforge.net/) 真的很簡單易用，不像 iptables 要設定許多複雜的 rules，如果你是用 Ubuntu 的話，只要下一行指令就可以完成所有安裝、設定、啟用服務的工作了，如下：

```
apt-get install denyhosts
```

如果你想讓 DenyHosts 偵測到攻擊行為時發一封 Email 通知你的話，你也可以設定 /etc/denyhosts.conf 檔案，並找到 ADMIN\_EMAIL 的地方設定即可。

設定好之後必須要重新啟動 DenyHosts：

```
/etc/init.d/denyhosts restart
```

**相關連結**

-   [DenyHosts](http://denyhosts.sourceforge.net/)
