1、用户账号安全:
chage -d 0 user #要求用户初次登陆之后修改密码,密码策略:大小写,数字,符号
chage -E 2019/12/30 user #设置账号的过期时间
chage -l user #查看用户配置信息
chage -m 10 user #要求用户每十天修改一次密码
passwd user #修改用户密码
passwd -S user #查看用户密码状态
passwd -l user #锁定用户
passwd -u user #解锁
添加用户时的默认配置文件:/etc/login.defs
伪装提示信息:/etc/issue /etc/issue.net #第一个代表本地连接,第一个代表远程连接
提示信息配置文件内容:
\s
kernel \r on an \m
# \s代表操作系统版本,\r表示内核型号,\m代表版本(x86_64或者其他)
2、文件系统安全:
在RHEL7中:
systemctl start/stop httppd #开启/关闭服务
systemctl enable/disable httpd #设置服务是否开机自启动
在RHEL6以及以下版本中:
service httpd start/stop #开启/关闭服务
chkconfig httpd on/off #设置服务是否开机自启动
①、保护文件:(特殊属性,-a,-i,仅对于ext3,ext4类型的文件)
lsattr /etc/passwd #查看文件的特殊权限
特殊属性a:仅通过追加方式才能修改文件内容
chattr +a /etc/passwd #为文件添加特殊属性a,(此时无法添加用户)
chattr -a /etc/passwd #取消文件的特殊属性a
特殊属性i:文件不可修改
chattr +i /etc/resolv.conf #添加特殊属性i,(让DNS文件不可修改)
chattr -i /etc/resolv.conf #取消特殊属性i
3、用户的切换与提权:
①、用户切换:(su)
su - user #切换用户,短横线- 表示切换环境变量
su - -c '命令' user #使用user用户执行命令
# 使用root切换到其他用户时不需要密码
②、用户提权:(sudo)
# 为用户提权的文件在/etc/sudoers,可以使用visudo,或者vim打开
# 使用vim打开需要强制退出保存,wq!
文件格式:
用户列表 主机列表=命令列表 #命令需要是完整的路径,通过which查找
vim /etc/sudoers
root ALL=(ALL) ALL #92行,root可以在所有主机上执行所有命令
%wheel ALL=(ALL) ALL #99行,%代表组,wheel组可以在所有主机上执行所有命令
bob,fob,zob localhost,va=/usr/sbin/systemctl * httpd #bob,fob,zob这三个用户,可以在localhost主机和va主机上执行有关http的所有命令
# localhost代表127.0.0.1,va是hostname中的主机名
sudo -l #当前用户可以执行的提权命令
③、案例1:允许mark用户以root权限执行/sbin/下的所有命令,但是进制修改eth0网卡
useradd mark
echo 123456 | passwd --stdin mark
vim /ets/sudoers
mark local,va=/sbin/*,!/sbin/ifconfig eth0,NOPASSWORD:ALL
# NOPASSWORD:ALL表示执行提权命令不需要密码
④、案例2:允许shelly用户管理web服务
useradd shelly
echo 123456 | passwd --stdin shelly
vim /etc/sudoers
shelly localhost,va=/bin/rpm,/bin/yum,/bin/systemctl * httpd,/bin/vim /etc/httpd/conf/httpd.conf
⑤、启用sudo日志:(记录哪些用户执行了哪些提权命令)
vim /etc/sudoers
Default logfile="/var/log/sudo.log" #文件末尾手动添加,使用提权命令时文件会自动创建
⑥、sudo别名设置:(减小日志容量,别名必须是大写字母)
vim /etc/sudoers
User_Alias MYUSER=bob,fob,zob,shelly #用户列表的别名
Host_Alias MYHOST=localhost,va #主机列表的别名
Cmnd_Alias MYCMD=/bin/rpm,/bin/yum #命令列表的别名
Cmnd_Alias MYHTTP=/bin/systemctl * httpd,/bin/vim /etc/httpd/conf/httpd.conf
# 用户别名,主机列表别名,命令列表别名都可以定义多个,然后选择使用
案例2可以改为:
MYUSER MYHOST=MYCMD,MYHTTP
或者:
shelly MYHOST=MYCMD,MYHTTP
4、SSH远程访问控制:
①、配置文件:/etc/ssh/sshd_config
vim /etc/ssh/sshd_config
# 基本配置
port 2222 #端口,默认22
protocol 2 #ssh v2加密协议
ListenAddress 0.0.0.0 #本地网卡的ip,通过这个ip连接到本地主机
PermitRootLogin no #禁止root用户通过ssh登录
systemctl restart sshd #重启服务
ssh -p 2222 space@192.168.2.5 #通过2222端口登录
UseDNS no #不解析客户机地址
LoginGraceTime 1m #失败三次以后,1m之内不允许连接
MaxAuthTries 3 #允许连接失败3次
# 黑白名单(手动添加)
# 黑名单(不允许登录的用户)
DenyUsers user1 user2 ... #不允许使用ssh登录的用户
DenyGroups group1 group2 ... #不允许使用group1,group2组中的用户登录
# 白名单(定义之后,仅允许白名单中的用户登录,其他用户不能登录)
AllowUsers user1 user2 #仅允许user1,user2用户登录
AllowGroup group1 group2 #仅允许数据group1,group2组中的用户登录
②、SSH秘钥认证:
# 秘钥在 ~/.ssh/目录下
ssh-keygen #生成秘钥对
ssh-copy-id root@ip #把公钥传给对应的主机
# 假如现在有主机A拿到了主机B的公钥
# 如果主机C想无密码访问主机A
# 则主机C只需要拿到主机B的私钥就可以,把私钥放在~/.ssh/目录下
③、关闭密码认证:
vim /etc/ssh/sshd_config
PasswordAuthentication no #关闭密码认证65行
PubkeyAuthentication yes #开启秘钥认证
AuthorizedKeysFile .ssh/authorized_keys #公钥库,存放客户机公钥的文本
5、SELinux安全防护:
selinux安全防护的策略主要有三种:安全上下文,布尔值策略,非默认端口开放
安全上下文值:
ls -lZ file #查看文件的安全上下文值
ls -ldZ dir #查看目录的安全上下文值
restorecon [-R dir] file #恢复默认的上下文值
chcon [-t | -R] 上下文值 file|dir #修改上下文值
chcon --reference file1 file2 #将file1的上下文值赋给file2
touch /.autorelable #创建这个文件之后,下次重启时重置所有文件的默认上下文值
# 案例参考以往的博客
布尔值策略:
# 服务功能的开关
getsebool -a #查看所有的布尔值
setsebool -P 服务选项 on/off #修改服务选项的布尔值,-P表示永久修改
# 案例参考以往的博客
非默认端口开放:
# 案例参考以往的博客
SELinux日志软件:
yum -y install setroubleshoot-server
reboot # 重启系统
日志文件:/var/log/message
写总结的第五十九天!!!