Linux系统安全及应用

前言

linux系统是以安全、高效稳定得以广泛的应用,linux系统中提供了多种机制来确保账号的安全使用

一、账号安全控制

1.账号安全措施

1.1 系统账号清理

  • 将非登录用户的 Shell 设为 /sbin/nologin
  • 锁定长期不使用的账号
  • 删除无用的账号
  • 锁定账号文件passwd、shadow
[root@localhost ~]# usermod -L cuipw	passwd -l cuipw		//锁定账号
[root@localhost ~]# passwd -S cuipw			//查看状态
[root@localhost ~]# usermod -U cuipw	passwd -u cuipw		//解锁账号    


[root@localhost ~]#chattr +i /etc/passwd /etc/shadow		//锁定文件		
[root@localhost ~]#lsattr /etc/passwd /etc/shadow			//查看锁定的状态 
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]#chattr -i /etc/passwd /etc/shadow		//解锁文件
[root@localhost ~]#lsattr /etc/passwd /etc/shadow 
---------------- /etc/passwd
---------------- /etc/shadow

1.2 密码安全控制

  • chage 命令设置密码时限。
[root@localhost ~]# chage -M 30 cuipw		//适用于已有的用户
[root@localhost ~]# vim /etc/login.defs		//适用于新建的用户
PASS_MAX_DAYS   30
  • chage 命令还可以强制让用户在下次登录的时候重设密码
[root@localhost ~]# chage -d 0 cuipw

1.3 命令历史限制

  • 减少记录的命令条数
[root@localhost ~]# vim /etc/profile			//适用于新登录用户
HISTSIZE=10		//设置最多纪录10条命令
[root@localhost ~]# export HISTSIZE=10			//适用于当前用户
  • 注销时自动清空命令历史
[root@localhost ~]# vim ~/.bash_logout			//宿主目录中~/.bash_logout添加
history -c			//添加清空历史命令的语句
clear
或者
[root@localhost ~]# vim .bash
echo ' ' > ~/.bash_history

1.4 终端自动注销

  • 超过指定的时间没有任何输入时自动注销终端,避免他人误操作。
[root@localhost ~]# vim /etc/profile			//适用于新登录用户
export TMOUT=600			//闲置600秒自动注销

[root@localhost ~]# export TMOUT=600			//适用于当前用户

2.用户切换与提权

2.1 su命令——切换用户

[cuipw@localhost ~]$su - root
密码:
上一次登录:一 823 18:57:29 CST 2021192.168.191.1pts/0

选项“-”表示切换用户后进入目标用户的宿主目录,不加则表示切换到当前目录。

  • 默认情况下,任何用户都允许使用 su 命令,我们可以使用 pam_whell 认证模块只允许部分用户使用 su 命令进行切换。
[root@localhost ~]#gpasswd -a cc wheel			//添加授权用户cc
正在将用户“cc”加入到“wheel”组中
[root@localhost ~]#grep wheel /etc/group			//确认 wheel 组成员
wheel:x:10:cc
[root@localhost ~]#vim /etc/pam.d/su
auth            required        pam_wheel.so use_uid		//去掉此行开头的“#号”
  • /etc/pam.d/su 文件里设置禁止用户使用su命令
[root@localhost ~]#vim /etc/pam.d/su
 #auth sufficient pam rootok.so
 #auth required pam wheel.so useuid

2.2 sudo命令——提升执行权限

我们可以使用 sudo 命令进行提升权限,这样就可以降低密码泄露的风险。

  • 在配置文件 /etc/sudoers 中添加授权,文件的默认权限为440, 保存退出时必须执行 “:w!” 命令来强制操作,否则系统将提示为只读文件而拒绝保存。
    用户 主机名列表=命令程序列表
    用户:授权的用户名,或者用“%组名”的形式,授权一个组的所有用户
    主机:使用此配置文件的主机名称,没配置过的主机名时可用local host ,配置过则用实际主机名,ALL 代表所有主机
    命令:运行授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔
  • 例如,授权用户cc 能够执行 ifconfig 命令来修改 IP地址,wheel 组的用户不需要验证密码就可以执行任何命令
[root@localhost ~]# visudo    或者  vim /etc/sudoers
......
cc    localhost=/sbin/ifconfig
%wheel   ALL=NOPASSWD:ALL
  • 当使用相同授权的用户较多,或者授权命令较多时,可以使用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias 来进行设置。
