IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux的系统安全及应用 -> 正文阅读

[系统运维]linux的系统安全及应用

目录

一、账号的安全控制

1、账号的优化

2、密码的安全的控制

二、用户命令的权限控制

1、历史命令的管理

2、切换用户

3、pam模块

4、sudo

5、grub加密


一、账号的安全控制

1、账号的优化

账号的优化一般分为下面几个步骤

1、将一些用户设置无法登录,防止其破坏系统

2、锁定无用账号

3、删除长期不登录的闲置账号

4、锁定用户和账号密码的配置文件,防止系统被入侵

1.1 设置用户无法登录

通常linux中想让用户无法登录,一般会将用户的shell改为 /sbin/nologin ,而/sbin/login的作用是用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。

1、查看用户的属性

?2、修改用户无法登录

?3、使用切换用户来验证用户是否能正常登录

1.2 锁定无用账号

1、锁定账号

?2、查看是否锁定

????[root@localhost ~]# cat /etc/shadow |grep ^zs
# 查看密码的配置文件并检索出zs开头的用户

zs:!$6$LA7n3jCI3IvhMBHS$.9YqBUKpKwb9DHSIPX9KDVV4YJ5g04GxFQI8jdGx8XJoMqEgkdLrlAd03ahyCcjejZ7iKuO.Iv5OSlGxoSCTD.::0:99999:7:::

#!表示密码是锁定状态

?3、解锁账号并验证

[root@localhost ~]# usermod -U zs
#解锁zs用户的密码

[root@localhost ~]# cat /etc/shadow |grep ^zs
#  查看密码的配置文件并检索出zs开头的用户

zs:$6$LA7n3jCI3IvhMBHS$.9YqBUKpKwb9DHSIPX9KDVV4YJ5g04GxFQI8jdGx8XJoMqEgkdLrlAd03ahyCcjejZ7iKuO.Iv5OSlGxoSCTD.::0:99999:7:::

#密码字段开头没有!说明密码已经解锁

1.3 删除账号

[root@localhost ~]# userdel  lisi

#删除用户lisi

1.3 锁定用户配置文件

chattr

选项

(1)-a

让文件和目录追加用途

(2)+i

锁定文件和目录

(3)-i

解锁文件和目录

锁定配置文件

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow

查看是否属于锁定状态

[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow

2、密码的安全控制

2.1 密码规则的设定

1.新建用户设置密码规则

[root@localhost ~]# vim /etc/login.defs 
 
# 修改 /etc/login.defs 配置文件


PASS_MAX_DAYS   99999
# 密码最大有效期

PASS_MIN_DAYS   0
#两次密码修改最少间隔时间

PASS_MIN_LEN    5
#设置的密码长度,root用户无效


PASS_WARN_AGE   7
#密码过期前多少天提示

2、已有用户设置密码

chage [选项]? 用户名

常见的选项

(1)m

设置密码最少到期天数

(2)M

设置密码最多到期天数

(3)W

密码到期前,提前收到警告提醒

(4)E

账号到期时不能使用该账号

(5)d

上一次密码到期的日期

[root@localhost ~]# chage -d 0 ls

  # 让 ls用户下次登录必须修改密码

[root@localhost ~]# chage -M 15 ls
# 设置用户ls 密码15天到期

[root@localhost ~]# cat /etc/shadow |grep ^ls


ls:$6$ViTJMlj1$Xgkd1y157FqI84nodUIgJZ8.YLYH8hBO8QnpTNaGkjuQ9HjViLyDfexoD5RVy.DDrEi.rX3KZtovzbr3PqbwT1:0:0:15:7:::
#第五字段有到期天数

二、用户命令的权限控制

1、历史命令管理

bash中默认命令记忆可达1000个。这些命令保存在主文件夹内的.bash_history中

1.1 设置历史命令保存个数

[root@localhost ~]# vim /etc/profile
#修改历史命令的保存个数

HISTSIZE=5
#当前历史命令为5个

. /etc/profile  
 #刷新配置文件

1.2 退出时清空命令

[root@localhost ~]# vim .bash_logout
#编辑配置文件


# ~/.bash_logout
echo " " > ~/.bash_history

#将空白写入到存放历史命令的文件

1.3 开机时清空历史命令

[root@localhost ~]# vim .bashrc
#编辑配置文件

echo " ">~/.bash_history

#将空白导入

[root@localhost ~]# . .bashrc
# 刷新配置文件

   

2、切换用户

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码

命令格式

su? ?用户名

su - 用户名

su 用户名:非登录式的登录,不会读取目标用户的的配置文件,不改变当前工作目录,即未完全登录

su - 用户名:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

[root@localhost ~]# su zs
[zs@localhost root]$ pwd
/root
# 非登录式切换


[root@localhost ~]# su - zs
上一次登录:一 3月  7 14:33:15 CST 2022pts/0 上
[zs@localhost ~]$ pwd
/home/zs

#登录式切换


限制使用su 命令


[root@localhost ~]# gpasswd -a ls wheel
#将用户ls加入到 wheel

[root@localhost ~]# vim /etc/pam.d/su
编辑配置文件

auth            required        pam_wheel.so use_uid
# 开启文件

3、pam模块

在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。

Linux-PAM有四种模块类型,分别代表四种不同的任务,它们是:
认证管理(auth),账号管理(account),会话管理(session)和密码(password)管理,一个类型可能有多行,它们按顺序依次由PAM模块调用。

auth:表示鉴别类接口模块类型用于检查用户和密码,并分配权限;
这种类型的模块为用户验证提供两方面服务。让应用程序提示用户输入密码或者其他标记,确认用户合法性;通过他的凭证许可权限,设定组成员关系或者其他优先权。

account:表示账户类接口,主要负责账户合法性检查,确认帐号是否过期,是否有权限登录系统等;
这种模块执行的是基于非验证的帐号管理。他主要用于限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以多少用户),限制用户位置(例如:root只能通过控制台登录)。

