linux系统安全及应用小结

系统安全及应用

一、账号安全控制

1.1 基本安全措施

1.2系统账号清理

  • 将非登录用户的Shell设为/sbin/nologiin
  • 在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而产生的其他大量账号,除了root之外,其他大量账号只是用来维护系统运作,启动或保持服务进程,一般是不允许登录的,也称为非登录用户.
  • 常见的非登录用户包括bin,daemon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,haldaemon等。
  • 为了确保系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动.
    在这里插入图片描述
[root@localhost ~]# grep "bash$" /etc/passwd  '查看当前可以登录的用户'

在这里插入图片描述

  • 删除无用的账号
    在非登录用户中,还有一部分是很少用到的,如news,uucp,games,gopher等,这些用户可视为冗余账号,可以直接删除

  • 此外,还有一些随着应用程序安装的用户账号,若程序卸载以后未能自动删除,需要人为手动删除

  • 对于长期不用的用户账号,若无法确定是否删除,可以暂时将其锁定,(passwd,usermod命令都可以用来锁定和解锁账号)

[root@localhost ~]# usermod -L tom1  ##锁定tom1
[root@localhost ~]# passwd -S tom1     ## 查看tom1情况
tom1 LK 2020-06-22 0 30 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U tom1  ## 解锁tom1
[root@localhost ~]# passwd -S tom1
tom1 PS 2020-06-22 0 30 7 -1 (密码已设置,使用 SHA512 算法。)

在这里插入图片描述

  • 如果服务器中的用户账号已经固定,不在进行更改,还可以采取锁定账号配置文件的方法。
    使用chattr命令,分别结合“+i”“-i”选项来锁定,解锁文件,使用lsattr命令可以查看文件锁定情况
