一、Linux基本防护
1)账号安全
1.设置账号有效期
chage工具
-d 0 登录账号之后必须强制修改密码
-E yyyy-mm-dd 指定失效日期
-l 查看用户信息
[root@culver07 ~]# useradd bob
[root@culver07 ~]# chage -d 0 bob
[root@culver07 ~]# chage -E 2020-07-24 bob
[root@culver07 ~]# chage -l bob
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :7月 24, 2020
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
2.账号的锁定/解锁
passwd命令
-l 锁定
-u 解锁
-S 查看状态
[root@culver07 ~]# useradd jim
[root@culver07 ~]# echo 123456|passwd –stdin jim
更改用户 jim 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@culver07 ~]# passwd -u jim
解锁用户 jim 的密码。
passwd: 操作成功
[root@culver07 ~]# passwd -l jim
锁定用户 jim 的密码 。
passwd: 操作成功
[root@culver07 ~]# passwd -S jim
jim LK 2020-07-22 0 99999 7 -1 (密码已被锁定。)
3.强制定期修改密码
配置文件配置/etc/login.defs 对新建的用户有效
[root@culver07 ~]# vim /etc/login.defs
25 PASS_MAX_DAYS 99999 ==>>密码的最大有效期
26 PASS_MIN_DAYS 0 ==>>最低多少天必须修改密码
27 PASS_MIN_LEN 5 ==>>密码的最低长度
28 PASS_WARN_AGE 7 ==>>密码过期前多少天提醒
4.伪装登录提示
配置文件/etc/issue,/etc/issue.net
分别适用于本地,远程登录
默认会提示内核,系统等版本信息
[root@culver07 ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@culver07 ~]# cat /etc/issue.net
\S
Kernel \r on an \m
2)文件系统安全
1.程序和服务控制
禁用非必要的系统服务(使用systemctl,chkconfig工具)
2.锁定/解锁保护文件
EXT3/EXT4的文件属性控制
chattr,lasttr
+,-控制方式
属性i 不可变
属性a 仅可追加
[root@culver07 ~]# chattr +i /etc/hosts
[root@culver07 ~]# echo “1232 www.qq.dd” >> /etc/hosts
-bash: /etc/hosts: 权限不够
[root@culver07 ~]# chattr -i /etc/hosts
二、用户切换与提权
1)su切换用户身份
1.切换与提权的应用场景
切换用户身份
ssh远程管理
运维测试
提升执行权限
管理权限细分
2. su切换的基本用法
快速切换为其他指定的用户
普通用户执行时,需要验证目标用户的口令
root执行时,无需验证口令
命令格式:
用法1:su [-] [目标用户]
用法2:su [-] -c “命令” [目标用户]
[root@culver07 ~]# su – jim -c “mkdir /home/jim/test”
3. 分析su切换的使用情况
安全日志/var/log/secure
记录su验证,shell开启与关闭
[root@culver07 ~]# tail /var/log/secure
Jul 22 12:07:09 culver07 su: pam_unix(su-l:session): session opened for user jim by root(uid=0) ==>>su切换登入成功
Jul 22 12:07:09 culver07 su: pam_unix(su-l:session): session closed for user jim ==>>su会话断开
2)sudo提升执行权限
1.sudo提权的基本用法
Super or another Do,超级执行
管理员预先为用户设置执行许可
被授权用户有权执行授权的命令,验证自己的口令
执行授权命令
用法:sudo 提权命令
查看提权命令
用法:sudo -l
2.配置sudo提权
修改方法:
方法1:visudo
方法2:vim /etc/sudoers
授权记录格式
用户 主机列表=命令列表
[root@culver07 ~]# visudo
93 mike localhost,svr1=/sbin/*,!/sbin/ifconfig eth0 ==>>允许mike以root权限执行/sbin/下的所有命令,但是,禁止修改eth0网卡的参数
94 %wheel ALL=(ALL) NOPASSWD:ALL ==>>wheel组的用户无需验证可以执行所有命令
3.分析sudo提权的使用情况
修改全局配置,启用日志
[root@culver07 ~]# vim /etc/sudoers
64 Defaults logfile=”/var/log/sudo”
[root@culver07 ~]# tail /var/log/sudo
4.sudo别名设置
提高可重用性,易读性
简化配置,使记录更有条理
[root@culver07 ~]# visudo ==>>别名的名称必须全大写
96 User_Alias OPERATORS=jerry,tom,jike
97 Host_Alias MAILSERVERS=mail,smtp,pop,svr7
98 Cmnd_Alias SOFTMGR=/bin/rpm,/usr/bin/yum
99 OPERATORS MAILSERVERS=SOFTMGR
三、SSH访问控制
1.ssh防护概述
存在的安全隐患
密码嗅探,键盘记录
暴力枚举账号,猜解密码
常见的防护措施
用户限制,黑白名单
更改验证方式(密码–>密钥对)
防火墙
2.sshd基本安全配置
配置文件/etc/ssh/sshd_config
常见SSH服务器监听的选项如下:
Port 22 //监听的端口为22
Protocol 2 //使用SSH V2协议
ListenAdderss 0.0.0.0 //监听的地址为所有地址
UseDNS no //禁止DNS反向解析
常见用户登录控制选项如下:
PermitRootLogin no //禁止root用户登录
PermitEmptyPasswords no //禁止空密码用户登录
LoginGraceTime 2m //登录验证时间为2分钟
MaxAuthTries 6 //最大重试次数为6
3.sshd黑白名单配置
配置文件/etc/ssh/sshd_config
AllowUsers user //只允许user用户登录,与DenyUsers选项相反
AllowGroups group //只允许group组用户登录,与DenyGroups选项相反
4.ssh验证方式控制
口令验证
检查登录用户的口令是否一致
密钥验证
检查客户端私钥与服务器上的公钥是否匹配
配置文件/etc/ssh/sshd_config
PasswordAuthentication yes //启用密码验证
PubkeyAuthentication yes //启用秘钥验证
AuthorsizedKeysFile .ssh/authorized_keys //指定公钥数据库文件
5.创建ssh密钥对
使用工具ssh-keygen
可以手动指定加密算法(-t rsa或-t dsa)默认为RSA加密算法
[root@culver07 ~]# ssh-keygen
[root@culver07 ~]# ls -Al /root/.ssh/
-rw——- 1 root root 1675 7月 21 18:35 id_rsa ==>>私钥文件
-rw-r–r– 1 root root 393 7月 21 18:35 id_rsa.pub ==>>公钥文件
6.部署ssh公钥
方法一:通过ssh-copy-id自动部署
好处:一步到位
局限性:要求ssh口令认证可用
方法二:通过FTP等方式上传,手动添加
好处:灵活,使用范围广
局限性:操作繁琐,易出错
四、Selinux安全防护
1.SELinux简介
Security-Enhanced Linux
一套强化Linux安全的扩展模块
美国国家安全局主导开发
SELinux的运行机制
集成到Linux内核2.6以上
操作系统提供可以定制的策略,管理工具
2.红帽的SELinux策略集
SELINUXTYPE=targeted
推荐,仅保护最常见/关键的网络服务,其他不限制
[root@culver07 ~]# sestatus ==>>查看selinux的状态
3.SELinux模式控制
方法一:修改kernel启动参数
添加selinux=0以禁用
添加enforcing=0设置SELinux为允许模式
方法二:修改配置文件/etc/selinux/config
设置SELINUX=disabled以禁用
设置SELINUX=permissive宽松,允许模式
设置SELINUX=enforcing强制模式
临时控制:setenforce命令(disabled模式下不可用)
设为1,对应强制模式
设为0,对应宽松模式
[root@culver07 ~]# setenforce 0 ==>>设置宽松模式
[root@culver07 ~]# getenforce ==>>查看当前状态
4.查看安全上下文
Security Context,安全上下文
为文件/目录/设备标记访问控制属性
属性构成
用户:角色:访问类型:选项
[root@culver07 ~]# ls -Z /bin/ls /etc/fstab
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/ls
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/fstab
5.修改安全上下文
使用chcon工具
-t 指定访问类型
-R 递归修改
一般操作规律
移动的文件,原有的上下文属性不变
复制的文件,自动继承目标位置的上下文
6.重置安全上下文
使用restorecon工具
恢复所在位置的默认上下文属性
-R 递归修改
/.autorelabel文件
下次重启后全部重置
7.调整SELinux布尔值
使用getsebool
-a 可列出所有布尔值
使用setsebool设置
-P 永久更改,重启后仍然有效
————————————————
转载自CSDN博主「SshikSsh」原创文章,
原文链接:https://blog.csdn.net/yy1506438689/article/details/107552836