本来想在网上找一个可以限制远程 IP 访问的脚本,结果一个都不能用;因此,花了几天一边改脚本,一边看 Oracle 的官网手册,最后测试通过了!
代码示例
#!/usr/bin/bash
# 执行 bash /etc/block_ssh.sh
#
# TO-DO
#
# 1.0.1 8/19 21:49
#
# 1.0.0 2021/08/01 22:24:48-2021/08/01 22:37:30
# 根据 /etc/block_ssh.csh 改编,相应日志文件为
# tail -f /var/adm/messages
# tail -f /var/log/alarm_`hostname`.log
# tail -f /usr/tmp/remote.log
# 获取 tty 值
tmn=`who am i | awk '{print $2;}'`
# 获取当前 IP
# who am i| awk '{print $2,$6;}'
#login_ip=`finger |grep $tmn | awk '{print $6;}'`
login_ip=` who -um | awk '{print $8;}' | sed -e 's/(//g; s/)//g' `
# bash 去除前缀 ${login_ip#*(} 和后缀 ${login_ip%*)}
echo $login_ip
# 获取当前 PID 值
login_pid=`who -um | awk '{print $7;}'`
login_name=`echo $LOGNAME`
if [ "$login_ip" = "" -o "$login_ip" = ":0" -o "$login_ip" = ":0.0" ]; then
type_x="local"
else
type_x="remote"
fi
# chmod 622 /usr/tmp/remote.log
echo -e "`date +%Y-%m-%d\ %H:%M:%S` \t $login_name \t $login_ip" >> /usr/tmp/remote.log
echo $type_x
trap 1 2 3 9 15
if [ "$type_x" = "local" -o "$login_ip" = "10.0.2.2" ]; then
echo " Welcome......"
logger -p user.info "Someone has logined in: $login_ip \!"
else
echo " Warning"
# 需要转义:英文叹号
logger -i -p user.err -t SSH "Remote IP is login: $login_ip \!"
logger -ip user.alert "Unauthorized remote IP is login: $login_ip \!"
#logger -p user.warning 'Unknown IP is login'
# 测试表明,上述报警同时在 系统日志和用户日志中存储
# kill remote ssh link
pkill -9 -t $tmn
#kill -9 $login_pid
fi
姊妹篇
最后更新: 2022/02/12 12:44:31
作者: David Faraday
主用链接: https://faradays-studio.gitee.io/202108251958/
备用链接: https://faradays-studio.github.io/202108251958/
许可协议: CC BY-NC-SA 4.0.