網頁

2015年1月13日

使用fail2ban 防止暴力攻擊法

暴力攻擊法(brute-force attack)這是一種在網路上相當常見的攻擊方式,這一種攻擊方式雖然沒有很複雜的演算法但是在長時間的運作下還是相當有效,因此這樣的攻擊方式還是存在目前的網路環境中,而且拜現在電腦運算速度越來越快之賜,暴力攻擊的效益也是逐漸提升,只需要一架個人的PC 就可以扮演攻擊的計算主機,也因爲需要的設備不用很高階,讓這樣的攻擊方式在網路上到處流竄,隨機的攻擊在網路上開放的伺服器,因此當伺服器主機在防禦系統有漏洞的時候,就很容易變成下一個受害伺服器。
===暴力攻擊法防範方式===
要防範一個攻擊就要先分析中他的攻擊模式,而暴力攻擊法整個主軸就是不斷的嘗試連線到試出帳號密碼,所以整個防禦的重點就是不要讓攻擊方可以有足夠的時間試出帳號密碼,因此在防禦的方式有幾個重點。
.高複雜度密碼
不可以用太過簡單的密碼組合或是與個人資訊有相關的設定,因爲既然是用猜的往往就是會先從比較容易的組合下手,因此太過簡單很有可能在很前面就被攻擊軟體給破解了,那後面說的限制嘗試次數,封鎖IP 都不用講了,因爲根本用不到,所以密碼的長度不可以太短,最好是文數字的組合,讓嘗試的次數超過限制。
.限制嘗試次數
設定好了一個高複雜的密碼了也不是萬無一失,因爲再長的密碼也是有破解的一天,所以要限制嘗試連線失敗的次數,當嘗試連線失敗達到次數上限就不再讓連線來源再作嘗試,這一個作法常見於網路銀行的系統,當你嘗試錯誤到達網路銀行的上限就會被封鎖而不可以繼續嘗試密碼。
.阻擋多次嘗試的來源
這一個方式是很多防禦軟體會使用的作法,當發生暴力攻擊的時候都會由一個來源IP 不斷的對主機作嘗試連線的操作,要中止攻擊持續發生的方式就是將來源IP 進行封鎖,不讓他可以繼續嘗試主機的帳號密碼。
.避免太過明確的錯誤訊息
當你到一個不會常登入的網站的時候你會忘記當初你所註冊的帳號密碼,而你在嘗試的時候系統都只會告訴你輸入錯誤而已,並不會告訴你是帳號錯或者是密碼輸入錯誤,就是爲了要防止有心人士利用錯誤資訊去嘗試出你的帳號密碼,而這樣的設計也是防禦暴力攻擊的方式之一。
===下載fail2ban 方式===
用在防禦暴力攻擊法的軟體很多,今天跟大家分享防禦暴力攻擊法的軟體是file2ban,這一套軟體是提供免費下載的,所以請大家安心使用。
下載的方式有兩種:可以使用原廠的安裝程式或是用yum 安裝,兩個方法都很簡單,向各位說明安裝的方式。
先說比較簡單的安裝方式就是用yum 安裝。
1. 修改yum 下載的設定檔 [root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
2. 再將載點的設定資訊貼在檔案的最末端。
[atrpms]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
3. 完成後執行[root@localhost ~]# yum -y install fail2ban 開始下載安裝。
以上是使用yum 的安裝方式,也可以到官方網站下載安裝的程式完成安裝.
1. 前往fail2ban 的官網 http://www.fail2ban.org/wiki/index.php/Main_Page
2. 進到官方網站後在右下角有提供程式下載的連結,請先前往這一連結位置。
3. 進入到Downloads 頁面,有很多說明資料不重要,請你找到  fail2ban Downloads on github 的連結點選進去,就是在圖中用紅框標記出來的地方。
4. 進去之後就可以看到程式下載的連結,有分爲下載.zip 檔或是下載.tar.gz 檔,我是沒有下過.zip不知道有沒有不一樣,我是下載.tar.gz 在Linux 系統中使用,建議下載.tar.gz 檔,就是紅框標示的位置。
5. 下載得到一個 fail2ban-fail2ban-0.8.5-15-ged6daa7.tar.gz
6. 解壓縮這一個檔案[root@localhost ~]# tar -xzvf fail2ban-fail2ban-0.8.5-15-ged6daa7.tar.gz,完成解壓縮之後產生fail2ban-fail2ban-ed6daa7 資料夾。
7. 在fail2ban-fail2ban-ed6daa7資料中有一個叫setup.py 的檔案,執行./setup.py 就可以進行安裝。
===fail2ban設定===
完成fail2ban 的安裝之後在/etc/ 下會產生fail2ban 的資料夾,這當中包含了整個fail2ban 的設定資訊,其中包含設定封鎖規則的設定檔jail.conf,當中可以設定防禦的服務有很多,但是在設定上的規則大致相同,我們就用預設的SSH 規則當作範例說明。
1. 開啓檔案設定阻擋規則 [root@localhost ~]# vi /etc/fail2ban/jail.conf
2. 找到設定標籤 [ssh-iptables] 當中設定的內容就是SSH 協定的阻擋規則。
[ssh-iptables]
enabled  = true #規則是否啓用[true, false]
filter   = sshd #要作過濾的服務
action   = iptables[name=SSH, port=ssh, protocol=tcp] #iptables 的設定
           sendmail-whois[name=SSH, dest=service@superfunction.net, sender=root@10.0.204.5] #事件通知郵件
logpath  = /var/log/secure #掃描的記錄檔
maxretry = 5 #最大可以嘗試次數
bantime  = -1 #封鎖後重新開放的時間,-1 表示永久封鎖
===fail2ban服務啓動與相關檢查===
1. 完成設定後開啓fail2ban 的服務。
[root@localhost ~]# service fail2ban start
Starting fail2ban:                                         [  OK  ]
2. 確認服務在運作中。
[root@localhost ~]# service fail2ban status
Fail2ban (pid 1195) is running...
Status
|- Number of jail:    1
`- Jail list:        ssh-iptables
3. 檢查iptables 規則,使用iptables -L -n 會出現目前的iptables 設定規則,請檢查在規則中有出現以下兩個fail2ban 新增加的iptables 規則。
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0             
略.....

Chain fail2ban-SSH (1 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
===模擬暴力攻擊===
在模擬攻擊發生前先確認目前是沒有封鎖規則的狀態,使用fail2ban-client status ssh-iptables 確認沒有被封鎖的IP。
[root@localhost ~]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- filter
|  |- File list:    /var/log/secure
|  |- Currently failed:    0
|  `- Total failed:    0
`- action
   |- Currently banned:    0
   |  `- IP list:  
   `- Total banned:    0
現在可以使用遠端連線軟體模擬暴力攻擊的情景,用pietty 連線到安裝有fail2ban 的主機,嘗試輸入錯誤的密碼到所設定的上限次數,就會被拒絕繼續嘗試連線。
在模擬暴力攻擊發生後再列出一次封鎖的清單就會出現嘗試連線超過限制次數的來源IP,而這一個IP 就已經遭到封鎖無法再嘗試連線主機。
[root@localhost ~]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- filter
|  |- File list:    /var/log/secure
|  |- Currently failed:    0
|  `- Total failed:    5
`- action
   |- Currently banned:    1
   |  `- IP list:    10.0.200.171
   `- Total banned:    1
===結論===
系統安全維護一直是很重要的課題,而且也是一個永無止境的拉鋸戰,而防止暴力攻擊只是在網路上諸多攻擊的一種,系統安全的維護還是要依賴日常的檢查與異常的監控,在此分享fail2ban 軟體強化主機安全。
文 by Superfunction
2011-10-31 20:19:35

沒有留言:

張貼留言