首页 » 系统攻防 » Linux » 浏览内容

Linux账号安全的简单设置

447 1 发表评论

很多朋友喜欢使用root管理系统,没有专用的管理账号。
用单一root账号管理既给系统带来了风险,也给用户管理、审计带来了不便,所以应该考虑为系统管理人员及使用人员建立各自的用户账号,并对权限做相应限制。
当然针对root账号本身也需要做些设置,比如密码的复杂度、账号登陆限制(如ssh、终端登录)等。本文简单讨论下账号安全设置。
其实除了针对账号本身安全,更应该重视管理人员的安全意识、操作规范。
1.建立普通用户账号,建立管理组
建立不同的用户组,用于分配不同的权限,实现人员的分组管理并为系统管理人员及有需要的人员建立各自的用户账号,示例如下:
 a. 建立管理组manager和开发组develop
 groupadd manager
 groupadd develop

b. 建立用户jack、 harry和tom
useradd jack
useradd harry
useradd tom

c. 为用户设置初始密码123456,并强制第一次登陆修改密码
echo 123456|passwd –stdin jack
echo 123456|passwd –stdin harry
echo 123456|passwd –stdin tom
chage -d 0 jack
chage -d 0 harry
chage -d 0 tom

d. 添加用户到指定组
usermod -a -G manager jack
usermod -a -G manager harry
usermod -a -G develop tom
建立管理员组manager和普通组develop,并添加用户jack、harry到manager组,添加tom到develop组,通过组控制、分配用户权限。

2.设置密码策略
主要是密码的复杂性、可靠性等。如密码最短位数、更新周期、使用期限、保密性(加密算法、使用人员)等。主要由login.defs和Redhat开发的pam_cracklib.so模块控制。

RHEL的密码策略在/etc/login.defs中设置,需要注意的是这些配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,而pam_cracklib.so则主要控制密码复杂度。
PASS_MAX_DAYS     30#设置密码最大使用30天
PASS_MIN_DAYS       3  #设置最少要使用3天才可以修改密码,0表示不限制
PASS_MIN_LEN        12#设置密码最短12位
PASS_WARN_AGE      5  #设置过期前5天开始提醒
ENCRYPT_METHOD MD5 #设置使用MD5加密(DES/MD5/SHA256/SHA512等)
LOGIN_RETRIES        3   #登录重试次数
LOGIN_TIMEOUT      20  #登录过期时间(s)

其它选项请用man login.defs查看

3.PAM可插拔验证模块
PAM(Plugable Authentication Module,可插拔验证模块)是由Sun提出的一种认证机制。管理员通过它可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。不少应用软件都可以与PAM进行集成,当然,操作系统的登录验证过程也可以通过对PAM进行配置来进行。如指定密码复杂性、指定用户试图登录的失败次数等,以下列出对这些账号的安全性配置。

a. 指定密码复杂性
修改/etc/pam.d/system-auth配置:
限制密码最少有:2个大写字母,3个小写字母,3个数字,2个符号
文件中有一行为:password requisite pam_cracklib.so try_first_pass retry=3
在其后追加如下参数:ucredit=-2 lcredit=-3 dcredit=-3 ocredit=-2

b. 验证时若出现任何与pam_tally有关的错误则停止登录
auth required pam_tally.so onerr=fail magic_root

c. 账号验证过程中一旦发现连续5次输入密码错误,就通过pam_tally锁定此账号600秒
account required pam_tally.so deny=5 lock_time=600 magic_root reset

4.使用 sudo权限
sudo通过更严谨的管理,细化用户权限控制,包括授权的主机访问、用户账号、使用命令等,sudo要求用户使用自己账号的密码执行授权使用的命令,从而避免直接将root用户账号的密码公开给普通用户。

4.1 sudo的特点:
1.限制指定用户在指定主机上运行某些命令。
2.提供日志,记录用户使用sudo进行的操作,并在服务器日志中保存记录
3.允许系统管理员集中地管理用户的权限及使用这些权限时的服务器位置。
4. 对root权限的使用时间有严格控制,通过sudo得到root权限后,用户可以在5分钟(默认)内使用此权限,时间超出后必须重新进行密码验证。
使用rpm -qa|grep sudo查看sudo的包是否有安装,没有则需下载安装

下载地址:http://www.sudo.ws/