多数情况下auth和account会一起用来对用户登录和使用服务的情况进行限制。这样的限制会更加完整。比如下面是一个具体的例子:login是一个应用程序。Login要完成两件工作——首先查询用户,然后为用户提供所需的服务,例如提供一个shell程序。通常Login要求用户输入名称和密码进行验证。当用户名输入的时候,系统自然会去比对该用户是否是一个合法用户,是否在存在于本地或者远程的用户数据库中。如果该账号确实存在,那么是否过期。这些个工作是由account接口来负责。

如果用户满足上述登录的前提条件,那么它是否具有可登录系统的口令,口令是否过期等。这个工作就要由auth接口来负责了,他通常会将用户口令信息加密并提供给本地(/etc/shadow)或者远程的(ldap,kerberos等)口令验证方式进行验证。

如果用户能够登录成功,证明auth和account的工作已经完成。但整个验证过程并没有完全结束。因为还有一些其他的问题没有得到确认。例如,用户能够在服务器上同时开启多少个窗口登录,用户可以在登录之后使用多少终端多长时间,用户能够访问哪些资源和不能访问哪些资源等等。也就是说登录之后的后续验证和环境定义等还需要其他的接口。这就是我们下面要提到的两组接口:

session:会话类接口。实现从用户登录成功到退出的会话控制;
处理为用户提供服务之前/后需要做的些事情。包括:开启/关闭交换数据的信息,监视目录等,设置用户会话环境等。也就是说这是在系统正式进行服务提供之前的最后一道关口。

password:口令类接口。控制用户更改密码的全过程。也就是有些资料所说的升级用户验证标记。

required:表示该行以及所涉及模块的成功是用户通过鉴别的必要条件。换句话说,只有当对应于应用程序的所有带 required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有模块都调用完毕后才将错误消息返回调用他的程序。 反正说白了,就是必须将所有的模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop一样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。

requisite:与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。

sufficient:表示该行以及所涉及模块验证成功是用户通过鉴别的充分条件。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做 optional对待。因此拥有sufficient 标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。

optional:他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。

include:表示在验证过程中调用其他的PAM配置文件。在RHEL系统中有相当多的应用通过完整调用/etc/pam.d/system-auth来实现认证而不需要重新逐一去写配置项。这也就意味着在很多时候只要用户能够登录系统,针对绝大多数的应用程序也能同时通过认证。

4、sudo 命令

sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的

4.1 给用户添加命令

[root@localhost ~]#  vim /etc/sudoers
# 进入提权的配置文件

zs      ALL=(root)      /usr/sbin/useradd, /usr/bin/su,/usr/sbin/which

加权限,这里的/usr/sbin/useradd ,/usr/bin/su, /usr/bin/which表示普通用户执行时必须使用全路径

4.2 别名

  1. Host_Alias:主机别名

  2. User_Alias:用户别名

  3. Runas_Alias:在哪些主机以谁的身份运行 的别名

  4. Cmnd_Alias:命令别名
[root@localhost ~]#  vim /etc/sudoers
# 进入提权的配置文件
Host_Alias USERHOST=kgc,localhost
# 定义主机别名  可以在哪些主机使用
User_Alias USERMYSE=ls
#定义能使用的用户
Cmnd_Alias MYCMDS=/usr/bin*,/usr/sbin*
#定义能使用的命令

5、grub 加密

?设置grub密码:

??? 众所周知,通过编辑GRUB启动参数可以轻松的进入单用户模式从而修改root密码,这对于一台多用户的计算机或服务器来说,无疑增加了安全隐患。大家一定很像为自己的GRUB加一把锁吧,大家可以通过GRUB的password参数对GRUB设置密码。

给cenos 6 grub 加密

[root@kgc ~]# grub2-mkpasswd-pbkdf2      #根据提示设置GRUB菜单的密码
输入口令:
Reenter password:  123456
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i

[root@kgc ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@kgc ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
#备份文件  
[root@kgc ~]# vim /etc/grub.d/00_header
#最后
cat << EOF 
set superusers="root"  
#设置登录用户

password_pbkdf2 root 
#设置密码
grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i
EOF
使用 grub2-mkconfig 命令生成新的 grub.cfg 配置文件。
[root@kgc ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的 grub.cfg 文件

重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。

cat << EOF
set superusers="root"
password_pbkdf2 root  grub.pbkdf2.sha512.10000.4F3CD9383616C3AAFB1E98A289CB707A6FEEDAE7BEFB10A59642FE641C8F13AD9A27EAD43DEB07D9F4228149C716FA40C8C04E13E98FFAC45EF7AA2AD76C96B9.49CEC46B324DC9A94D0B461C711569ADB79213708929B1891232DB5FE31EC6F5A0A4E4D0A4AA0EAA64E38A6876EEB3B5EBF8991D0FB04537E1F39D1AA40D1AD5
EOF


cat << EOF
set superusers="用户" 
password_pbkdf2 用户  加密密码
EOF

给cenos 7 配置 grub密码

[root@localhost ~]# grub2-setpassword

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:59:52  更:2022-03-08 23:01:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:42:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码