系统安全
保护数据安全:组织和个人进入互联网行业必须要有的基础设施之一(客户数据 财务信息 知识产权)
法律法规:法律要求组织和个人必须具备保护网络完全和信息安全、系统安全的资质。
linux的账号安全防护
账号安全:
锁定长期不使用的账号:
passwd -l 用户名 //锁定
passwd -u 用户名 //解锁
usemod -L 用户名 //锁定
usemod -U 用户名 //解锁
把账号设置为非登录用户:
usermod -s nologin 用户名
删除无用的账号:
userdel -r 用户名
密码的安全控制:
从密码的有效期来进行控制:
修改新建用户的密码有效期
[root@pup ~]# vim /etc/login.defs
PASS_MAX_DAYS 30 //修改最后的天数(25行)
创建新用户(9.6)查看
[root@pup ~]# cat /etc/shadow
仅限于新建用户,已有用户不受影响
对已有用户的密码有效期进行修改
[root@pup ~]# chage -M 7 9.6 //chage -M 指定天数 用户名
锁定重要文件(如passwd、shadow、fstab等)
lsattr 文件名:查看文件的锁定状态
chattr +i 文件名:锁定文件,不能对文件内容进行任何操作
chattr -i 文件名:解除锁定
历史命令进行限制
history -c //临时清除历史记录,重启后记录还在
永久修改当前用户的历史命令条数
[root@pup ~]# vim /etc/profile
HISTSIZE=80 :历史记录保存多少条,数字可变
[root@pup ~]# source /etc/profile //刷新文件,立即生效
设置登录超时时间
[root@pup ~]# vim /etc/profile
TMOUT=600:设置登陆超时时间
[root@pup ~]# source /etc/profile
禁止su命令切换用户
su切换靠的是PAM认证
wheel组的作用:用来控制系统管理员的访问权限
授权方式:sudo 必须要加入wheel组,还需要其他配置,一旦加入wheel组,可以被授权使用一些系统管理员才能够使用的访问命令和文件
wheel默认为空,需要管理员手动添加用户。被指相应的sudo访问规则
(配置时一定要注意:有限放开原则)
查看su操作记录
[root@pup1 ~]# cat /var/log/secure
例:有carrot和ovo两个用户,要求设置carrot可以使用su命令切换用户,ovo用户则不允许使用
[root@pup1 home]# vim /etc/pam.d/su #编辑配置文件
将此行取消注释:
[root@pup1 home]# gpasswd -a carrot wheel #将carrot用户加入wheel组中
gpasswd -a 用户名 wheel :放开权限的用户添加到wheel组
可见carrot用户可以使用su命令切换至ovo用户,ovo用户不可以切换至carrot用户
sudo
sudo授权普通用户可以使用管理员的命令和文件
格式:
用户 主机名=(用户)命令程序列表
例:ovo ALL=(root)/sbin/ifconfig
即ovo这个普通用户可以和root一样拥有管理员权限,但是只限于ifconfig命令
例:普通用户无法执行修改网卡的命令,应用sudo之后即可强制执行
限制协议命令,即使用户在wheel组,也不可以使用
PAM安全认证
提供了一种标准的身份认证的接口,允许管理员定制化配置各种认证方式和方法
特点:可插拔式的认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 为了加强su命令的使用控制,可以记住pam认证模块,只允许个别用户使用su命令进行切换
PAM的认证模块有四个不同类型:
认证模块:用于验证用户的身份,基于密码来对用户身份进行验证
授权模块:控制用户对于系统资源的访问权限(文件权限、进程权限等)
账户管理模块:管理用户的账户信息,密码策略,账户锁定策略
会话管理模块:管理用户的会话,记录会话信息,注销用户会话,远程终端连接
PAM相关文件
PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式
一般遵循的顺序:
Service(服务)——PAM(配置文件)——pam_*.so
首先确定用哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
ls /etc/pam.d*/:配置文件位置
ls /lib64/security:认证模块位置
认证流程:
system-auth:系统的认证配置文件、管理用户登录、登录验证、账号授权等相关策略都在此文件之中
[root@pup pam.d]# cat system-auth
type类型:
auth:用户身份认证
account:账户有效性,限制/允许用户访问某个服务,限制用户的登陆位置
root:只能从控制台登录,必须输入账号密码
password:用户修改密码时,对密码的机制进行校验
session:会话控制,最多能打开的文件数,最多能够打开的进程数
控制位:
required:一票否决,这个模块在认证中必须是返回成功才能通过认证,但是如果认证返回失败,失败结果不会通知用户,所有type中的模块全部认证完毕,最后再把结果反馈给用户
requisite:一票否决,必须返回成功才能通过认证,一旦返回失败,不会再向下执行其他模块,直接结束
sufficient:一票通过,返回成功,表示通过了身份认证的要求,不会再执行同一类型的相同模块;如果返回失败,忽略,继续执行同一类型中的其他模块
required和requisite:可选模块,即使返回失败,也可以忽略
网络端口扫描
网络扫描工具:NMAP--可以进行网络扫描、安全检测
-p:扫描端口
-sT:扫描tcp连接
-sU:扫描udp连接
-n:禁用反向DNS解析
正向:域名解析成ip地址
反向:ip地址解析成域名
-sP:ICMP扫描,和ping是一样的,快速判断主机是否存活
例:查看网段中存活的主机: nmap -n -sP 192.168.233.0/24
例:nmap -p 80 192.168.233.0/24
扫描80端口,查询整个网段哪台主机能提供80端口服务
例:查看本机开放的tcp或者udp端口
nmap -sT 127.0.0.1 192.168.233.10 #查看tcp的端口
nmap -sU 127.0.0.1 #查看本机的udp服务端口。
总结
系统安全加固的措施:
1、对账号和密码进行安全加固:
账号锁定,密码锁定
定期修改密码
2、修改历史记录的保存数目
3、sudo的机制,在配置普通用户拥有sudo权限的时候进行有限开放的原则,需要哪些就给哪些
4、grub菜单编辑加密
5、可以通过弱口令检测工具,巡检系统当中的简单密码,然后修改掉,保证账号安全
6、锁定重要文件,/etc/passwd /etc/shadow /etc/fatab nginx.conf httpd.conf 重要的配置文件或者系统文件,进行锁定
7、强化密码策略,把密码设置复杂一点
8、配置防火墙策略
9、定期备份
10、系统定期更新,修复系统中的漏洞
11、安装杀毒软件
12、改掉一些大家都知道的服务端口 例如:httpd nginx 端口号都是80
13、设置日志文件的权限。只有管理员可以读,其他啥用没有
14、进制普通用户切换到root用户