账号安全控制
基本安全措施
系统账号的清理 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、ftp等。 usermod -s /sbin/nologin yysn
锁定长期不使用的账号 usermod -L test1 锁定用户账号方法一 passwd -l test2 锁定用户账号方法二 usermod -U test1 解锁用户账号方法一 passwd -u test2 解锁用户账号方法二
删除无用账号 userdel test1 (完全清理继续用userdel -rf test1) userdel -r test2
锁定账号文件passwd、shadow chattr +i /etc/passwd /etc/shadow 锁定文件,包括root也无法修改 chattr -i /etc/passwd /etc/shadow 解锁文件 lsattr /etc/passwd /etc/shadow 查看文件状态属性 密码安全控制 设置密码有效期 chage -M 60 yysn 这种方法适合修改已经存在的用户
vim /etc/login.defs PASS_MAX_DAYS 30 这种适合以后添加新用户 要求用户下次登录时修改密码 chage -d 0 yysn强制要求用户下次登陆时修改密码
命令历史、自动注销 命令历史限制: 减少记录命令的条数 注销时自动情况命令历史
减少记录命令的条数 vim /etc/profile进入配置文件修改限制命令条数。适合新用户 HISTSIZE=200修改限制命令为200条,系统默认是1000条profile source /etc/刷新配置文件,使文件立即生效
export HISTSIZE=200适用于当前用户 source /etc/profile source /etc/profile刷新配置文件,使文件立即生效
vim ~/.bash_history进入文件,删除所有记录
注销时自动清空命令: vim ~/.bashrc echo “” >~ /.bash_history
终端自动注销 闲置600秒后自动注销: vim .bash_profile进入配置文件 export TMOUT=600全局声明超过600秒闲置后自动注销终端 source bash_profile echo $TMOUT 查询自动注销时间
export TMOUT=600 如果不在配置文件输入这条命令,那么是对当前用户生效
vim .bash_profile #export TMOUT=600注释掉这条命令,就不会自动注销了
用户切换与提权(加入wheel组)
su命令—切换用户
1.用途及用法 用途:Substitute User,切换用户 格式: su - 目标用户(横杠“-”代表切换到目标用户的家目录) root - - ->任意用户,不验证密码 普通用户- - ->其他用户,验证目标用户的密码带“-”表示将使用目标用户的登录shell环境
查看su操作记录 安全日志文件:/var/ log/secure
限制su命令用户 默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如 ropt)的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于 pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证。 在/etc/pam.d/su文件里设置禁止用户使用su命令 vim /etc/pam.d/su 2 # auth sufficient pam_ rootok.so 6 #auth required pam_ wheel.so use__uid a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。 b)两行都注释也是运行所有用户都能使用su命令,但root’下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为o的用户,即root用户能够直接通过认证而不用输入密码。)c)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令 d)如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。 gpasswd -a zhangsan wheel #添加授权用户 zhangsan正在将用户"zhangsan"加入到"wheel"组中 grep wheel /etc/group #确认 wheel组成员wheel?10 : zhangsan vim /etc/pam.d/su 取消第六行的注释,启用命令 sudo机制提升权限 使用sudo机制提升 visudo 或vi /etc/sudoers(此文件的默认权限为440,[保存退出时必须执行":wq!“命令来强制操作) 语法格式: 用户 主机名=命令程序列表 用户 主机名=(用户) 命令程序列表 用户:直接授权指定的用户名,或采用”%组名"的形式(授权一个组的所有用户)。主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机 用户:用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号",“进行分隔。ALL则代表系统中的所有命令 示例 Tom ALL=/ sbin/ifconfig Jerry localhost=/sbin/* , ! /sbin/reboot, ! /sbin/poweroff#通配符"太"表示所有、取反符号”!"表示排除 wheel ALL=NOPASSWD:ALL #表示wheel组成员无需验证密码即可使用sudo执行任何命令 Mike ALL=(root) NOPASSWD: /bin/kill,/usr/bin/killall gpasswd -M lisi wheel##李四加入wheel组
sudo [参数选项]命令
-l列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v验证用户的时间戳;如果用户运行sudo,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作;用-v可以跟踪最新的时间戳;
-u指定以以某个用户执行特定操作;
-k删除时间戳,下一个sudo命令要求用求提供密码。
案例一用户别名 使用关键字User_Alias、Host_ Alias、Cmnd Alias来进行设置别名(别名必须为大写) Host_Alias MYHOSTS = kgc,localhost User_Alias MYUSERS =zhangsan , wangwu, lisi2
User_Alias USERS=Tom, Jerry ,Mike Host_Alias HOSTS=localhost, bogon Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel USERS HOSTS=CMNDS
案列二用户别名 例如,以下操作通过别名方式来添加授权记录,允许用户wangliu、wangliu组、useradmin组并且定义命令别名。 User_Alias USERADMIN = wangliu, 8wangliu ,8useradmin Cmnd_Alias USERADMINCMND=/usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd, !/usr/bin/passwd root取反的优先级最高 USERADMIN ALL=(root) NOPASSWD:USERADMINCMND
验证别名以及命令路径
sudo passwd root测试 解决方法 Cmnd_Alias US8RADNINCMND =/usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd[A-za-z]*,! /usr/ bin/passwd root
启用sudo操作日志 visudo Defaults logfile = " /var/log/sudo" sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加"Defaults logfile"设置如果已经启用 sudo日志,则可以从/var/log/sudo文件中看到用户的 sudo操作记录。 注:启用日志: Defaults logfile=/var/ log/ sudo 另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤 sudo -l#查看当前用户获得哪些sudo授权
PAM安全认证
PAM概念
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险;为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。 什么是PAM? PAM(Pluggable Authentication Modules)可插拔式认证模块 是—种高效而且灵活便利的用户级别的认证方式; 也是当前Linux服务器普遍使用的认证方式。 PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用 系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略
PAM认证原理 PAM认证一般遵循的顺序: Service(服务)–>PAM(配置文件)–> pam_*.so;
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于letc/pam.d下),最后调用认模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看letc/pam.d/。 ls /etc/pam.d/ | grep su
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。
开关机安全控制—grup2引导
限制更改GRUB引导参数 通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。 方法一: grub2-mkpasswd-pbkdf2#根据提示设置GRUB菜单的密码 PBKDF2 hash of your password is grub . pbkd…#省略部分内容为经过加密生成的密码字符串 cp / boot/grub2/ grub.cfg / boot/grub2lgrub.cfg.bak cp letclgrub.d/00_header letclgrub.d/ 0o_header.bakvim letcl grub.d/ 0o_header cat <<EOF set superusers=“root”#设置用户名为root password pbkdf2 root grub .pbkd2…#设置密码,省略部分内容为经过加密生成的密码字符串EOF grub2-mkconfig -o /boot/grub2/grub.cfg#生成新的grub.cfg文件 重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。 方法二:一步到位 grub2-setpassword
终端及登录控制
限制root只在安全终端登录 禁止普通用户登录:当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时候只需要简单地建立/etc/nologin 文件即可。 login 程序会检查/etc/nologin 文件是否存在, 如果存在,则拒绝普通用户登录系统(root 用户不受限制)。 touch /etc/nologin #除root以外的用户不能登录了。 此方法实际上是利用了shutdown 延迟关机的限制机制,只建议在服务器维护期间临时使用。当手动删除/etc/nologin文件或者重新启动主机以后,即可恢复正常。 vi /etc/securetty
虚拟机内 远程不可 虚拟控制台的选择可以通过按下Ctrl+Alt键和功能键Fn(n=1~6)来实现(tty1-tty6) tty1 图形界面 tty2-6 字符界面,注释 tty4,root 就不能登录。
使用last命令显示用户或终端登录情况。 Linux命令last 该命令用来列出口前与过去登录系统的用户相关信息。指令英文原义: show listing of last logged in users执行权限:有些需要特殊权限 指令所在路径: /usr/ bin/ last 执行last指令时,它会读取位于/var/log目录下名称为wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。默认是显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。 utmp文件中保存的是当前正在本系统中的用户的信息。 wtmp文件中保存的是登录过本系统的用户的信息。
系统弱口令检测-John the Ripper
John the Ripper,简称为JR,通过对shadow文件的口令分析,可以检测密码强度。 官方网站: http://www.openwall.com/john/。 JohntheRipper是一-款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。 解压工具包: cd / opt tar.zxf.john-1.8.o.tar.gz #安装软件编译工具: yum install -y gcc gcc-c++ make #切换到src子目录: cd /opt/john-1.8.0/src #进行编译安装: make clean linux-x86-64 #准备待破解的密码文件: cp /etc/shadow /opt/shadow.txt #执行暴力破解: cd /opt/john-1.8.0 /run ./john /opt/shadow.txt #查看已破解出的账户列表: ./john --show /opt/ shadow .txt
使用密码字典文件:
john. pot #清空己破解出的账户列表,以使便重新分析 ./john --wordlist=./password.1st /opt/ shadow.txt #使用指定的字典文件进行破解
网络端口扫描
SYN建立链接工ACK确认 FIN结束断开 PSH传送 0 数据缓存上层应用协议 RST重置 URG紧急 rpm -qa l grep nmap查看nmapyum install -y nmap nmap命令常用的选项和描类型-p:指定扫描的端口。 -n:禁用反向DNS解析(以加快扫描速度) -sS:TCP的SYN扫描(半开扫描),只向目标发出sYn数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 -sT:TCP连接扫描,这是完整的rce扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。 -sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对srw数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 -su: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 -sP: ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 -P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
示例: #分别查看本机开放的TCP端口、UDP端口 nmap -sT 127.0.0.1 nmap -sU 127.0.0.1 #检测192.168.49.0/24网段有哪些主机提供HTTP服务 nmap -p 80 192.168.80.0/24 #检测192.168.49.0/24网段有哪些存活主机 nmap -n -sP 192.168.80.0/24
再扩展 通过pam模块来防止暴力破解ssh l[root@benet ~]# vim /etc/pam.d/ sshd在第一行下面添加一行: auth requiredpam_tally2.so deny=3unlock_time=600 even_deny_root root_unlock_time=1200说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁 手动解除锁定: 查看某一用户错误登陆次数:pam_tally2 --user 例如,查看work用户的错误登陆次数:pam_tally2 --user work 清空某一用户错误登陆次数:pam_tally2 —-user --reset 例如,清空work用户的错误登陆次数,pam_tally2 —-user work --reset
总结
账号基本安全措施: 系统账号清理、密码安全控制、命令历史清理、自动注销用户 切换与提权: su、sudo 开关机安全控制: BIOS引导设置、禁止Ctrl+Alt +Del快捷键、GRUB菜单设置密码 终端控制: John the Ripper工具 、namp命令
|