linux 系统安全管理

274 阅读4分钟

一.账号安全基本措施

系统账号清理

1.将非登录用户的shell改为/sbin/nologin (修改后该用户无法登录系统)

格式:usermod -s /sbin/nologin 用户名

2.锁定长期不使用的账号

方法一: 

 passwd -l 用户名 //锁定用户 

 passwd -u 用户名 //解锁用户 ​

 方法二: 

 usermod -L 用户名 //锁定用户 

 usermod -U 用户名 //解锁用户

passwd -S 用户名 //查看用户密码状态

3.删除无用的账号

userdel -r 用户名  #删除用户及其家目录

4.锁定账号文件passwd,shadow

锁定后将不能对文件进行更改,删除,重命名

chattr +i /etc/passwd /etc/shadow #锁定文件

chattr -i /etc/passwd /etc/shadow #解锁文件

lsattr /etc/passwd /etc/shadow #查看状态

密码安全控制

设置密码有效期

对于新建的用户---修改/etc/login.defs文件

vim  /etc/login.defs

PASS_MAX_DAYS #密码最大有效期

修改密码最大有效期

对于已有的用户---chage

格式:chage  -M  时间  用户名

例: chage  -M  20  mzs   #将用户mzs密码有效期设置为50天

chage  -l  mzs  #查看当前设置

格式:chage  -d  0   mzs  #强制要求mzs在下次登录时修改密码

命令历史限制

1. 临时修改历史命令条数。只针对当前用户,退出登录后失效。

 [root@localhost ~]# export HISTSIZE=200

2. 永久修改历史命令条数。编辑配置文件,设置历史命令条数。 

 [root@localhost ~]# vim /etc/profile //设置历史命令条数记录为200条 

 HISTSIZE=200 

 [root@localhost ~]# source /etc/profile //刷新配置文件,使文件立即生效

3. 注销时自动清空历史命令 

 [root@localhost ~]# vim ~/.bash_logout 

 echo "" > ~/.bash_history

 4. 登录时自动清空历史命令 

 [root@localhost ~]# vim ~/.bashrc 

 echo "" > ~/.bash_history

二.su命令 切换用户

su  用户名  #非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换。

su - 用户名 #登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换。

密码验证

  • root 切换到任意用户,不验证密码。
  • 普通用户切换到其他用户,需要验证目标用户的密码。

exit 退回至旧的用户身份

限制使用su命令的用户

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。
  • 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su 命令进行切换。

通过修改/etc/pam.d/su 文件

  • 将允许使用su命令的用户加入wheel组。
  • 启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户

开启第二行和第六行,去掉#为开启

将用户加入wheel组

格式:gpasswd  -a  用户名  wheel

查看某个程序是否支持pam模块

可使用ls命令

例:查看su

ls /etc/pam.d | grep su

sudo 用户提权

sudo 的作用:默认是以 root 身份去执行授权的命令 

 sudo 命令 #第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码 sudo -l 可以查看当前用户获得那些 sudo 权限

sudo  -u   用户名  命令  #-u 以哪个用户的身份运行

sudo  -v  #查看相关配置信息

通过编辑 /etc/sudoers  文件

例:

mzs               ALL=(ALL)               ALL

用户     从哪个主机登录以哪个身份    允许运行哪些命令

sudo  别名

sudo别名有四种类型:

  • User_Alias(用户)
  • Runas_Alias(代表用户)
  • Host_Alias(登录主机)
  • Cmnd_Alias(命令)

例:创建用户别名MYUSERS=lucy,mike

User_Alias MYUSERS = lucy,mike

允许这两个用户使用/sbin/下的所有命令,除了reboot、poweroff、init、rm这四个命令。 (! 表示取反。! /sbin/reboot 表示不允许使用reboot命令。)

Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm

sudo  子目录

如果对所有用户进行提权都放在/etc/sudoers 一个文件中,非常不便于管理。这时可以在/etc/sudoers.d/ 下创建子目录。例如针对 测试部门的员工进行授权,可以创建/etc/sudoers.d/test;针对hr部门的员工进行授权,可以创建/etc/sudoers.d/hr。便于分类管理。

[root@localhost ~]# vim /etc/sudoers.d/test //创建子目录 

 zhangsan ALL=(root) /bin/mount 

 [root@localhost ~]# chmod 440 /etc/sudoers.d/test //设置权限,加固安全 

 [root@localhost ~]# ll /etc/sudoers.d/test 

 -r--r----- 1 root root 33 3月 7 17:51 /etc/sudoers.d/test

启用sudo日志

  • 需要启用 Default logfile 配置

  • 默认日志文件:/var/log/sudo

[root@localhost log]# visudo   //修改配置文件

Default logfile="/var/log/sudo"  //在最后一行添加 Default logfile 配置

三.终端登录安全控制

限制root只在安全终端登录

安全终端配置文件:/etc/securetty

将tty2  tty3用#注释掉        禁止root从tty2  tty3终端登录

禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或者重启后即恢复正常

touch  /etc/nologin   #禁止普通用户登录

rm -rf  /etc/nologin  #取消登录用户登录限制

网络端口扫描

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。