由于Linux操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎,随之其安全问题也备受关注。在本文,笔者整理了Linux账号的安全管理具体实施方法。
对象OS:SunOS, Linux, AIX, HP-UX
一、设置密码最小长度
漏洞概述:为了防止密码遭到暴力破解攻击(Brute Force Attack)或口令字猜测攻击(Password Guessing),需要检查密码最小长度是否被设置,密码最小长度未设置或设置很短的情况下容易遭受攻击;
安全对策:需修改密码策略设置文件将密码最小长度设为8位以上;
安全设置方法:
- SunOS
1)使用vi编辑器打开"/etc/default/passwd"文件
2)设置为PASSLENGTH=8
- Linux
1)使用vi编辑器打开"/etc/login.defs"文件
2)设置为PASS_MIN_LEN 8
- AIX
1)使用vi编辑器打开"/etc/security/user"文件
2)设置为minlen=8
- HP-UX
1)使用vi编辑器打开"etc/default/security"文件
2)设置为MIN_PASSWORD_LENGTH=8
二、设置密码最长使用期限
漏洞概述:如未设置密码最长使用期限,一段时间后密码很可能会泄露,因而造成攻击者的非法访问;
安全对策:修改密码策略设置文件,将密码最长使用期限设置为90天(12周);
安全设置方法:
- SunOS
#cat /etc/default/passwd
MAXWEEKS=12
- Linux
#cat /etc/login.defs
PASS_MAX_DAYS 90
- AIX
#cat /etc/security/user
maxage=12
- HP-UX
#cat /etc/default/security
PASSWORD_MAXDAYS=90
三、删除不必要的账号
漏洞概述:安装OS或Package时,默认生成的账号大部分使用默认的密码,很容易被恶用于口令字猜测攻击,因此需要确认"lp, uucp, nuucp"等默认账号与可疑的特定账号的存在与否并将其删除;
安全对策:确认目前注册的账号情况并将不必要的账号删除;
安全设置方法:
- SunOS, Linux, AIX, HP-UX
i.确认未使用账号与可疑账号的存在与否
(* 参考"passwd"文件结构)
#cat /etc/passwd
ii. 检查不使用的默认账号(例如,lp, uucp, nuucp账号)
#cat /etc/passwd | grep "lp|uucp|nuucp"
- 通过Log确认
i.通过检测登录失败记录来确认未使用和可疑账号
#cat /var/adm/loginlog (SunOS, AIX, HP-UX) / #cat /var/log/loginlog (Linux)
#cat /var/adm/authlog (AIX, HP-UX) / #cat /var/log/authlog (SunOS)
#cat /var/adm/sulog (SunOS, AIX, HP-UX) / #cat /var/log/sulog (Linux)
通过以上方法确认到不必要的账号时请按以下方法进行设置
- SunOS, Linux HP-UX
i.确认注册到服务器的不必要用户账号
ii.通过userdel命令删除该用户账号
#userdel
- AIX
i.确认注册到服务器的不必要用户账号
ii.通过rmuser命令删除该用户账号
#rmuser
一般需要拦截的默认账号如下:
- adm, lp, sync, shutdown, halt, news, uucp, operator, games, gopher, nfsnobody, squid等。
四、管理员组中只保留最少的账号
漏洞概述:管理系统的root账号所属的组拥有系统运营文件的访问权限,该组如果疏忽管理,一般用户有可能会以管理员的权限非法访问系统,进行恶意修改或变更等操作,因此该组需要只保留尽可能少的账号;
安全对策:将目前注册到管理员组的不必要账号删除;
安全设置方法:
- SunOS, Linux, HP-UX
#cat /etc/group(* 请参考"group"文件结构)
- AIX
#cat /etc/group
system:!:0:root
如果管理员组存在不必要的账号,请参考如下方法进行设置
- SunOS, Linux, HP-UX
i.使用vi编辑器打开"/etc/group"文件
ii.删除注册在root组的不必要的账号(例如,删除test账号)
删除前:root:x:0:root,test;删除后:root:x:0:root
- AIX
i.使用vi编辑器打开"/etc/group"文件
ii.删除注册在system组的不必要的账号(例如,删除test账号)
删除前:system:!:0:root,test;删除后:system:!:0:root
五、禁止不存在账号的GID
漏洞概要:因疏于对账号组的管理,如存在没有账号的组时,该组的文件有可能会泄露向非相关人员;
*GID(Group Identification):多个用户为了共享特定的个体而建立的相关联的特定的组,主要用来处理账号,每个用户可以拥有多个GID。
安全对策:如存在没有组员账号的组时,需及时与管理员沟通并将其删除;
安全设置方法:
- SunOS, Linux, HP-UX, AIX
#cat /etc/group(*请参考"group"文件结构)
- Linux
#cat /etc/gshadow
*gshadow文件:"shadow"文件中,正如用户账号的密码都存储在内一样,通过系统内存在的组的密码信息存储文件可以设定组的管理员和成员,"gshadow"文件内的字段结构如下:
[组名:密码:管理员,管理员……:成员,成员……]
如存在没有成员账号的组,请按照以下方式删除
- SunOS, Linux, AIX, HP-UX
#groupdel