【Linux】服务器恶意登录记录及解决方案
1、查看当前用户的主目录
# 切换到主目录
cd ~
# 查看主目录位置
pwd
2、检查服务器是否被恶意登录
# Ubuntu
# 1. 查看近期成功的密码登录:
grep "password" /var/log/auth.log | grep -v Failed | grep -v Invalid
# 2. 查看最近登录失败的 IP 和每个 IP 失败次数:
awk '{if($6=="Failed"&&$7=="password"){if($9=="invalid"){ips[$13]++;users[$11]++}else{users[$9]++;ips[$11]++}}}END{for(ip in ips){print ip, ips[ip]}}' /var/log/auth.log | sort -k2 -rn
#3. 查看近期登录失败的用户名和失败次数:
awk '{if($6=="Failed"&&$7=="password"){if($9=="invalid"){ips[$13]++;users[$11]++}else{users[$9]++;ips[$11]++}}}END{for(user in users){print user, users[user]}}' /var/log/auth.log | sort -k2 -rn
# CentOS
# 1. 查看成功登录
grep "Accepted password for" /var/log/secure
# 2. 查看每个用户名失败的次数
grep "Failed password" /var/log/secure | awk '{if (NF==16){c[$11]++}else{c[$9]++}}END{for(u in c)print u,c[u]}' | sort -k 2 -nr | head
# 3. 查看每个 IP 地址失败的次数
grep "Failed password" /var/log/secure | awk '{if (NF==16){c[$13]++}else{c[$11]++}}END{for(u in c)print u,c[u]}' | sort -k 1 -n | head
3、服务器禁止 root?账户登陆
因为:自从有了一台有公网IP的Linux机器,每次登录就会有这样是信息:(大致意思:别人尝试登陆你的服务器但账户名或者密码不正确导致登陆失败
There were 4899 failed login attempts since the last successful login.
Last login: Thu Aug 21 15:45:34 2014 from 87.201.230.138
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
所以:于是我选择关闭 root 用户(注意:禁用root用户后使用sftp时可能一些目录无法访问)
(1)使用root账户登录系统,添加一个普通账户例如test,并为其设置密码
# 添加新账户
useradd test
# 为test账户设置密码
passwd test
# 输入密码
# 再次输入确认密码
(2)编辑配置文件 /etc/ssh/sshd_config (可以使用vim,vim使用教程)修改 PermitRootLogin 后面的 yes 为 no ,并且去掉前面的注释符,同时可以限制失败次数。【注:这个失败次数是对所有用户都起作用的】
?(3)最后重启sshd服务?systemctl restart sshd.service,此时再用root用户登录,如果不能登陆则代表配置成功。如果需要使用root权限,可以使用su/sudo进行切换
4、Linux 删除普通用户步骤
(1)先用命令? ?cat /etc/passwd? 查看一下所有的用户? 可以看到片你需要删除的用户名
(2)用命令? ? who? ? 查询当前登录的用户
(3)用命令? ?ps -u 用户名? ? ?查看该用户的pid?
(4)用命令? kill? pid? ? 杀掉他的sshd或者是shell进程
(5)再用命令? ?userdel -r 用户名? ?删除用户
如果此时还是删除不了用户,是由于还有进程没杀完,在root用户下,
输入指令 ps -ef |grep 用户名? 删掉第一个进程(可能会有其他连号的进程,不需要管),然后在执行 步骤5
|