本文摘自PHP中文网,作者零下一度,侵删。
Linux系统由于其出色的性能和稳定性、开放源代码的灵活性和可扩展性,以及较低廉的成本,而受到计算机工业界的广泛关注和应用。其系统的安全性就必须要加强最近备战国网信通调考信息安全专业,参考系统安全加固手册,练习加固命令。
操作系统选用CentOS 7,考虑到可以随时进行“破坏性试验”,所以选择安装在VM虚拟机中,可以使用快照随时回退错误操作。
首先,为了熟悉使用CLI,设置开机不进入图形界面。之前版本是修改 /etc/inittab 文件,到CentOS 7改为如下命令:
1 2 |
|
事实上,系统进行了如下操作:
好!进入系统,不要忘了首先做好初始快照哦。
一、账号管理、认证授权
第一部分主要是对用户账号和权限进行加固,主要用到的命令主要是一些文件查看与编辑类的命令。
1、与账号、用户组、密码等有关的文件
这些文件包括:
/etc/passwd
/etc/shadow
/etc/group
简单说明一下:
/etc/passwd 记录了系统中各用户的一些基本属性,root可写,所有用户可读,查看可见如下信息:
用“:”隔开的各部分含义为:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
其中口令由于安全考虑,被记录在了 /etc/shadow 文件中,所以这里统一显示为x。
/etc/shadow 负责所有用户的密码:
与passwd文件相似,各字段也被“:”隔开,其含义为:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志(系统保留)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
/etc/group 负责用户组属性:
这个文件比较简单: 组名:口令:组标识号:组内用户列表
其中,组内用户列表中,用户间用“,”隔开。
如果想要查看一个用户的用户组信息,可以使用
1 |
|
来查看:
OK,文件说明到此结束,让我们来干些实际的吧~
2、锁定无关账户
在确认某些账户可以锁定的情况下,可以使用
1 |
|
其原理是在/etc/shadow中用户的密码字段前加入“!!”(因系统而异,有些系统是加入“*LK*”),使得用户密码改变,无法登陆
这还真是简单粗暴,不过这也意味着,只要随意修改shadow文件密码字段,即可实现账号锁定。
对应的解锁命令为
1 |
|
3、禁止超级管理员账户远程登录
在进行这方面工作之前,首先要知道一个重要内容 Linux-PAM(Linux可插拔认证模块)。
用户可以通过修改配置文件/etc/pam.conf(RedHat等系统还支持另外一种配置方式,即通过配置目录/etc/pam.d/)对认证机制进行修改,而个模块的具体配置在/etc/security下。
具体相关知识由于篇幅,可以自行百度,(推荐一篇博客,很实用)这里只对本小节内容进行说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
打开/etc/pam.d/login文件,可以看到如下内容:
其中
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
或
auth required pam_securetty.so
处于未注释状态,再查看/etc/securetty中没有pts/x(x为一个十进制整数)或已被注释掉
确保root不能通过telnet连接主机。
再检查SSH:
/etc/ssh/sshd_config
检查下列行设置是否为no并且该行未被注释:PermitRootLogin
然后重新启动ssh服务:
1 2 |
|
4、修改用户组
使用usermod -g [group/GID] [username] 修改用户组。没什么好说的,上图:
5、口令策略
(1)口令复杂度及时效
修改 /etc/login.defs,文件注释很清楚,可以自己修改:
(2)设定密码历史,不能重复使用近N次内已使用的口令(方法来自网络)
对于Redhat系列的Linux,查看/etc/pam.d/system-auth
对于Debian系列的Linux,查看/etc/pam.d/common-password
在如图所示的行后,加入remember=N
但我目前有一个疑问,remember=N这个语句的PAM验证控制类型是否应该是sufficient而不是其他类型。但求大神指导!
(3)设定连续认证失败次数超过N次锁定该账号
依然是修改/etc/pam.d/login文件的第二行,加入如下命令
1 |
|
6、设定文件目录权限
在用户登录中,passwd、shadow、group文件非常重要,需要严格管理文件权限
/etc/passwd 必须所有用户都可读,root用户可写 ?Crw-r―r― 权限值为644
/etc/shadow 只有root可读 ?Cr-------- 权限值为400
/etc/group 必须所有用户都可读,root用户可写 ?Crw-r―r― 权限值为644
使用如下命令修改权限:
1 |
|
此外还有一个重要的参数 umask ,其值确定了新建目录文件的默认权限,这里先给出我们推荐的值 027
在权限设定中 r=4;w=2;x=1 但对于umask来说,umask=777(666)-权限值,即权限值=777(666)-umask。例如,umask=002,所对应的文件和目录创建缺省权限分别为6 6 4(666-2)和7 7 5(777-2)。
为什么是这样的呢?对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。
如果使用推荐值umask=027,则对于文件来说,其权限为640,即-rw-r----- ,对目录来说,其权限为750,即-rwxr-x---
7、检查是否存在除root之外UID为0的用户
使用如下代码,对passwd文件进行检索:
1 |
|
将检索出来的不是root的用户使用userdel命令全部删除。
以上就是Linux操作系统安全加固的实例教程的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
Linux目录映射window本地目录在vmware下实现的图文详解
更多相关阅读请进入《Linux》频道 >>