1、业务场景
1、很多时候为了各方面原因,需要用到登陆到linux系统的时候,提醒管理员是谁登陆的,在哪登陆的,以及登陆的ip,是不是非常用性的ip,是不是被非法入侵。。。。等等原因,所以就需要提醒服务,这里采用的是邮件提醒方式。
2、这里采用的是SendMail的方式,也可以采用自己写个python脚本,或者php脚本,等等脚本语言,先实现发送邮件的功能,然后直接到服务器启动的地方触发脚本,即可完成邮箱预警,这里写个博客,只做大致展示,精细以及完善,还得靠自己!
2、安装SendMail
yum -y install sendmail
3、安装Mailx
yum install -y mailx
4、开启防火墙端口25和465(这里是服务器虚拟机里面开启,如果是买的阿里云,去安全组就行了)
#开启25端口
firewall-cmd --add-port=25/tcp --zone=public --permanent
#开启465端口
firewall-cmd --add-port=465/tcp --zone=public --permanent
#重启防火墙
systemctl restart firewalld
5、配置/etc/mail.rc文件
1、查找位置 取下图红圈圈出来的部分
find / -name "cert*.db"
2、进入编辑文件
vi /etc/mail.rc
3、写入以下配置**(这里使用的是QQ邮箱 注释记住最好删掉)**
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set from=xxxxxxx@qq.com #发送者QQ账号
set smtp=smtps://smtp.qq.com:465 #发送地址 这里使用的是QQ邮箱
set smtp-auth-user=xxxxxxx@qq.com #发送者QQ账号
set smtp-auth-password=xxxxxxx #发送者QQ账号密钥 不是QQ密码!!!!
set smtp-auth=login
4、重启SendMail服务
#重启
systemctl restart sendmail
#查看状态
systemctl status sendmail
6、先手动触发命令测试是否能成功发送邮件
echo "我是邮件提醒" | mailx -v -s "服务器登陆提醒" xxxxxxx@xxx.com #记住这里是要你要发送的对象
7、linux设置登陆的时候触发发送邮件(这里采用的是centos7)
1、各种环境下写入的配置位置:
Linux用户登陆都会执行/etc/profile文件
Ubuntu/Debian系统环境 编辑根目录下 ~/.bashrc文件
CentOS系统 编辑 ~/.bash_profile文件
vi ~/.bash_profile
2、写入配置**(如下图所示:)**
#获取登陆账户
user=$USER
#获取登陆时间
time=$(date +%F%t%k:%M)
#获取登陆ip
ip=${SSH_CLIENT%% *}
#登陆ip归属地 这个http地址是获取ip的,也可以自己找个网站替换掉
address=`curl http://icanhazip.com`
echo "用户 $user 用 $address ip地址在 $time 登陆线上服务器 " | mailx -v -s "服务器登陆提醒" public_class_xuan@163.com