[root@localhost ~]# visudo    
...
User_Alias USERS=cc, ll
Host_Alias HOSTS=localhost, bogon
Cmnd_Alias CMNDS=/sbin/ifconfig, /usr/sbin/useradd, /usr/sbin/userdel
USERS HOSTS=CMNDS
  • sudo 配置记录的命令部分允许使用通配符“*”、取反符号“!”,当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。
[root@localhost ~]# visudo  
cc localhost=/sbin*,!/sbin/ifconfig,!/sbin/route
//授权用户cc可以执行/sbin/目录下除ifcongfig、route以外的其他所有命令程序
  • 若要查看用户自己获得哪些 sudo 授权,可以执行 sudu -l 命令,未授权的用户将会得到“may not run sudo”的提示,已授权的用户可以看到自己的 sudo 配置。
[root@localhost ~]# sudo -l
  • 如果已经启用 sudo 日志,则可以从 /var/log/sudo 文件中看到用户的 sudo 操作记录。
[root@localhost ~]# tail /var/log/sudo

3.PAM 安全认证

3.1 PAM 及其作用

  • PAM,是linux 系统可插拔认证模块,是一套可定制、 可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
  • PAM使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/1ib64/security下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。

3.2 PAM 认证原理

  • PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so
  • PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。

3.3 PAM认证的构成

查看 su 的PAM 配置文件:

[root@localhost ~]#cat /etc/pam.d/su
#%PAM-1.0
auth		sufficient	pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth		required	pam_wheel.so use_uid
auth		substack	system-auth
auth		include		postlogin
account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet
account		include		system-auth
password	include		system-auth
session		include		system-auth
session		include		postlogin
session		optional	pam_xauth.so

PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。

  • 第一列代表PAM认证模块类型
    auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
    account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
    password: 使用用户信息来更新数据,如修改用户密码。
    session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
  • 第二列代表PAM控制标记
    required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
    requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
    sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
    optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
    include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
  • 第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
    同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
  • 第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
    传递给模块的参数。参数可以有多个,之间用空格分隔开

3.4 PAM安全认证流程

  • required 验证失败时仍然继续,但返回 Fail
  • requisite 验证失败则立即结束整个验证过程,返回 Fail
  • sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续
  • optional 不用于验证,只是显示信息(通常用于 session 类型)
    在这里插入图片描述

二、系统引导和登录控制

1.开关机安全控制

  • 调整 BIOS 引导设置
    1.将第一引导设备设为当前系统所在硬盘。
    2.禁止从其他设备(如光盘、U盘、网络等)引导系统。
    3.将安全级别设为"setup",并设置管理员密码,以防止未授权的修改。
  • GRUB 限制
    1.通过修改 GRUB 引导参数进入单用户模式,可以不需要密码就能进入系统,从而拥有 root 权限,从安全的角度来看,如果任何人都能够这样修改参数,对服务器显然是很大的威胁。
    2.为了加强对引导过程的安全控制,可以为 GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
    3.使用 “grub2-mkpasswd-pbkdf2” 生产密钥
    4.修改 /etc/grub.d/00_header 文件中,添加密码记录
    5.生成新的 grub.cfg 配置文件

2.终端登录安全控制

  • 限制 root 只在安全终端登录
[root@localhost ~]# vim/etc/securetty
...
#tty5
#tty6			//禁止root用户从终端tty5、tty6登录
  • 禁止普通用户登录
[root@localhost ~]# touch /etc/nologin			//禁止普通用户登录

3.网络扫描(NMAP)

  • 一个强大的端口扫描类安全评测工具
  • 官网
nmap   [扫描类型]   [选项]   < 扫描目标... >

常用选项如下:

选项说明
-P指定扫描的端口
-n禁用 反向DNS 解析
-sSTCP 的 SYN 扫描(半开扫描)
-sTTCP连接扫描
-sFTCP FIN扫描
-sUUDP 扫描
-sPICMP 扫描
-P0跳过 ping 检测

总结

  • 使用su命令,可以切换为其他用户身份,并拥有该用户的所有权限。切换时以目标用户的密码进行验证。
  • 使用sudo命令,可以以其他用户的权限执行已授权的命令,初次执行时以使用者自己的密码进行验证。
  • 通过为GRUB菜单设置密码,可以防止未经授权的修改。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值