目录
1.1 将非登录用户的shell设为/sbin/nologin
一. 账号安全基本措施
1.1 将非登录用户的shell设为/sbin/nologin
用户名 : usermod -s /sbin/nologin
1.2 锁定用户
paswwd -l 用户名 #锁定账户方法一 paswwd -u 用户名 #解锁账户方法一
usermod -L 用户名 #锁定账户方法二 usermod -U 用户名 #解锁账户方法二
1.3 删除账户
userdel -r 用户名
1.4 锁定配置文件
-a 让文件或目录仅供附加用途。只能追加
-i 不得任意更动文件或目录
chattr +i /etc/passwd /etc/shadow #锁定文件
Isattr /etc/passwd /etc/shadow #查看状态
chattr -i /etc/passwd /etc/shadow #解锁文件
注:chatter +i 命令解释
设置了“i”属性的文件不能进行修改:你既不能删除它, 也不能给它重新命名,你不能对该文件创建链接, 而且也不能对该文件写入任何数据.
只有超级用户可以设置或清除该属性.
修改用户密码(两种方法)
echo 密码 | passwd --stdin 用户名
passwd 用户名
二.密码安全控制
2.1 未创建用户密码管理
新建用户并更改密码属性
2.2 创建用户密码管理——chage命令
格式:chage【选项】用户名
三.命令历史限制
3.1 命令历史
Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。
- 临时修改当前用户的历史命令条数
[root@localhost ~]# export HISTSIZE=200 //临时修改历史命令条数为200条
. 进入配置文件永久修改历史命令条数
1. [root@localhost ~]# vim /etc/profile //进入配置文件
2. HISTSIZE=200 //将历史命令条数由1000改为200
3. [root@localhost ~]# source /etc/profile //刷新配置文件,使文件立即生效
- 退出时清除
. 开机后清除
四. 用户切换
4.1 su命令——切换用户
su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令
4.2 切换用户的方式
. su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不 完全切换,与只切换了一部分,这会导致某些命令运行出现问题或错误
. su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切 换,切换用户身份更彻底
说明
- root su至其他用户无须密码
- 非root用户切换时需要密码
- su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
4.3 限制使用su命令的用户
. su命令的安全隐患
(1) 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密
码,带来安全风险
(2) 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进
行切换
. 限制使用su命令的用户
将允许使用su命令的用户加入wheel组。
启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户(编辑/etc/pam.d/su文件)。
4.4 sudo命令——用户提权
4.4.1 sund命令用途及用法
- 用途 :以其他用户身份(如root执行授权的命令)
- 用法:
sudo 权限命令
4.4.2 sudo特性:
1. sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示 联系管理员 2.sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日 志服务器 3.sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得 了一张存活期为5分钟的票。sudo -V 可以查看相关配置信息 4.sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。 它所存放的位置默认是在/etc/sudoers,属性必须为0440
4.4.3 配置sudo
可以使用visudo也可以使用vim /etc/sudoers进行配置,但通常使用visudo,因为visudo可以自动检
查语法是否输入错误
可以使用通配符
4.4.4 sudo 别名
sudo别名有四种类型:
-
User_Alias(用户)
-
Runas_Alias(代表用户)
-
Host_Alias(登录主机)
-
Cmnd_Alias(命令)
五. 系统引导
5.1 调整BIOS引导设置原则
将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导启动系统;
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启
5.2 GRUB 菜单设置
未经授权禁止修改启动参数
未经授权禁止进入指定系统
5.3 GRUB 限制
使用grub2-mkpasswd-pbkdf2生成密钥;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。
5.4 限制更改GRUB引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
5.5 进行GRUB限制的步骤
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,
其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首
先被读取
设置GRUB2加密
由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行
加密可以实现安全性。
在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并
编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设
置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行
编辑菜单项以及执行任意菜单项。
5.5 GRUB 2密码支持以下两种格式
明文密码:密码数据没有经过加密,安全性差
PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。
grub加密方法一
注: 重启后按e进入geub菜单,需要输入密码
grub加密方法二
先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。
六. 终端登录安全控制
6.1 限制root只在安全终端登录
安全终端配置:/etc/securetty
6.2 禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或者重启后即恢复正常
七. 网络扫描----NMAP
一款强大的网络扫描、安全 检测工具
官方网站:Nmap: the Network Mapper - Free Security Scanner
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
网络端口扫描:
使用前nmap前需要安装
nmap -p 端口 网段 ——指定扫描的端口
nmap -sP查看网段有哪些存活主机
nmap -sU查看目标主机提供的UDP服务