由于系统默认的/sbin和/usr/sbin下的命令其他用户有可执行权限,建议先使用
chmod o-x /sbin/* /usr/sbin/*取消,然后让授权用户均通过sudo执行命令
#注意:可能会出现其他问题,比如登录时显示出错,可通过以下命令修复

chmod o+x /sbin/consoletype
或者以普通用户安装软件执行如果有调用该路径则可能没有权限(待观察),建议将一些重要的命令先取消其它用户的x权限,如shutdow、halt、init等

4.2 sudo的配置
a.直接修改文件/etc/sudoers(不进行语法检测,风险较大)
b.使用特定修改命令visudo (修改后会检测语法,有错误会提示,建议使用)visudo默认的是使用vi里打开配置文件,用vi来修改文件。我们可以在编译时使用–with-editor=path指定编辑器来修改(path为指定编辑器路径)。
/etc/sudoers文件中需要配置的实例形如:
User_Alias Host_Alias=(Runas_Alias) Cmnd_Alias
1).User_Alias可以是单个或多个用户,系统组(以%标识),网络组(以+标识),(系统组常用,如%manager,即表示授权系统中manager组用户)
2).Runas_Alias 表示以这个模板定义的用户身份执行,可以是单个或多个用户,系统组(以%标识),网络组(以+标识),ID号(以#开头标识)
3).Host_Alias 表示允许该模板定义的主机执行,可以使用主机名、IP、网段
4).Cmnd_Alias 定义命令模板别名,可以是

a.命令,使用全路径
b.目录,使用全路径以/结尾
c.其他模板,允许嵌套、通配符

4.2.1 开启单独日志:

visudo添加:

Defaults logfile=”/var/log/sudo”

编辑/etc/rsyslog.conf,添加:

local2.debug/var/log/sudo

4.2.2 配置sudo文件
使用命令visudo,添加如下参数:

 Host_Alias     WEBSERVERS = 192.168.1.0/24,172.16.1.1
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
Cmnd_Alias DRIVERS = /sbin/modprobe

Cmnd_Alias ALLOW=NETWORKING,SERVICES,PROCESSES,STORAGE,SOFTWARE,DELEGATING,DRIVERS
Cmnd_Alias DENY=!/bin/bash, !/usr/bin/passwd root, !/usr/sbin/usermod -* root, !/sbin/shutdown, !/usr/bin/halt, !/sbin/init, !/usr/bin/chattr
%manager  ALL =  /bin/su, NOPASSWD:ALLOW,DENY
%developWEBSERVERS = NETWORKING,DENY

定义Host_Alias、Cmnd_Alias模板,其中DENY模板命令分别表示不允许使用sudo -i切换到root,不允许使用sudo修改root密码,不允许使用sudo添加用户到root组,不允许使用sudo执行shutdown命令,不允许执行halt命令,不允许使用sudo执行init命令,不允许使用sudo执行chattr(也可以考虑都去掉!,然后在下面引用的时候使用!DENY,建议使用,因为这样的话使用sudo -l则看不到被禁用的命令)。注意%manager定义中的/bin/su命令,这意味着manager组可以使用su切换到root且需要用登录账户的密码验证,如果放在最后则切换不需要使用密码。

确定账号已配置好、sudo权限设置好后再加,否则须去掉i属性才能更改

chmod 600 /etc/passwd
chmod 600 /etc/gshadow
chmod 600 /etc/groups
chmod 600 /etc/gshadow
chmod 600 /etc/sudoers
chattr +i /etc/sudoers

4.3 sudo基本操作
sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
sudo的常用选项:
sudo command 以root身份执行command命令
sudo -bcommand  在后台执行指定的命令
sudo -h 列出使用方法
sudo -l 列出当前用户可以执行的命令,只有在sudoers里的用户才能使用该选项。
sudo -u username#uid command以指定用户的身份执行命令,后面的用户是除root以外的用户名或uid
sudo -e file 不是执行命令,而是修改文件,相当于命令sudoedit

三、LDAP集中认证

随着系统平台的不断扩大,应用服务器也随之迅速增长,系统管理的难度、复杂度也越来越高,针对用户账号管理,后期应该考虑构建集中的身份验证系统,这样既可以减少管理成本,也可以增强账号管理的安全性、减小系统管理、维护的复杂度。但集中管理,须注意认证服务器的安全性,因为如果一个授权账号被攻破或者泄露,那么所有授权该账号登陆的服务器都会被危及到。

 全文脚本见附件,基于RHEL 6.2 x64测试….

标签:

发表评论

  •   没有头像?

关注我们,实时联系

通知公告">更多...

♥如果喜欢本站可以直接点击订阅博客
♥点击此加入晓残博客会员群加入扣群
♥本站免费提供加密解密服务点击解密
♥伙伴们喜欢本站赏个好评呗

关注微信

有偿服务

博客统计

  • 日志总数:475 篇
  • 评论数目:1466 条
  • 标签总数:40 个
  • 页面总数:8 个
  • 分类总数:17 个
  • 友链总数:24 个
  • 建站日期:2011-02-13
  • 运行天数:2120 天
  • 最后更新:2016-12-3

订阅博客