linux系统安全基础汇总
基本安全措施:
1)系统帐号清理:
常见的非登录用户包括bin、daemon、adm、lp、mail、nobody、apache、mysql、dbus、ftp、gdm等。
为了保证系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录:
还有一部分很少用到的用户,如news、uucp、games、gopher,这些用户可以视为冗余帐号,直接删除即可。
对于Linux服务器中长期不用的用户帐号,若无法确定是否应该删除,可以暂时将其锁定。
eg:锁定、解锁zqq的用户帐号:
如果服务器中的用户帐号已经固定,不再进行修改,可以采用锁定帐号配置文件的方法。
使用chattr 命令,分别结合"+i" 、"-i"选项来锁定、解锁文件,使用lsattr命令查看文件锁定情况。
[root@www ~]# chattr +i /etc/passwd/etc/shadow
[root@www ~]# lsattr /etc/passwd/etc/shadow
帐号文件被锁定的情况下,其内容将不允许变更。
2)密码安全控制:
为了降低密码被猜出或被暴力破解的风险,用户应养成定期更改密码的习惯。
管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户,登录时将被要求重新设置,否则将拒绝登录。
eg:将密码的有效期设为30天,chage用于设置密码时限:
3)命令历史、自动注销:
shell环境的命令机制为用户提供了极大的便利,但另一方面也给用户带来了极大的风险。
Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。
eg:设置历史命令记录条数最多只记录150条:
[root@www ~]# vim /etc/profile――适用于新登录的用户
除此之外,还可以修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。
eg:当用户退出已登录Bash环境以后,删除所记录的历史命令:
[root@www ~]# vim~/.bash_logout
Bash终端环境中,可以设置一个闲置超时时间,当超过指定的时间没有任何操作即自动注销终端。
闲置超时由变量TMOUT来控制,默认单位为秒。
当正在进行程序代码编译、修改系统配置等耗时较长的操作时,避免设置TMOUT变量,必要时使用“ unsetTMOUT”命令取消TMOUT变量。
用户切换与提权:
大多数Linux服务器不建议用户直接以root用户进行登录。
一方面可以减少因误操作而导致的破坏;另一方面也降低了特权密码在不安全的网络中被泄露的风险。
1)su命令――切换用户:
使用su命令切换为制定的另一个用户,从而具有该用户的所有权限。
eg:当前登录的是root用户,切换到zqq用户:
注解:“-”等同于“--login”或“-l”表示切换后进入目标用户的登录shell环境,若缺少此选项则仅切换身份、不切换用户环境。
为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。
实现过程:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证。
启用pam_wheel认证以后,未加入组内的其他用户将无法使用su命令,尝试进行切换时将会按照“密码不正确”来处理。
使用su命令切换用户的操作记录将会记录到安全日志/var/log/secure文件中。
2)sudo命令――提升权限:
使用sudo命令提升执行权限,不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户或其他用户的身份来执行哪些命令。
在配置文件/etc/sudoers中添加授权:
sudo机制的配置文件位于/etc/sudoers,文件的默认权限是440,需使用专门的visudo工具进行编辑。
格式:user MACHINE=COMMANDS
主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令。
用户(user):授权的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机(MACHINE):使用此配置文件的主机名称。此选项主要是方便在多个主机间共用同一份sudoers文件。
命令(COMMANDS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。
eg:授权用户zqq能够执行ifconfig命令来修改IP 地址:
查看用户自己获得哪些sudo授权,可以执行“sudo-l”命令:
授权wzx用户可以执行/sbin目录下除ifconfig、route以外的其他所有命令程序:
默认情况下,通过sudo方式执行的操作并不记录。若要启用sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加“Defaultslogfile”设置:
系统引导和登录控制:
开关机安全控制:
1.调整BIOS引导设置:
将第一优先引导设备(FirstBootDevice)设为当前系统所在磁盘;
禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disabled”
将BIOS的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。
2.禁止 Ctrl + Alt + Del 热键重启:
Linux5.2 存在三键重启:
Linux6.0系统不存在此问题。
3.限制更改GRUB引导参数:
添加到第一个title 之前:
重新开机进入 GRUB菜单时,直接按 e 将无法修改引导参数
若要获得编辑权限,必须先按p 并根据提示输入正确的GRUB密码
终端及登录控制:
Linux 服务器中,默认开启了 6个tty终端,允许任何用户进行本地登录。
1)修改登录提示信息:
系统登录的提示信息保存在/etc/issue、/etc/issue.net文件中,其中包括操作系统的类型、内核版本等。
对于生产环境中的服务器,建议修改上述配置文件,以隐藏或伪装登录提示信息。
2)减少开放的tty终端个数:
修改初始配置文件/etc/inittab,以减少开放的tty终端数。
eg:只开启tty1、tty2、tty3这三个终端:
3)禁止root用户登录:
在Linux系统中,login程序会读取/etc/securetty文件,以决定允许root用户从哪些安全终端登录系统。
eg:禁用root用户从tty3、tty4登录,可以修改/etc/securetty文件,将tty3、tty4注释掉:
4)禁止普通用户登录:
当服务器正在进行备份或调试等维护工作时,不希望再有新的用户登录系统。
只需要简单地建立/etc/nologin文件,login程序会检查/etc/nologin文件是否存在,如果存在则拒绝普通用户登录系统――root用户不受限制。
工作原理:利用shutdown延迟关机的限制,此操作只建议在服务器维护期间临时使用。
减除方法:
手动删除/etc/nologin文件或者重新启动主机,恢复正常。