chattr命令基本格式
chattr +i [目标文件]     '锁定目标文件'
chattr -i [目标文件]     '解锁目标文件'
lsattr  [目标文件]       '查看目标文件'
[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

在这里插入图片描述

  • 在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加,删除账号,也不能更改用户的密码,登录shell,宿主目录等属性信息。
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# useradd tom3
useradd:无法打开 /etc/passwd

在这里插入图片描述

1.3 密码安全控制

  • 在不安全的网络环境中,为了降低密码被猜出或者被暴力破解的风险,用户应养成定期修改密码的习惯,避免长期使用同一个密码。
  • 管理员可以在服务器端限制用户密码的最大有效天数,对于已经过期的密码,需要登录时重新设置密码,否则将拒绝登录。
    执行以下操作:将密码的有效期设置为30天。
[root@localhost ~]# vi /etc/login.defs  ## 进入文档编辑  如下图所示 (适用于新建的用户)
[root@localhost ~]# chage -M 30 lisi  '对于已创建的用户,用这条命令'

在这里插入图片描述

  • 在某些特定情况下要求用户初次登录的时候必须更改密码
    例如,强制要求用户tom1下次登录时重设密码 '(重设的密码有密码复杂性要求,例如不可是连续的数字,连续的字母等)
    例如:执行以下操作可以强制要求用户tom1 下次登录时重设密码
[root@localhost ~]# chage -d 0 tom1   ##强制要求下次tom1登陆时重设密码
tom1 登陆时:
You are required to change your password immediately (root enforced)
Last login: Mon Jun 22 17:25:17 2020 from 192.168.145.1
WARNING: Your password has expired.
You must change your password now and login again!
更改用户 tom1 的密码 。
为 tom1 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

1.4 命令历史,自动注销。

  • Shell环境的历史命令机制为用户提供了极大的便利,同时也给用户带来了潜在的风险。只要获得历史命令文件,用户的命令操作过程将会一览无余,如果在历史命令中输入过明文密码,则无意之中安全壁垒又多了一个缺口。
  • Bash环境中,历史命令的记录条数由HISTSIZE 控制,默认为1000条。可通过修改/etc/profile 文件中的HISTSIZE变量值,可以影响系统中所有用户。
[root@localhost ~]# vi /etc/profile   ## 进入文档编辑 HISTSIZE  如下图
[root@localhost ~]# export HISTSIZE=200  '该命令适用于当前用户,及时成效'

在这里插入图片描述

  • 注销时自动清空命令历史:修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。即:当用户注销(退出已登录的bash环境)时,所记录的历史命令将自动清空。
[root@localhost ~]# vi .bash_logout
# ~/.bash_logout
history -c
clear

在这里插入图片描述

  • 在Bash终端环境中,可以设置一个闲置超时时间,到超过规定的时间没有输入命令自动注销,这样可以防止管理员不在时,其他任务对服务器的误操作风险。
  • 闲置超时由TMOUT来控制
[root@localhost ~]# vi /etc/profile  ## 进入文档末尾最后添加,如文档所示
[root@localhost ~]# export TMOUT=600   ## 适用于当前用户

在这里插入图片描述

二、 用户提权与切换

  • 大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险

  • su ,sudo 两种命令,su命令主要用来切换用户,sudo命令用来提升执行权限。
    su 命令 -切换用户

2.1 su 命令 -切换用户

  • 使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限,切换时需要对目标用户的密码进行验证(从root用户切换为其他用户不需要)。
    例如:从tom1切换到root
[tom1@localhost ~]$ su - root   ## 从其他用户切到root上需要输入密码
密码:
上一次登录:一 6月 22 22:09:01 CST 2020从 192.168.145.1pts/2 上
[root@localhost ~]# su - tom1        ## 从root切换到其他用户不需要输入密码
上一次登录:一 6月 22 22:09:06 CST 2020从 192.168.145.1pts/3 
  • 上述操作中选项“- ”等同于“-login” 或“-l”,表示切换用户后进入目标用户的Shell环境,若缺少此选项,则仅切换身份、不切换用户环境。对于切换为root用户的情况,“root可以省略”。
    -默认情况下,任何用户都能使用su命令,从而由机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用 限制,可以借助于pam_wheel认证模块,只允许极个别的用户使用su命令。
  • 实现过程:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su 认证配置以启用pam_wheel认证。
[root@localhost ~]# gpasswd -a tom1 wheel  ## 添加授权用户tom1
正在将用户“tom1”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group   ## 确认wheel 组成员
wheel:x:10:tom1
[root@localhost ~]# vi /etc/pam.d/su   ## 进入配置文件,如下图修改   启用pam_WHEEL授权
验证:
[tom@localhost ~]$ su - root   ## tom尝试使用su授权
密码:
su: 拒绝权限
[tom1@localhost ~]$ su - root   ## tom1成功使用su切换命令
密码:
上一次登录:一 6月 22 22:38:18 CST 2020pts/3 上

在这里插入图片描述

2.2 Linux中的PAM安全认证:

  • PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式
  • PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so(.so 后缀代表模块文件)
  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证
    不同的应用程序所对应的PAM模块也是不同的。
    PAM安全认证流程
    在这里插入图片描述

2.3 使用sudo机制提升权限

  • su命令的缺点
    用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码
    对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分。
  • 使用sudo命令可提升权限,可以让普通用户,拥有一部份管理权限,又不知道密码。

2.4 配置sudo授权

  • visudo 或者 vi /etc/sudoers :sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。若使用vi编辑,保存时必须执行“:w!”命令强制操作,否则系统将提示为只读文件而拒绝保存。
  • 配置文件/etc/sudoers中,授权的基本格式如下:
    user MACHNE =COMMANDS

用户的授权配置基本如下:

  • 用户(user):授权的用户名,或采用“%”组名的形式(授权一个组的所有用户)
  • 主机(MACHINE):使用此配置文件的主机名称,此部分主要是方便在多个主机间共用一份sudoers文件,一般设为localhost或者实际应用的主机名即可
  • 命令(COMMANDS):允许授权的用户通过sudo的方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。

2.5 sudo实验

[root@localhost ~]# id tom1
uid=1002(tom1) gid=1002(tom1) 组=1002(tom1),10(wheel)
[root@localhost ~]# id tom2
uid=1003(tom2) gid=1003(tom2) 组=1003(tom2)
[root@localhost ~]# su - tom3
su: user tom3 does not exist
[root@localhost ~]# su - tom2
[tom2@localhost ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
   inet 192.168.145.128  netmask 255.255.255.0  broadcast 192.168.145.255
 省略。。。。。
[tom2@localhost ~]$ sudo ifconfig ens33  192.168.145.129
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
 #1) 尊重别人的隐私。
 #2) 输入前要先考虑(后果和风险)。
 #3) 权力越大,责任越大。
tom2 不在 sudoers 文件中。此事将被报告。## 修改失败
[root@localhost ~]# su - tom1
[tom1@localhost ~]$ sudo ifconfig ens33 192.168.145.129
[tom1@localhost ~]$ ifconfig  '发现修改成功'
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.145.129  netmask 255.255.255.0  broadcast 192.168.145.255

2.6 sudo总结

uid=1002(tom1) gid=1002(tom1) 组=1002(tom1),10(wheel)
[tom1@localhost ~]$ id tom2
uid=1003(tom2) gid=1003(tom2) 组=1003(tom2)
'我们发现tom1用户在wheel组中,而tom2用户不在'

[root@localhost ~]# visudo		'或者使用vi /etc/sudoers 命令进入sudo配置文件'
...此处省略部分信息
root    ALL=(ALL)       ALL		'发现root用户拥有所有权限'
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL  '发现wheel组中的用户也拥有所有权限'

  • 因此,在wheel组中的tom1用户拥有修改IP地址的权限,不在wheel组中的tom2用户没有权限修改IP地址’
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值