您的位置:首页 > 运维架构 > Linux

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

2012-12-11 14:14 399 查看
一个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认证控制用户登录地点:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: