Ubuntu配置Fail2Ban防止SSH暴力破解與郵件預警

前言

今年以來,Ubuntu 14.04服務器一直被人使用SSH在進行暴力破解眶诈,甚至被進入系統(tǒng),運行了挖礦和不知名的程序瓜饥,所以還是需要配置一下防爆破措施逝撬,本來準備使用iptables來設置的,但是服務器用的人太多了乓土,另外就是還有校外使用VPN的人在使用宪潮,通過搜索溯警,發(fā)現(xiàn)Fail2Ban比較適合我們這種情況。

Fail2Ban

Fail2Ban通過監(jiān)視服務器的系統(tǒng)日志auth.log坎炼,然后匹配日志中的的錯誤信息(正則式匹配)而執(zhí)行相應的屏蔽操作(一般情況下是防火墻)愧膀,而且可以配置發(fā)送e-mail通知系統(tǒng)管理員進行預警!

Fail2Ban谣光,防止暴力破解檩淋,工作原理是通過分析一定時間內(nèi)的相關(guān)服務日志,將滿足動作的相關(guān)IP利用iptables加入到drop(丟棄)列表一定時間萄金。

Fail2Ban 為各種服務提供了許多過濾器蟀悦,如 ssh、apache氧敢、nginx日戈、squid、named孙乖、mysql浙炼、nagios 等。

Fail2Ban 官方網(wǎng)址:http://www.fail2ban.org , github網(wǎng)址: http://github.com/fail2ban/fail2ban

安裝

本來想著源碼安裝的唯袄,但是發(fā)現(xiàn)有一鍵安裝工具腳本弯屈,可以直接通過apt進行安裝,所以就偷懶一下恋拷,工具的github地址:https://github.com/FunctionClub/Fail2ban, 功能齊全资厉,支持 Centos 6/7 Ubuntu 14.04/16.10 Debian 7/8 (x86/x64):

  1. 自助修改SSH端口 (初始是22)
  2. 自定義最高封禁IP的時間(以小時為單位)
  3. 自定義SSH嘗試連接次數(shù) (2-10次)
  4. 一鍵完成SSH防止暴力破解

安裝需要使用root權(quán)限:

su 
wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/fail2ban.sh
bash fail2ban.sh
  1. 第一步選擇是否修改SSH端口。
  2. 第二步輸入最多嘗試輸入SSH連接密碼的次數(shù)蔬顾。(2-10次)
  3. 第三步輸入每個惡意IP的封禁時間(Default: 24h)

選擇好宴偿,等待安裝腳本運行完:

 * Restarting authentication failure monitor fail2ban                                                                                                                [ OK ]
Finish Installing ! Reboot the sshd now !
ssh stop/waiting
ssh start/running, process 15018

Telegram Group: https://t.me/functionclub
Google Puls: https://plus.google.com/communities/113154644036958487268
Github: https://github.com/FunctionClub
QQ Group:277717865
Fail2ban is now runing on this server now!

安裝完成后,如若出現(xiàn)ssh無法連接的情況诀豁,請返回安裝log查看檢查是否修改過ssh端口窄刘,使用修改后的ssh端口進行連接。

Fail2Ban的配置文件:/etc/fail2ban/
Fail2Ban的安裝目錄:/usr/share/fail2ban/
Fail2Ban日志文件:/var/log/fail2ban.log
達到閾值之后的執(zhí)行Fail2Ban的動作的配置文件:/etc/fail2ban/action.d/
包含F(xiàn)ail2Ban所有的過濾規(guī)則:/etc/fail2ban/filter.d/

配置Fail2Ban

因為是一鍵安裝和配置且叁,所以這里介紹一下配置文件:/etc/fail2ban/jail.local

cat /etc/fail2ban/jail.local
#defalut這里是設定全局設置都哭,如果下面的監(jiān)控沒有設置就以全局設置的值設置。
[DEFAULT]
ignoreip = 127.0.0.1 //用于指定哪些地址ip可以忽略 fail2ban 防御,以空格間隔
bantime = 86400 //客戶端主機被禁止的時長(默認單位為秒)
maxretry = 5 //匹配到的密碼輸入次數(shù)閾值
findtime = 1800 //過濾的時長(秒)
destemail = user@seu.edu.cn //接收報警的郵件地址
sender = user@seu.edu.cn //發(fā)送者郵件地址
mta = mail //郵件發(fā)送軟件
protocol = tcp

[ssh-iptables]
enabled = true //是否開啟
filter = sshd //過濾規(guī)則
action = iptables[name=SSH, port=ssh, protocol=tcp] //動作
logpath = /var/log/auth.log //日志文件路徑
maxretry = 5 //匹配到的密碼輸入次數(shù)閾值
findtime = 3600 //過濾的時長(秒)
bantime = 86400 //客戶端主機被禁止的時長(默認單位為秒)

卸載

如若后面不想再使用Fail2Ban逞带,可以腳本卸載:

su
wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/uninstall.sh
bash uninstall.sh

Fail2ban的命令

fail2ban-client

start                             啟動fail2ban server和監(jiān)獄
reload                          重新加載配置文件
stop                              暫停fail2ban和監(jiān)獄
status                          查看運行的監(jiān)控服務數(shù)量和列表
set loglevel                    設置日志等級欺矫,有 CRITICAL, ERROR, WARNING,NOTICE, INFO, DEBUG
get loglevel                    獲取當前日志的等級
set <JAIL> idle on|off        設置某個監(jiān)控(監(jiān)獄)的狀態(tài)。
set <JAIL> addignoreip <IP>   設置某個監(jiān)控(監(jiān)獄)可以忽略的ip
set <JAIL> delignoreip <IP>   刪除某個監(jiān)控(監(jiān)獄)可以忽略的ip
set <JAIL> banip <IP>           將ip加入 監(jiān)控(監(jiān)獄)
set <JAIL> unbanip <IP>       將ip從監(jiān)控(監(jiān)獄)移除

