在禁止root登入前,需要创建一个普通用户
[root@123 ~]# users #查看当前用户列表
123 root
[root@123 ~]# useradd 888 #创建888的普通用户
[root@123 ~]# passwd 888 #为888用户创建密码(修改密码)
更改用户 888 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符 #因为我就设置了123456所以出这个提示
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
vi /etc/ssh/sshd_config
PermitRootLogin no #把注释去掉并把yes改为no
systemctl restart sshd #重启ssh服务
vi /etc/security/pwquality.conf
difok=N #新密码中不得出现的字符数密码。(默认5)
minlen=12 #定义用户密码的最小长度;
dcredit=-1 #定义用户密码中必须包含多少个数字;
ucredit=-1 #定义用户密码中必须包含多少个大写字母;
lcredit=-1 #定义用户密码中必须包含多少个小写字母;
ocredit=N #定义用户密码中必须包含多少个特殊字符
minclass=N #新密码所需的最小字符数(数字,大写,小写,其他)。(默认为0)
maxrepeat=N #新密码中允许的最大相同连续字符数。如果值为0,则禁用检查。(默认为0)
maxclassrepeat=N #新的同一类中允许的最大连续字符数密码。如果值为0,则禁用检查。(默认为0)
vi /etc/login.defs
PASS_MAX_DAYS 30 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 12 #密码最小长度
PASS_WARN_AGE 7 #密码过期提示时间
在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!
vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10
1)各参数解释
even_deny_root #也限制root用户;
deny #设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time #设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time #设定root用户锁定后,多少时间后解锁,单位是秒;此处使用的是 pam_tally2模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。
2)查看用户登录失败次数
[root@123 pam.d]# pam_tally2 #查看锁定的用户
Login Failures Latest failure From
root 1 04/23/21 16:09:01 ti0171a401-0336.bb.online.no
888 4 04/23/21 17:02:06 ti0171a401-0336.bb.online.no
cd /etc/pam.d/
pam_tally2 --user 888 #查看888用户
Login Failures Latest failure From
888 21 04/23/21 15:29:19 ti0171a401-0336.bb.online.no
21次登入,日期时间都有显示
3)解锁指定用户
pam_tally2 -r -u 888
vi /etc/profile
export TMOUT=900 #文件末尾加,单位为秒
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
vim /etc/profile #在最后加上如下脚本代码
#history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null
source /etc/profile #刷新配置过的文件
查看用户操作过的命令
[root@123 ~]# cd /usr/share/.history/
[root@123 .history]# ll
总用量 0
d-wx------. 2 888 888 66 4月 23 16:27 888 #用户
d-wx------. 2 root root 66 4月 23 16:23 root
[root@123 .history]# cd 888/
[root@123 888]# ll
总用量 4
-rw-------. 1 root root 306 4月 23 16:27 ti0171a401-0336.bb.online.no.history.20210423_162317
[root@123 888]# cat ti0171a401-0336.bb.online.no.history.20210423_162317
#1619166218
cd /usr/share/.history/
#1619166219
ll
#1619166223
cd 888/
#1619166224
ll
#1619166254
cd ..
#1619166258
cd root/
#1619166259
ll
#1619166274
cat ti0171a401-0336.bb.online.no.history.20210423_162233
#1619166316
ll
#1619166362
history
#1619166395
vi /etc/bashrc
#1619166438
source /etc/bashrc
[root@123 888]#
用history 查看历史记录
[root@123 888]# history
1 [2021.04.23 16:23:38]cd /usr/share/.history/
2 [2021.04.23 16:23:39]ll
3 [2021.04.23 16:23:43]cd 888/
4 [2021.04.23 16:23:44]ll
在/etc/bashrc中加入几个环境变量,用于history命令显示用户ip等内容(末尾加入)
vi /etc/bashrc
#history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTFILESIZE=4000
HISTSIZE=4000
HISTTIMEFORMAT="%F %T ${USER_IP} `whoami` "
export HISTTIMEFORMAT
source /etc/bashrc 刷新
[root@123 888]# history
1 2021-04-23 16:23:38 ti0171a401-0336.bb.online.no root cd /usr/share/.history/
2 2021-04-23 16:23:39 ti0171a401-0336.bb.online.no root ll
3 2021-04-23 16:23:43 ti0171a401-0336.bb.online.no root cd 888/
4 2021-04-23 16:23:44 ti0171a401-0336.bb.online.no root ll
5 2021-04-23 16:24:14 ti0171a401-0336.bb.online.no root cd ..
6 2021-04-23 16:24:18 ti0171a401-0336.bb.online.no root cd root/
我这里是虚拟机在自己电脑,所有没有显示出IP,显示的是电脑名,可以用CMD命令去ping一下这个电脑名就会显示出IP
1.编辑文件 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
2.root用户只允许在如下ip登录
AllowUsers root@203.212.4.117
AllowUsers root@124.202.206.14
3.重启ssh生效
service sshd restart
4.取消ip登录限制
如果取消ip登录限制,则删除AllowUsers项即可