Linux Root Login Auto Send WarningEmail To Self

一般我们使用Root或者普通用户登录Linux Server的时候,是不会收到Email告警的,一旦Root或者普通用户的密码被破解或者泄露出去的话,很不安全,这个时候如果设置个使用Root或者普通用户登录的时候自动发送Email告警到自己邮箱的话,那我们就能及时知道服务器有人登录,如果不是自己人登陆的话,我们就能及时的修改密码。
一般Linux系统会自带PossFix这个mail软体,阿里云的服务器有postfix和mailx,我们只需要做个简单配置就行了
首先先在 /etc/mail.rc配置SMTP参数

1
2
3
4
5
6
7
8
9
10
set from=xxxxxxxxx@xx.xxx             //自己的email邮箱地址  
set smtp=smtps://smtp.qq.com //这里是SMTP地址
//smtp.qq.com可以替换为smtp.163.com,但是smtps://不能变
//由于阿里云屏蔽了25口,所以我们只能用465端口
set smtp-auth-user=xxxxxxxxx@xx.xxx //这里还是填自己的Email邮箱地址,跟第一条一样
set smtp-auth-password=xxxxxxxxxxxx //这里填QQ邮箱的授权码
set smtp-auth=login //这里是固定的,作用是登陆
set ssl-verify=ignore //SSL验证要忽略掉
set nss-config-dir=/root/.certs //这里是填写本地smtps://的SSL证书
然后保存退出

1
因为需要QQ邮箱的SSL证书(163也是),所以我们还需要手动的获取QQ邮箱的证书保存到本地指定的目录里以备调用和验证,具体命令如下:

1
2
3
4
5
6
mkdir -p /root/.certs
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
如果是163的话,要把qq.crt改成163.crt,smtp.qq.com:465改成smtp.163.com:465

为了防止报下面这个错误,我们需要进入/root/.certs里面写一条命令

1
2
3
4
5
6
如果未请求证书,将报错:Error in certificate: Peer's certificate issuer is not recognized.
有时邮件可以发送,但依然报错:Error in certificate: Peer's certificate issuer is not recognized.,删除.certs,重新申请证书。

输入这一条

certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt

返回如下提示即可:

1
2
**Notice: Trust flag u is set automatically if the private key is present.**
这是为了信任证书的标记操作。

然后配置/etc/bashrc

1
2
3
4
在内容末尾写入以下内容

echo 'WARMING - You Have Been Using Root Account Pass SSH To Access (daishenghui.tk) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" xxx@xxx.xxx
这里的xxx@xxx.xxx是写收件的email邮箱地址

2

如果要同时发送给多个Email可以多复制几个这个

1
2
3
| mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" xxx@xxx.xxx
| 管道一定不能少了
需要多少个就加多少个这个语句在后面。

以上配置完后,写入以下命令进行测试是否能收到邮件

1
2
echo Hello World | mail -s test xxx@xxx.xxx
这里的xxx@xxx.xxx是写收件的email邮箱地址

这个时候你的邮箱就会收到一条Email了

3

avatar

文章目录


本站总访问量 本文总阅读量