刪除禁止的IP

從 Fail2Ban 中刪除禁止的 IP 地址展氓,請運行以下命令:

fail2ban-client set ssh unbanip XXX.XXX.XXX.XXX

Fail2Ban郵件預警

使用mail發(fā)送郵件穆趴,配置文件末尾添加發(fā)件人的信息。

sudo vi /etc/nail.rc

## Add sendmail settings
set from=USER@seu.edu.cn //發(fā)信人郵箱
set smtp=smtps://smtp.seu.edu.cn:465 //發(fā)信人郵箱的SMTP地址
set smtp-auth-user=USER@seu.edu.cn //發(fā)信人郵箱登陸賬號
set smtp-auth-password=PASSWORD //發(fā)信人郵箱的密碼
set smtp-auth=login     //認證方式
set ssl-verify=ignore //忽略證書警告
set nss-config-dir=/etc/pki/nssdb //證書所在目錄

往Fail2Ban的配置文件中添加郵箱設置:

cat /etc/fail2ban/jail.local
#defalut這里是設定全局設置遇汞,如果下面的監(jiān)控沒有設置就以全局設置的值設置未妹。
[DEFAULT]
ignoreip = 127.0.0.1 //用于指定哪些地址ip可以忽略 fail2ban 防御,以空格間隔
bantime = 86400 //客戶端主機被禁止的時長(默認單位為秒)
maxretry = 5 //匹配到的密碼輸入次數(shù)閾值
findtime = 1800 //過濾的時長(秒)
destemail = u1@seu.edu.cn //接收報警的郵件地址
sender = u2@seu.edu.cn //發(fā)送者郵件地址
mta = mail //郵件發(fā)送軟件
protocol = tcp

[ssh-iptables]
enabled = true //是否開啟
filter = sshd //過濾規(guī)則
action = iptables[name=SSH, port=ssh, protocol=tcp] //動作
## action = mail[name=SSH, dest=u1@seu.edu.cn]
mail-whois[name=SSH, dest=u1@seu.edu.cn, sender=u2@seu.edu.cn] //郵件發(fā)送
logpath = /var/log/auth.log //日志文件路徑
maxretry = 5 //匹配到的密碼輸入次數(shù)閾值
findtime = 3600 //過濾的時長(秒)
bantime = 86400 //客戶端主機被禁止的時長(默認單位為秒)

配置文件中的mail-whois在目錄/etc/fail2ban/action.d/mail-whois.conf簿废,配置如下:

vi /etc/fail2ban/action.d/mail-whois.conf
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
#

[Definition]

# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart = printf %%b "Hi,\n
              The jail <name> has been started successfully.\n
              Regards,\n
              Fail2Ban"|mail -s "[Fail2Ban] <name>: started on `uname -n`" <dest>

# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = printf %%b "Hi,\n
             The jail <name> has been stopped.\n
             Regards,\n
             Fail2Ban"|mail -s "[Fail2Ban] <name>: stopped on `uname -n`" <dest>

# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck =

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban = printf %%b "Hi,\n
            The IP <ip> has just been banned by Fail2Ban after
            <failures> attempts against <name>.\n\n
            Here are more information about <ip>:\n
            `whois <ip>`\n
            `/bin/curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>`\n\n
            Regards,\n
            Fail2Ban"|mail -s "[Fail2Ban] <name>: banned <ip> from `uname -n`" <dest>

# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionunban =

[Init]

# Default name of the chain
#
name = default

# Destination/Addressee of the mail
#
dest = root

通過curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>淘寶的IP查詢獲取攻擊者的一些IP信息。

然后重新載入修改的配置:

sudo fail2ban-client reload

參考

配置mail使用SMTP發(fā)送郵件
Centos7安裝Fail2Ban并利用163郵箱發(fā)送郵件提醒功能
fail2ban的使用以及防暴力破解與郵件預警

                                —— dulunar 后記于 2020.08
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末络它,一起剝皮案震驚了整個濱河市族檬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌化戳,老刑警劉巖单料,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異点楼,居然都是意外死亡扫尖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門掠廓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來换怖,“玉大人,你說我怎么就攤上這事蟀瞧〕了蹋” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵悦污,是天一觀的道長兆览。 經(jīng)常有香客問我,道長塞关,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任子巾,我火速辦了婚禮帆赢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘线梗。我一直安慰自己椰于,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布仪搔。 她就那樣靜靜地躺著瘾婿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烤咧。 梳的紋絲不亂的頭發(fā)上偏陪,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音煮嫌,去河邊找鬼笛谦。 笑死,一個胖子當著我的面吹牛昌阿,可吹牛的內(nèi)容都是我干的饥脑。 我是一名探鬼主播恳邀,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灶轰!你這毒婦竟也來了谣沸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤笋颤,失蹤者是張志新(化名)和其女友劉穎乳附,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椰弊,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡许溅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秉版。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤重。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖清焕,靈堂內(nèi)的尸體忽然破棺而出并蝗,到底是詐尸還是另有隱情,我是刑警寧澤秸妥,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布滚停,位于F島的核電站,受9級特大地震影響粥惧,放射性物質(zhì)發(fā)生泄漏键畴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一突雪、第九天 我趴在偏房一處隱蔽的房頂上張望起惕。 院中可真熱鬧,春花似錦咏删、人聲如沸惹想。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘀粱。三九已至,卻和暖如春辰狡,著一層夾襖步出監(jiān)牢的瞬間锋叨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工宛篇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悲柱,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓些己,卻偏偏與公主長得像豌鸡,于是被迫代替她去往敵國和親嘿般。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350