实验案例
某公司新增了一台企业级服务器,已安装运行RHEL6操作系统,由系统运维部、软件开发部、技术服务部共同使用。由于用户数量众多,且使用时间不固定,要求针对账号和登录过程采取基本的安全措施。
需求描述
1.允许用户radmin使用su命令进行切换,其他用户一律禁止切换身份。
2.授权用户zhangsan管理所有员工的账号,但禁止其修改root用户的信息。
3.授权用户lisi能够执行/sbin、/usr/sbin目录下的所有特权命令,不需要密码验证。
4.所有的su、sudo操作,必须在系统日志文件中进行记录。
5.禁止使用Ctrl+Alt+Del快捷键,只开放tt3、tt5终端,为GRUB引导菜单设置密码。
1.限制使用su命令
(1)修改认证文件/etc/pam.d/su,启用pam_wheel.so认证模块。
去掉此行开头的#号
(2)将radmin用户加入到wheel组。
(3)验证除了root、radmin以外,均不能使用su命令进行切换。
补充:
1.切换用户时,使用的选项”-”等同于”--login”或”-l”,表示切换用户后进入目标用户的登录Shell环境(切换到目标用户的宿主目录),若缺少此选项则仅切换身份、不切换用户环境。
2.使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中。
2.设置sudo授权
(1)授权用户zhangsan使用useradd、userdel、passwd、usermod命令,但禁止其执行”passwd root”、”usermod * root”操作。
/etc/sudoers文件的默认权限为440,所以需要执行”:w!”命令强制保存。
可以使用专门的visudo工具进行编辑。
授权记录的基本格式
User MACHINE=COMMANDS(用户 主机=命令)
具体含义:
User:授权的用户名,授权一个组可以采用”%组名”的形式。
MACHINE:使用此配置文件的主机名,可以方便多个主机间共用同一份sudoers文件。
COMMANDS:允许授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以”,”分隔。可以使用通配符“*”,取反符号“!”。
(2)授权lisi用户使用/sbin/*、/usr/sbin/*命令,添加NOPASSWD,以取消验证。
(3)添加”Defaults logfile”配置行,以启用sudo日志。
注意:通过sudo方式执行的操作并不记录,若要启用sudo日志记录,应在/etc/sudoers文件中增加”Defaults logfile”设置。
(4)分别以zhangsan、lisi用户登录,验证授权的sudo 操作,并查看日志。
验证用户zhangsan权限
验证用户lisi权限
查看sudo日志
3.限制引导及登录过程
(1)禁止ctrl+alt+del快捷键(防止主机以外重启)
需要重启才生效
(2)禁用tty1、tty2、tty4、tty6这四个终端
控制tty终端开启数量的配置文件有两个
控制终端配置文件:
/etc/init/tty.conf//控制tty终端的开启
/etc/init/start-ttys.conf//控制tty终端的开启数量、设备文件
/etc/sysconfig/init//控制tty终端的开启数量、终端颜色
重新读取文件,以更新配置,可以不用重新启动系统。
(3)在grub.conf文件中的第一个title行之前添加密码配置。
“grub-md5-crypt”可以生成经过MD5算法加密的密码字符串,安全性更好。
将密码配置项添加到第一个title之前
注意:为GRUB设置密码时,”--md5...”部分可以替换为明文的密码字符串,但是按选型稍差。
(4)重启后进入到GRUB菜单界面,验证直接按e键已无法编辑引导参数。
知识点补充:
1.文件锁定
chattr +i 文件名 //锁定文件
chattr -i 文件名 //解锁文件
lsattr 文件名 //查看文件状态
例如:
锁定账号配置文件,就不能再添加、更改账号。
2.密码安全控制
修改配置文件/etc/login.defs,可以将密码有效期设为30天(适用于将要新建的用户)。
设置已有账号密码的有效期
设置用户下次登录时必须更改密码(适用于批量创建的用户)
3.命令历史
Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。
命令:export HISTSIZE=历史命令条数 //适用于当前用户
历史命令条数为15
修改配置文件/etc/profile,可以影响系统中的所有用户//适用于新登陆的用户
当用户退出已登录的bash环境后,自动清空历史纪录。
4.闲置超时
命令:设置超时时间,指定时间没有任何输入就自动注销 //适用于当前用户
修改配置文件/etc/profile,可以影响所有用户//适用于所有用户
注意:闲置超时由变量TMOUT来控制的,默认单位为秒。
必要时可以执行”unset TMOUT”取消TMOUT变量设置。
5.sudo命令--提升执行权限
典型的sudo配置记录中,每一行对应一个用户或组的sudo授权配置。特殊情况:
(1)wheel组的用户不需要验证密码即可执行任何命令,可以执行:
Vim /etc/sudoers
用户radmin属于wheel组,所以可执行任何命令。
(2)当使用相同授权的用户较多时,或者授权的命令较多时,可以采用集中定义的别名。
例如:
含义:允许用户fjc、jerry、tom在主机smtp、pop中执行rpm、yum命令
注意:User_Alias、Host_Alias、Cmnd_Alias为关键字
OPERATORS(用户)、MAILSVRS(主机)、PKGTOOLS(命令)分别定义为别名,必须大写。
6.禁止root用户登录
在linux系统中,login程序会读取/etc/securetty文件,以决定允许root用户从哪些终端登录系统。若要禁止root用户从指定终端登录,从该文件中注释掉对应的行即可。例如:
禁止root用户从tty5和tty6终端登录
7.禁止普通用户
只需要建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在则拒绝普通用户登录系统(root用户不受限制)。
8.弱口令探测(john the ripper)
(1)下载并安装
注意编译所在的路径
John the Ripper的官方网站是http://www.openwall.com/john/
查看是否安装成功
在子目录run/生成john程序
(2)检测弱口令
检测结果,可以按ctrl+c强制终止
结合选项”--show”查看破解出的账户列表
9.网络扫描—NMAP
(1)安装NMAP包
(2)扫描语法及类型
nmap [扫描类型] [选项] 扫描目标
注意:扫描目标可以是主机名、IP地址、或网络地址等,多个目标用空格分隔;
常用的选项有 -p:指定扫描的端口
-n:禁用方向DNS解析(加快扫描速度)
常用的扫描类型
-sS,TCP SYN扫描(半开):只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT,TCP 连接扫描(全开):这是一个完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听,否则认为目标端口并为开放。
-sF,TCP FIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。
-sU,UDP扫描:探测目标主机提供了哪些UDP服务。
-sP,ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0,跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。