主页 > IT业界  > 

Linux系统安全

Linux系统安全

目录

一、账号安全的基本措施

1.1、用户登录限制

1.1.1、禁止用户登录

1.1.2 、锁定用户

 1.1.3、删除用户

1.1.4锁定配置文件

1.2、限时密码设置

1.3、历史命令

1.3.1、history

 1.3.2、历史命令配置文件修改

1.4、切换用户

1.4.1、su

 1.4.2、sudo

1.5、PAM安全认证

1.5.1、PAM基本概念

1.5.2、PAM配置文件语法

1.5.3、常见PAM模块

1.5.4、PAM配置示例


一、账号安全的基本措施 1.1、用户登录限制 1.1.1、禁止用户登录

/sbin/nologin是一个常用的shell,当某个用户的shell设置为/sbin/nologin时,用户将不能登录系统。即使用户拥有正确的用户名和密码,也无法通过终端或其他方式进行登录。

chsh命令与usermod命令可用于更改登录shell。 [root@localhost ~]# tail -1 /etc/passwd //查看用户属性 123123:x:1000:1000:123123:/home/123123:/bin/bash [root@localhost ~]# chsh -s /sbin/nologin 123123 //-s参数指定用户登录shell Changing shell for 123123. chsh: 警告:“/sbin/nologin”未在 /etc/shells 中列出。 Shell changed. [root@localhost ~]# tail -1 /etc/passwd 123123:x:1000:1000:123123:/home/123123:/sbin/nologin //已限制用户登录 [root@localhost ~]# su 123123 //无法登录 This account is currently not available. [root@localhost ~]# usermod -s /bin/bash 123123 //也可通过usermod命令修改shell [root@localhost ~]# tail -1 /etc/passwd 123123:x:1000:1000:123123:/home/123123:/bin/bash 1.1.2 、锁定用户

passwd -l命令与usermod -L命令可以锁定用户,使密码失效。

passwd -u命令与usermod -U命令解除密码锁定。

[root@localhost ~]# passwd -l 123123 锁定用户 123123 的密码 。 passwd: 操作成功 [root@localhost ~]# passwd -u 123123 解锁用户 123123 的密码。 passwd: 操作成功 [root@localhost ~]# usermod -L zz [root@localhost ~]# su 123123 [123123@localhost root]$ su zz 密码: su: 鉴定故障  1.1.3、删除用户

userdel -r命令删除用户的同时,删除与用户相关的所有文件

[root@localhost ~]# userdel -r 123123 1.1.4锁定配置文件

 chattr命令的功能是更改文件隐藏属性

[root@localhost ~]# chattr +i /etc/passwd //权限限制 [root@localhost ~]# lsattr /etc/passwd ----i----------- /etc/passwd [root@localhost ~]# rm /etc/passwd rm:是否删除普通文件 "/etc/passwd"?y rm: 无法删除"/etc/passwd": 不允许的操作 [root@localhost ~]# chattr -i /etc/passwd //解除限制 1.2、限时密码设置

通过修改/etc/login.defs配置文件,可以对新建用户设置密码规则

[root@localhost ~]# vim /etc/login.defs # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 //密码可以使用的最大天数 PASS_MIN_DAYS 0 //密码可以使用的最小天数 PASS_MIN_LEN 5 //密码最小长度 PASS_WARN_AGE 7 //密码过期前警告天数

 对已存在用户可通过chage命令,设置账号密码的有效期

-m设置密码可更改的最小天数-E设置账号到期的日期-M设置密码保持有效的最大天数-d显示上一次更改的日期-i设置密码到期后还可以使用天数-l显示当前设置 [root@localhost ~]# chage -M 100 123123 [root@localhost ~]# chage -l 123123 最近一次密码修改时间 :从不 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :100 在密码过期之前警告的天数 :7 1.3、历史命令

历史命令记录了用户在命令行中输入的所有命令,为用户提供了极大的便利,但也给系统安全带来了潜在的风险。当用户在命令行输入了明文密码,就会存在安全风险。可通过修改/etc/profile配置文件,设置HISTSIZE和 HISTFILESIZE环境变量来控制命令历史记录的条数。

1.3.1、history

功能是显示与管理历史命令记录。

-a保存命令记录-n读取命令记录-c清空命令记录-r读取命令记录到缓冲区-d删除指定序号的命令记录-w将缓冲区信息写入历史文件

 参考示例:

