分类: LINUX
2012-04-06 13:14:27
v 帐号安全基本措施
Ü 删除不使用的帐号、禁用暂时不使用的帐号
Ü 检查程序用户的登录Shell是否异常
Ü 强制用户定期修改密码(设置密码有效期)
î /etc/login.defs文件、chage命令
Ü 增强普通用户的密码强度
î /etc/pam.d/system-auth文件中的minlen参数
Ü 减少记录命令历史的条数
î 环境变量 HISTSIZE
Ü 设置在命令行界面中超时自动注销
î 环境变量 TMOUT
使用su切换用户身份v su命令
Ü 用途:Substitute User,切换为新的替换用户身份
Ü 格式:su [-] [用户名]
[tom@localhost ~]$ su -
口令:
[root@localhost ~]# whoami
Root
[root@localhost ~]# su - tom
[tom@localhost ~]$ pwd
/home/tom
[root@localhost ~]# su tom
[tom@localhost root]$ pwd
/root
• 缺省用户名时,表示切换为root用户
• root用户可切换为任意普通用户,无需提供密码;而普通用户切换为其他用户时,需要提供目标用户的密码
• “-”可选项相当于“--login”,表示使用目标用户的登录shell(Login Shell)环境,工作目录、PATH变量等都会做相应改变
应用示例:• 仅允许tom用户使用su命令切换身份
[root@localhost ~]# vi /etc/pam.d/su
……
auth required pam_wheel.so use_uid --------去掉此行行首的“#”
……
[root@localhost ~]# gpasswd -a tom wheel -------------------将tom用户加入wheel组
使用sudo提升执行权限v sudo机制
Ü 用途:以可替换的其他用户身份执行命令,若未指定目标用户,默认将视为root用户
Ü 格式:sudo [-u 用户名] 命令操作
[root@localhost ~]# sudo -u tom /bin/touch /tmp/sudotest.file
[root@localhost ~]# ls -l /tmp/sudotest.file
-rw-r--r-- 1 tom tom 0 05-26 09:09 /tmp/sudotest.file
l su命令切换用户身份时的局限性(需要知道目标用户的密码),
l 要想正常使用sudo命令,需要有目标用户的授权(由管理员设置),
l 通用户使用sudo执行命令时会要求提供自己的密码进行验证;
l sudo机制的作用主要在于 —— 能够允许经过授权的个别普通用户以root权限执行一些授权使用的管理命令。
l 而需要某个普通用户以另一个普通用户权限执行命令时,一般不建议使用sudo机制,否则容易造成帐号冒用等问题
l root用户默认可以使用sudo命令以任何用户身份执行任何命令,但是其他用户需要使用sudo执行命令时,必须经过管理员的授权设置……
l 配置文件:/etc/sudoers
a) 授权哪些用户可以通过sudo方式执行哪些命令
l 以下2种方法都可以编辑sudoers文件
a) visudo
b) vi /etc/sudoers
l 使用visudo或者vi都可以打开”/etc/sudoers“文件进行编辑
l 使用”visudo“方式时将间接调用vi编辑器并打开”/etc/suders“配置文件,修改完毕后可以直接使用末行命令”:w“进行保存
l 使用”vi /etc/sudoers“方式时则是直接使用vi编辑器,将无法直接保存(必须使用”:w!“强制保存),因为sudoers文件的权限为440
l 在sudoers文件中的基本配置格式
用户 主机名列表=命令程序列表
v 针对root用户的sudo配置特例
[root@localhost ~]# grep "^root" /etc/sudoers
root ALL=(ALL) ALL
• 可以使用”%组名“的形式同时为一个组的用户授予权限
• 主机名列表指的是本机的不同名称,而不是远程登录的客户机,因此一般均使用”localhost”
• 命令列表部分可以用逗号分隔多条命令,每条命令建议都使用绝对路径
应用示例1:• 需求描述:
• 允许用户mikey通过sudo执行/sbin、/usr/bin目录下的所有命令,但是禁止调用ifconfig、vim命令
• 授权wheel组的用户不需验证密码即可执行所有命令
• 为sudo机制增加日志功能
root@localhost ~]# visudo
Defaults logfile="/var/log/sudo"
……
mikey localhost=/sbin/*,/usr/bin/*,!/sbin/ifconfig eth0,!/usr/bin/vim
%wheel ALL=(ALL) NOPASSWD: ALL
[root@localhost ~]# vi /etc/syslog.conf
local2.debug /var/log/sudo
• 若没有mikey用户则需要先建立该用户
• 禁止普通用户通过sudo执行ifconfig、vim命令是为了防止用户修改网络配置、用vim修改其他系统文件等
• 设置命令列表时可以使用通配符”*“,也可以使用感叹号”!”表示取反的意思,“NOPASSWD”表示不需要验证用户的密码
• 其中syslog.conf文件中的local2表示sudo程序使用的日志设备类别
• 测试sudo配置的效果
• 查看允许执行的命令列表(-l选项)
• 通过sudo执行命令(sudo 命令行)
• 清除用户密码验证的时间戳(-k)
• 重新校验密码(-v)
为sudo配置项定义别名• 关键字:User_Alias、Host_Alias、Cmnd_Alias
• 在sudo配置行中,可以调用已经定义的别名
[root@localhost ~]# visudo
……
User_Alias OPERATORS=jerry,tom,tsengyia
Host_Alias MAILSERVERS=mail,smtp,pop
Cmnd_Alias SOFTWARE=/bin/rpm,/usr/bin/yum
OPERATORS MAILSERVERS=SOFTWARE
• 注意设置的别名名称要使用大写字母
应用示例2:• 设立组帐号“managers”,授权组内的各成员用户可以添加、删除、更改用户帐号
• 推荐步骤:
• 创建管理组帐号“managers”
• 将管理员帐号(如tom、jerry)加入到managers组
• 配置sudo文件,针对managers组放开对useradd、userdel等用户管理命令的权限
• 使用tom帐号登录后,验证是否可以添加、删除用户
• gpasswd的“-M”选项可以同时将多个用户添加到指定的组()
[root@localhost ~]# groupadd managers
[root@localhost ~]# gpasswd -M tom,jerry managers
[root@localhost ~]# visudo
Cmnd_Alias USERADM = /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod
%managers localhost=USERADM
文件系统级安全控制v 合理规划系统分区
Ü /boot、/home、/var、/opt 等建议单独分区
v 文件系统(分区)的挂载选项
Ü mount命令的 -o nosuid、-o noexec 选项
v 锁定文件的i节点
Ü chattr命令、lsattr命令
v mount命令的nosuid、noexec挂载选项的作用,
v chattr命令的作用,锁定(+i)、解锁(-i)文件的操作,可附加介绍一下“+a”选项的作用(只能追加内容),例如:
[root@localhost ~]# chattr +i /etc/passwd
[root@localhost ~]# useradd newuser
useradd:无法打开密码文件
[root@localhost ~]# lsattr /etc/passwd
----i-------- /etc/passwd
安全使用应用程序和服务
v 关闭不需要的系统服务
Ü 使用ntsysv、chkconfig管理工具
v 禁止普通用户执行init.d目录中的脚本
Ü 限制“other”组的权限
v 禁止普通用户执行控制台程序
Ü consolehelper控制台助手
Ü 配置目录:/etc/security/console.apps/
[root@localhost ~]# cd /etc/security/console.apps/
[root@localhost ~]# tar zcpvf conpw.tgz poweroff halt reboot --remove
chattr命令
v 作用:设置ext2文件系统上的文件或目录的隐藏权限
v 语法:
Ü chattr [+-=] [ASacdistu] [文件或目录名称]
v 选项说明:
Ü A:Atime,不修改文件或目录的最后访问时间;
Ü S:Sync,同步数据到磁盘;作用与D(仅对目录)选项相反
Ü a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件;如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件
Ü i:Immutable,系统不允许对这个文件进行任何的修改;如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件
Ü d:No dump,在进行文件系统备份时,dump 程序将忽略这个文件
Ü C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘
Ü s:Secure Delete,让系统在删除这个文件时,使用0 填充文件所在的区域
Ü u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件
lsattr命令v 作用:显示ext2文件系统上的文件或目录的隐藏权限
v 语法:
Ü lsattr [-RVadv] [文件或目录]
v 常用选项说明:
Ü -R:递归显示目录及其子目录中的文件属性
Ü -a:显示指定目录中的所有文件或目录的属性,包括.和..目录
Ü -d:显示目录自身的属性,而非其内部的文件的属性
去除程序文件中非必需的set位权限Ü set uid、set gid的用途?有何隐患?
Ü 如何找出设置了set位权限的文件?
[root@localhost ~]# ls -lh $(find / -type f -perm +6000)
或者
[root@localhost ~]# find / -type f -perm +6000 -exec ls -lh {} ;
• 展示查找系统中使用了set位权限的两种方法,其中核心的部分为find命令中-perm选项的使用:
-perm +6000 表示不检查基本权限(000),只要附加权限中匹配任何一位(6包含了4、2)即满足条件
• 结合“ls -lh”命令是为了同时显示出结果文件的详细属性
• 两种方法的区别在于:前者使用了Shell的命令替换操作( $() 符号或者反撇号 ``),只有在find命令执行完毕后才能看到结果;而后一种方法则每找到一条结果就立即显示出来了
应用示例:• 监控系统中新增了哪些使用set位权限的文件
• 推荐步骤:
• 建立系统正常状态下的suid/sgid文件列表
• 查找当前系统中所有的suid/sgid文件列表
• 比较前后结果,输出新增加的内容
• 编写脚本文件实现比对功能
• 可以结合cron设置计划任务定期进行检查
#!/bin/bash
OLD_LIST=/etc/sfilelist
for i in `find / -type f -a -perm +6000`
do
grep -F "$i" $OLD_LIST > /dev/null
[ $? -ne 0 ] && ls -lh $i
done
开关机安全控制v 服务器的物理安全控制
v 调整BIOS引导设置
Ü 修改启动顺序
Ü 设置管理密码
v 禁用Ctrl+Alt+Del重启热键
Ü 修改/etc/inittab文件,并执行“init q”重载配置
GRUB引导菜单加密v 加密引导菜单的作用
Ü 修改启动参数时需要验证密码
Ü 进入所选择的系统前需要验证密码
v 在grub.conf文件中设置密码的方式
Ü password 明文密码串
Ü password --md5 加密密码串
v 密码设置行的位置
Ü 全局部分(第一个“title”之前)
Ü 系统引导参数部分(每个“title”部分之后)
v grub.conf文件中的加密配置行示例
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
password --md5 $1$Qq15d$bEjy8VeMCrNcIJCEESqyY/
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
password 123456
root (hd0,0)
……
v 获得MD5加密格式的密码字符串
Ü grub-md5-crypt
v GRUB菜单加密的实际操作过程:先生成加密密码串,然后修改grub.conf文件(可同时设置明文、密文两种形式的密码),重启后演示在GRUB菜单中如何使用密码(按“p”键)
v 依次提出2个问题:
如果忘记了GRUB密码进不去系统怎么办? —— (光盘修复)
如果BIOS密码也忘记了,无法设置光盘优先启动怎么办? —— (CMOS放电)
本地终端及登录控制v 立即禁止普通用户登录
Ü /etc/nologin
v 设置启用哪些tty终端
Ü /etc/inittab
v 控制允许root用户登录的终端
Ü /etc/securetty
v 更改系统登录提示,隐藏系统版本信息
Ü /etc/issue、 /etc/issue.net
v pam_access认证控制
Ü 配置文件:/etc/pam.d/login
v account required pam_access.so
Ü 配置文件:/etc/security/access.conf
v 权限 用户 来源
[root@localhost ~]# vi /etc/security/access.conf
……
- : ALL EXCEPT root : tty1 ----------禁止普通用户从tty1终端登录
- : root : 192.168.1.0/24 172.16.0.0/8 -------禁止root用户从指定网段远程登录
• pam_access认证控制的作用及相关配置文件,启用该功能需要设置这两个文件
• login文件中添加的配置记录用于启用该认证模块;access.conf文件中可以对各用户设置登录访问控制策略
• 权限使用“+”或者“-”,分别表示允许、拒绝;用户部分可以使用用户名或者”@组名“;来源可以是终端名、网络地址、IP地址等