linux没有设置账号那么账号是什么,Linux账号安全的简单设置

工作中发现不少同事喜欢使用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 --stdinharry

echo 123456|passwd --stdin tom

chage -d 0jack

chage -d 0harry

chage -d 0tom

d.添加用户到指定组

usermod -a -G manager jack

usermod -a -G manager harry

usermod -a -Gdevelop 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_DAYS30#设置密码最大使用30天

PASS_MIN_DAYS       3#设置最少要使用3天才可以修改密码,0表示不限制

PASS_MIN_LEN12#设置密码最短12位

PASS_WARN_AGE      5#设置过期前5天开始提醒

ENCRYPT_METHOD MD5#设置使用MD5加密(DES/MD5/SHA256/SHA512等)

LOGIN_RETRIES        3#登录重试次数

LOGIN_TIMEOUT      20#登录过期时间(s)

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

0818b9ca8b590ca3270a3433284dd417.png

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=-3ocredit=-2

b.验证时若出现任何与pam_tally有关的错误则停止登录

auth required pam_tally.soonerr=failmagic_root

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

account required pam_tally.so deny=5lock_time=600magic_root reset

0818b9ca8b590ca3270a3433284dd417.png

4)使用sudo权限

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

4.1 sudo的特点:

1.限制指定用户在指定主机上运行某些命令。

2.提供日志,记录用户使用sudo进行的操作,并在服务器日志中保存记录

3.允许系统管理员集中地管理用户的权限及使用这些权限时的服务器位置。

4. 对root权限的使用时间有严格控制,通过sudo得到root权限后,用户可以在5分钟(默认)内使用此权限,时间超出后必须重新进行密码验证。

使用rpm -qa|grep sudo查看sudo的包是否有安装,没有则需下载安装

由于系统默认的/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且需要用登录账户的密码验证,如果放在最后则切换不需要使用密码。

0818b9ca8b590ca3270a3433284dd417.png

确定账号已配置好、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的常用选项:

sudocommand以root身份执行command命令

sudo -bcommand在后台执行指定的命令

sudo -h 列出使用方法

sudo -l 列出当前用户可以执行的命令,只有在sudoers里的用户才能使用该选项。

sudo -u username#uidcommand以指定用户的身份执行命令,后面的用户是除root以外的用户名或uid

sudo -e file 不是执行命令,而是修改文件,相当于命令sudoedit

0818b9ca8b590ca3270a3433284dd417.png

三、LDAP集中认证

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值