[root@localhost ~]# history 1 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2 reboot 3 systemctl restart network 4 vim /etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# history -c [root@localhost ~]# history 1 history  1.3.2、历史命令配置文件修改

通过修改/etc/profile配置文件,限制历史命令最大显示数量。

[root@localhost ~]# vim /etc/profile HISTSIZE=10 //修改最大显示命令数 [root@localhost ~]# history //仅显示十条历史命令 8 df 9 history 10 reboot 11 echo ' ' > /root/.bash_history 12 vim ~/.bash_history 13 history 14 vim .bash_logout 15 vim ~/.bash_history 16 vim /etc/profile 17 history 1.4、切换用户 1.4.1、su

switch user的缩写,功能是切换当前用户身份到其他用户身份。

语法格式:su 参数 用户名

-完全切换身份 [root@localhost ~]# su 123123 [123123@localhost root]$ exit exit [root@localhost ~]# su - 123123 上一次登录:四 2月 20 20:28:14 CST 2025pts/0 上  1.4.2、sudo

super user do 的缩写,功能是授权普通用户执行管理员命令。在/etc/sudoers中设置了可执行sudo指令的用户。

配置文件:/etc/sudo.conf执行授权命令:/usr/bin/sudo时间戳文件:/var/db/sudo日志文件:/var/log/secure

语法格式:sudo 参数 命令

-u以指定的用户作为新的身份-E继承当前环境变量-H

将用户的家目录环境变量设置为/root

-k下次强制验证当前用户的密码-l列出目前用户可执行与无法执行的指令-p改变询问密码的提示符-s执行指定的shell-V显示版本信息

参考示例:

[root@localhost 123123]# sudo su - //使用超级用户重新登录一次shell 上一次登录:四 2月 20 20:54:27 CST 2025pts/0 上 [root@localhost ~]# [123123@localhost ~]$ sudo -s //以当前用户的shell开启一个root用户的shell 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。

 授权规则配置:

模块含义user授权使用sudo的用户或用户组host可以执行命令的主机名(ALL代表所有主机)(run_as_user)可以使用sudo以哪个用户的身份执行命令(ALL代表所有主机)command可以运行的命令(可以是特定的命令,或ALL(所有命令) [root@localhost ~]# vim /etc/sudoers 114 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 115 # user host=(run_as_user) commad 116 user1 ALL=(ALL) /usr/bin/ls //表示用户可以执行/usr/bin/ls命令,但不能执行其他命令 1.5、PAM安全认证

Pluggable Authentication Modules的缩写,PAM是Linux系统中用于管理用户认证和安全策略的框架。通过模块化的方式,使系统管理员灵活配置认证、授权、密码策略等功能。

1.5.1、PAM基本概念 模块化设计:PAM将认证过程分解为多个模块,每个模块负责特定的功能配置文件:配置文件在/etc/pam.d/目录中,每个服务都有独立的配置文件模块文件目录:/lib64/security/*.so 1.5.2、PAM配置文件语法

PAM配置文件的内容通常由以下若干行组成:

type control module arguments //模块类型 控制标识 模块 传递给模块的参数 type:模块类别,指认证类型。 auth:用户身份验证account:账户管理password:密码管理session:会话管理 control_flag:控制标识,定义模块的行为。 required:表示该模块必须成功,否则认证失败。requisite:表示该模块不许成功,如果失败,则认证立即终止。sufficient:表示该模块成功时认证通过,但失败时不会终止认证。optional:表示该模块是可选的,不影响最终认证结果。 module:PAM模块的名称。arguments:传递给模块的参数,可以用于配置模块的行为。 1.5.3、常见PAM模块 pam_unix.so:基于系统的密码认证,通常与/etc/shadow和/etc/passwd配合使用,验证用户名和密码。pam_nologin.so:限制用户登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录。pam_limits.so:限制用户可使用的资源。限制可打开的文件数量、可运行的进程数量。pam_access.so:基于访问控制列表(ACL)控制用户是否能够登陆系统。 1.5.4、PAM配置示例 [root@localhost pam.d]# grep pam_nologin * gdm-autologin:account required pam_nologin.so gdm-fingerprint:account required pam_nologin.so gdm-password:account required pam_nologin.so gdm-pin:account required pam_nologin.so
标签:

Linux系统安全由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux系统安全