1.常规配置
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' #关闭selinux
vim /etc/fstab #关闭交换分区
#/dev/mapper/centos-swap swap swap defaults 0 0
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld #关闭防火墙
2.配置主机之间免密登陆
[root@master1 ~]# ssh-keygen #一路回车,不输入密码
把本地生成的密钥文件和私钥文件拷贝到远程主机
[root@master1 ~]# ssh-copy-id master1
[root@master1 ~]# ssh-copy-id master2
3.安装常用软件
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm
4.禁止root直接登陆,采取sudo授权账号权限
vi /etc/ssh/sshd_config
PermitRootLogin no #把注释去掉并把yes改为no
systemctl restart sshd #重启ssh服务
5.设置密码长度12位,包括大小写、字母、数字、特殊字符
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)
6.密码过期时间为30天,提前七天提示
vi /etc/login.defs
PASS_MAX_DAYS 30 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 12 #密码最小长度
PASS_WARN_AGE 7 #密码过期提示时间
7.连续输入3次密码错误,锁定5分钟
在#%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
3)解锁指定用户
pam_tally2 -r -u 888
8.登陆15分钟,空闲自动登出
vi /etc/profile
export TMOUT=900 #文件末尾加,单位为秒
9.记录每个用户的操作命令
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/
用history 查看历史记录
在/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 刷新
10.设置ssh只允许特定用户从指定的IP登录
vi /etc/ssh/sshd_config
root用户只允许在如下ip登录
AllowUsers root@203.212.4.117
AllowUsers root@124.202.206.14
重启ssh生效
service sshd restart
11.禁止SSH空密码用户登录
编辑文件/etc/ssh/sshd_config,将PermitEmptyPasswords配置为no:
PermitEmptyPasswords no
12.确保SSH LogLevel设置为INFO,记录登录和注销活动
编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数(取消注释):
LogLevel INFO