Linux账号安全的简单设置

本文发布时间: 2019-Mar-21
Linux系统中不少命令及软件的安装及管理都要求使用root权限来执行,但是由于root账号权限过大,因此经常使用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=-3ocredit=-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或者以普通用户安装软件执行如果有调用该路径则可能没有权限(待测试),建议将一些重要的命令先取消o+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_Alias1).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/sudo4.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测试....附件:http:///uploadfile/2013/0813/20130813085826752.zip


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表