一、账号和口令1。1禁用或删除无用账号 查看etcpasswd文件查看是否有无用的账号,如果存在则删除,降低安全风险。 操作步骤:使用命令userdel用户名删除不必要的账号。使用命令passwdl用户名锁定不必要的账号。使用命令passwdu用户名解锁必要的账号。1。2检查特殊账号 操作步骤:查看空口令和root权限账号,确认是否存在异常账号:使用命令awkF:(2)etcshadow查看空口令账号。使用命令awkF:(30)etcpasswd查看UID为零的账号。加固空口令账号:使用命令passwd用户名为空口令账号设定密码。确认UID为0的账号只有root账号。1。3添加口令策略 操作步骤使用命令vimetclogin。defs修改配置文件。PASSMAXDAYS90新建用户的密码最长使用天数PASSMINDAYS0新建用户的密码最短使用天数(两次修改口令的最小间隔时间)PASSMINLEN8新建用户的密码最小长度PASSWARNAGE14新建用户的密码到期提前提醒天数使用chage命令修改用户设置。设置用户密码最短使用天数为7天,密码最长使用天数为30天,过期前14天警告用户sudochagem7M90W14rootsudochagem7M90W14admin密码过期时间查看方法:〔adminCentos7〕sudochagelrootLastpasswordchange:Sep14,2020【最近一次修改密码的时间】Passwordexpires:Dec13,2020【密码过期时间】Passwordinactive:never【密码失效时间】Accountexpires:never【账户过期时间】Minimumnumberofdaysbetweenpasswordchange:7【两次改变密码之间相距最小天数】Maximumnumberofdaysbetweenpasswordchange:90【两次密码改变密码相距最大天数】Numberofdaysofwarningbeforepasswordexpires:15【密码过期前开始警告的天数】密码锁定策略 设置连续输错五次密码,账号锁定五分钟。vimetcpam。dsystemauthauthrequiredpamtally2。soonerrfaildeny5unlocktime300evendenyrootrootunlocktime90说明:deny:设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户unlocktime:设定普通用户锁定后,多少时间后解锁,单位是秒rootunlocktime:设定root用户锁定后,多少时间后解锁,单位是秒密码复杂度 设置用户密码最小长度8位,必须包含大小写字母数字特殊字符(root用户同理)vimetcpam。dsystemauthpasswordrequisitepampwquality。sotryfirstpasslocalusersonlyminlen8ucredit1lcredit1dcredit1passwordrequiredpampwhistory。souseauthtokremember5enforceforrootvimetcpam。dpasswordauthpasswordrequisitepampwquality。sotryfirstpasslocalusersonlyminlen8ucredit1lcredit1dcredit1passwordrequiredpampwhistory。souseauthtokremember5enforceforroot说明: minlen8:将密码的最小长度设置为8个字符。lcredit1:将密码应包含的小写字母的最小数目设置为至少一个ucredit1:将密码上的大写字母的最小数目设置为至少一个。dcredit1:将密码中包含的最小位数至少设置为一个ocredit1:设置其他符号的最小数量,例如,、!等,至少要有一个密码remember5:口令不能修改为过去5次使用过的旧口令enforceforroot:确保即使是root用户设置密码,也应强制执行复杂性策略。1。4限制用户su 操作步骤 使用命令vimetcpam。dsu修改配置文件,在配置文件中添加行。 例如,只允许admin组用户su到root,则添加authrequiredpamwheel。sogroupadmin。 【可选】为了方便操作,可配置admin支持免密sudo:在etcsudoers文件中添加adminALL(ALL)NOPASSWD:ALL1。5加固su命令 为了防止使用su命令将当前用户环境变量带入其它用户,修改etclogin。defs添加ALWAYSSETPATHyes并保存。1。6禁止root用户直接登入 操作步骤创建普通权限账号并配置密码,防止无法远程登录,如:groupaddg1000adminuseraddgadmincAdministratoru1000nsbinbashadmin使用命令vietcsshsshdconfig修改配置文件将PermitRootLogin的值改成no,并重启sshd服务。二、系统服务2。1关闭不必要的服务 操作步骤: 查看所有服务列表systemctllistunitstypeservice关闭不必要的服务:systemctlstop服务名设置开机不自启动:systemctldisable服务名2。2SSH服务安全 操作步骤 使用命令vimetcsshsshdconfig编辑配置文件。PermitRootLoginno不允许root账号直接登录系统Protocol2修改SSH使用的协议版本MaxAuthTries3修改允许密码错误次数(默认6次)ClientAliveInterval60server每隔60秒给客户端发送一次保活信息包给客户端ClientAliveCountMax30server端发出的请求客户端没有回应的次数达到30次的时候就断开连接。 配置文件修改完成后,重启sshd服务生效(systemctlrestartsshd)。三、文件系统3。1设置umask值 操作步骤 修改etcprofile配置文件,添加行umask027,即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。3。2设置登入超时 操作步骤 修改etcprofile配置文件,设置为TMOUT600,表示超时10分钟无操作自动退出登录。四、系统日志4。1syslogd日志 操作步骤 Linux系统默认启用以下类型日志,配置文件为etcrsyslog。conf:系统日志(默认)varlogmessagescron日志(默认)varlogcron安全日志(默认)varlogsecure4。2记录所有用户的登入日志和操作日志打开配置文件etcprofile,在配置文件最后中输入以下内容:historyUSERwhoamiUSERIPwhouami2devnullawk{printNF}sedes〔()〕gif〔USERIP〕;thenUSERIPhostnamefiif〔!dvarloghistory〕;thenmkdirvarloghistorychmod777varloghistoryfiif〔!dvarloghistory{LOGNAME}〕;thenmkdirvarloghistory{LOGNAME}chmod300varloghistory{LOGNAME}fiexportHISTSIZE4096DTdateYmdH:M:SexportHISTFILEvarloghistory{LOGNAME}{USER}{USERIP}DTchmod600varloghistory{LOGNAME}history2devnull执行source使其生效sourceetcprofile 通过上述步骤,可以在varloghistory目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外) 服务器安全加固Linuxwubolive博客园