前言
這里我是用的兩台centos7做的練習,一台騰訊雲,一台阿里雲
首先需要一個郵箱,這里我們去163郵箱申請的一個:https://mail.163.com/register/index.htm?from=163mail
觀看該博文前建議閱讀一下fail2ban防ssh爆破(不看也影響不大):https://www.cnblogs.com/sillage/p/13966485.html
這里我試驗的場景就是在遭受ssh爆破的時候,嘗試次數達到設置的數值后,ban掉該ip並且發送郵件提醒
教程
配置mail.rc文件
配置好該文件,可實現linux快速發郵件
由於服務器無法訪問到smtp.163.com 的25端口,所以只能使用465的ssl協議來發送郵件了,對mail.rc做好備份后(小提示:任何你不熟悉的文件進行配置之前建議做一個備份),進行修改:
cp /etc/mail.rc /etc/mail.rc.bak
vim /etc/mail.rc
配置如下:
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set from=郵件地址@163.com
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=郵件地址@163.com
set smtp-auth-password=授權碼
set smtp-auth=login
注:smtp-auth-password不是填寫郵箱密碼,而是郵箱的授權碼,你可以理解為斗羅中的教皇令,教皇令代表着教皇,這個授權碼也代表密碼,可以用來登陸
發郵件測試:
echo "郵件內容".|mail -v -s "郵件標題" XXX@qq.com
如果收到郵件則說明配置無誤。
配置sshd.local
進入/etc/fail2ban/jail.d/目錄直接新建一個sshd.local:
cd /etc/fail2ban/jail.d/
vim sshd.local
添加以下內容:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 300 //默認單位為秒,d為天數,365d為365天
findtime = 60 //三百秒內重試次數超過3次觸發jail,刪除該選項,則變為無論什么時候重試次數超過三次觸發jail
maxretry = 3 //最大嘗試次數
backend = systemd
destemail = 接收報警的郵件地址
sender = 發送者郵件地址
mta = mail
protocol = tcp
action = %(action_mw)s
[sshd]
enabled = true
port = ssh端口,根據情況修改
logpath = %(sshd_log)s
backend = %(sshd_backend)s
- 注:如果同時存在/etc/fail2ban/jail.local和/etc/fail2ban/jail.d/sshd.local文件,關於對ssh的約束,后者的優先級是高於前者的
配置mail-whois.local
當你完成以上配置的時候,重啟fail2ban服務就已經能收到郵件提示該服務已經啟動了,如下圖(如果你沒看到郵件提示,請看下面總結的第三條):
systemctl restart fail2ban
我們把要配置的mail-whois.conf復制並改名為mail-whois.local
cp /etc/fail2ban/action.d/mail-whois.conf /etc/fail2ban/action.d/mail-whois.local
然后再修改mail-whois.local文件,達到我們想要的郵件的格式和內容
其實到這里教程也就基本結束了,該配置文件可根據自身需要自行修改,可參考下面這篇帖子。
本博文部分內容參考自:封塵網
最終效果圖
折騰了以晚上以及一大上午,終於把這個給實現了,來看一下效果圖(注:這是未修改mail-whois.local的郵件樣式):
總結
- 先檢查是否可以發送郵件,
echo "郵件內容".|mail -v -s "郵件標題" XXX@qq.com
- 如果postfix服務有問題,
vi /etc/postfix/main.cf
,inet_interface=localhost,localhost改為all試試,然后重啟postfix - 經過我開虛擬機再次實驗進行對比后發現,最重要的是要設置setenforce 0
致謝
昨晚熬夜一小時還是沒把這個郵件弄好,感覺自己有點廢,感覺配置都是對的,但是又總是不能自動發郵件
最后感謝封塵網前輩的幫助,先是郵件的互動,后是加了qq指導我