给Linux设置SSH登录邮件提醒

给Linux设置SSH登录邮件提醒

心血来潮,用 last 命令查看了登录记录,不看不知道,一看就有问题。竟然有两个陌生的IP ,一个是美国欧莱雅的,一个是北京联通的。真是郁闷,密码简单了真不行
或许这两位是一些网站的站长,这么轻而易举的就进来我的 root, 或者他们只是看看,我这菜鸟的级别的自然没有发现挂马后门之类的。
后来仔细想了,这两个陌生的IP可能还是自己的,美国欧莱雅的可能是自己用过的VPN, 而北京联通这个IP可能是自己的联通卡流量,虽然我这人山高皇帝远,可是这个联通网络貌似要经过北京的联通网管,呵呵,难道是虚惊一场 😉
小心驶得万年船,做些安全设置也没错
1. 改用证书登录

vim /etc/ssh/sshd_config

2. 设置登录邮件提醒

yum install mailx mail sendmail

Linux用户登陆都会执行/etc/profile文件,编辑这个文件
Ubuntu/Debian系统环境 编辑根目录下 ~/.bashrc文件
CentOS系统 编辑 ~/.bash_profile文件


IP=$(echo $SSH_CLIENT | awk '{ print $1}')
IP=$(echo $SSH_CONNECTION | cut -d " " -f 1)
HOSTNAME=$(hostname)
NOW=$(date +"%e %b %Y, %a %r")
echo 'Someone from '$IPA '.'$IPB'.' $IPC ' logged into '$HOSTNAME' on '$NOW'.' | mail -s 'ChicagoVPS SSH Login Notification' Email地址

3. SSH密码错误几次后封禁登录IP

#!/bin/bash

yum -y install vixie-cron crontabs
mkdir -p /usr/local/cron/

cat > /usr/local/cron/sshdeny.sh << "EOF" #!/bin/bash DEFINE="3" cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'>/tmp/sshDenyTemp.txt

for i in `cat /tmp/sshDenyTemp.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done

echo > /var/log/secure
rm -rf /tmp/sshDenyTemp.txt
EOF

chmod +x /usr/local/cron/sshdeny.sh

echo '*/5 * * * * /usr/local/cron/sshdeny.sh > /dev/null 2>&1' >> /var/spool/cron/root
chmod 600 /var/spool/cron/root

echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "Deny for SSH Cront have added success!"
echo "The task work by 5/min"
echo "If you want to allow one, please delete it from /etc/hosts.deny"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

原文链接:,转发请注明来源!
评论已关闭。