一个linux工程师应该知道的系统安全常规优化

1、 用户账号安全优化:

A:基本安全措施:

删除系统中不使用的用户和组:

确认程序和服务用户的登陆shell不可用:

限制用户的密码有效天数(最大天数):vi /etc/login.defs

指定用户在下次登录时必须修改密码:

限制用户密码的最小长度:

限制记录命令历史的条数:

设置闲置超时自动注销终端(重启生效)

B:使用SU切换用户身份:

Su的基本语法格式:su [-] 用户名

Su权限设置的用法案例:

允许zhangsan可以使用su命令切换到root,禁止其他用户使用su命令切换用户身份:

将允许使用su的用户加入wheel组:

修改PAM设置,添加pam_wheel认证:

验证su的限制效果:

C、sudo的使用:

(1)/etc/sudoers配置文件:

使用visudo命令编辑/etc/sudoers文件,其常见的配置行语法格式如下:

User MACHINE=COMMANDS

用户(user):授权指定的用户,使用”%组名”可以授权一组的所有用户;主机(machine):授权用户可以在那些主机上使用,用于多主机共享sudo配置文件;命令(commands):授权用户通过sudo调用的命令,填写命令的完整路径,使用多个命令时“,”隔开。

例如:

授权用户jerry可以以root权限执行ifconfig命令:使用visudo 命令

通过别名定义一组命令(加载服务、关闭进程),并授权用户tom和jerry使用该组命令。

授权wheel组的用户不需要验证密码即可执行所有命令:

授权用户mikey可以通过sudo调用/sbin/和/usr/bin/目录下的所有命令,但是禁止调用/sbin/ifconfig命令修改eth0的参数,禁止调用/usr/bin/vim命令以防止修改系统文件:

为sudo启用日志功能,将记录写入/var/log/sudo文件中:vi /etc/syslog.conf

(2)使用sudo执行命令:当第一次使用sudo时会要求输入当前用户的密码进行验证,之后后设置一个timestamp时间戳(默认为5分钟),只要再次使用sudo的间隔时间小于该时间,则无需输入密码。

Sudo –l 当前可用命令查询

Sudo –k 清除时间戳

Sudo –v 重新更新时间戳

(3)使用案例:

因系统管理工作繁忙,需要将用户账户管理工作交给专门的管理组成员负责,设立组账户managers,授权组内所有用户可以添加、删除、更改用户账户。

一、 创建组,将管理员zhangsan、lisi加入到组:

二、 配置sudo文件:

三、 验证:

2、 文件和文件系统安全优化:

A、文件系统层次的安全优化:

合理规划系统分区:

对磁盘分区做好合理的规划、提高系统的稳定性,不同的需求制定不同的分区方案、一般而言以下目录应该划分为独立分区:

/boot分区200M以上,以备日后升级;/home分区;/var分区读写最为平凡、一般存放日志、邮件、运行状态文件;/opt分区及/usr分区用于安装软件。

通过挂载选项禁止执行set位程序、二进制程序:

锁定不希望更改的系统文件:

使用chattr +i使文件不能被更改、删除、重命名、建立硬链接

通常在允许的情况下可以锁定services、passwd、grub.conf,禁止添加用户、添加服务、修改启动文件:

B、应用程序和服务的安全优化:

(1)新添加服务是应注意根分区空间的使用、避免出现/分区用尽。

关闭不必要的服务、打开一个服务就等开启一个或多个端口,增加***风险。确保开启的服务都在使用、都有防火墙保护。可使用chkconfig和ntsysv命令工具来管理。

(2)禁止普通用户执行init.d目录的脚本:

去除普通用户对/etc/init.d/目录中文件的读写执行权限

(3)禁止普通用户执行控制台程序:

Linux系统中、普通用户可运行一些如setup、serviceconf、halt、reboot等程序,该功能是由confolehelper(控制台助手)提供。普通用户执行系统程序是否需要root密码是根据/etc/security/console.apps/目录的配置文件决定的。

禁止普通用户执行poweroff、halt、reboot控制台程序(压缩后移除文件)

(4)去除程序文件中的非必须的set-uid或set-gid附加权限:

查找系统中设置了set-uid或set-gid权限的文件,并结合“-exec”选项显示这些文件的详细权限属性:

去掉程序文件的suid/sgid位权限:

编写脚本,检查系统中新增的带有suid或者sgid位权限的程序文件:

(1) 在系统处于“干净”状态(没有设置不当set位权限的文件)时,建立合法的suid/sgid文件的列表,作为是否有新增可疑文件的比较依据:

(2) 建立chksfile脚本文件,与sfilelist比较,输出新增的带suid/sgid属性的文件:

(3) 执行chksfile脚本,检查是否有新增suid/sgid文件:

3、 系统引导和登陆安全优化:

A、 关机安全控制、grub引导菜单加密:

(1) 调整BIOS引导设置、防止用户通过Ctrl+Alt+Del热键重新启动系统:

将第一优先引导设备(Fist Boot Device)设为当前系统所在硬盘,其他引导设置为“Disabled”为BIOS设置管理员密码,安全级别调整为“setup”,注销热键。

(2) 在grub.conf文件中设置明文密码及设置MD5加密的密码:

B、终端及登录控制:

(1) 即时禁止普通用户登录:

通过建立nologin文件禁止普通用户登录系统:

(2) 控制服务器开发的tty终端:

(3) 控制允许root用户的登录的tty终端:

(4) 更改系统登录提示,隐藏内核版本信息:

(5) 使用pam_access认证控制用户登录地点: