系统安全及应用

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 系统安全及应用

一,账号安全及基本措施

(一)系统账号清理

1,将非登录用户的shell  设为  /sbin/nologin

usermod 命令

 
[root@localhost ~]# usermod -s /sbin/nologin lisi     
#修改lisi的shell属性

通常情况下,管理员会将某些不打算提供交互式登录权限的账户(如系统服务账户)的shell设置为 /sbin/nologin,这样可以防止误操作或恶意登录这些账户,并确保它们仅用于执行后台任务或作为守护进程运行,而不是进行人工操作

在/etc/passwd/文件里是可以看到哪些用户可以登录,哪些用户不可以登录

2,锁定长期不使用的账号

passwd   或者usermod命令

[root@localhost ~]# passwd -l zhaosi
                    usermod -L zhaosi
 
锁定用户 zhaosi

3,删除无用的账号

userdel 命令

4,锁定配置文件

chattr  命令

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
锁定账户密码  配置文件

chattr  -i  解除锁定

拓展:

问:中病毒怎么处理?

答:中病毒一般会导致cpu和内存出现故障,用ps或者top命令看异常进程,通过进程pid号 找到        proc  exe  找到文件的真实位置,把他删除

自己建和病毒同名的文件,加上chattr  +i  锁定文件

二,密码安全控制

(一)设置密码规则

1,对于新建用户

可以修改 /etc/login.defs 文件里的内容来设置密码规则

2,对于已有用户

chage

2.1  选项

chage [选项] 用户名

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

2.2常用使用情况
[root@localhost ~]# chage -d  0 zhangsan
#强制张三下一次登录一定修改密码(且密码符合复杂性要求)
 
 
[root@localhost ~]#chage -M 30 lisi
#设置密码有效期为30天

三,历史命令

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

输入history可以看到所有的历史命令

(一)临时清理历史命令

history  -c

(二)永久清空

vim  ~/.bashrc

在命令里写入echo "  "    >~/.bash_history

解释:开机时,会先读取~/.bashrc  配置文件,因为 而~/.bash_history放的是历史命令,这样,在用户登录前,会先把历史命令全部清空

(三)设置历史命令个数

通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户

重新加载一下配置文件

四,切换用户su

su  zhangsan            切换不加- 不完全切换

su  -zhangsan           加换加- 是完全切换

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组(超级管理员组)中
  • 启用pam_wheel认证模块

pam_rootok.so      root用户不需要密码也可以切换用户;如果将其修改为注释(在这一行前加#表示注释)表示root切换到普通用户也需要修改密码

pam_wheel.so  只有wheel组才可以切换用户

五,PAM安全认证

su命令的安全隐患

默认情况下,任何用户都允许使用su  命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可借助于pam认证模块,只允许极个别用户使用su命令进行切换。

(一)相关文件

1.         /usr/lib64/security

存放功能模块

这个路径通常存放着一些安全相关的库文件,尤其是在使用PAM时。对于64位系统,程序的库文件一般存储在/usr/lib64/lib64目录下。在该路径下的security子目录里可能包含用于PAM认证机制的动态链接库(.so文件),这些库实现了各种具体的认证策略

2.        /etc/pam.d

配置文件

这个目录包含了PAM模块的具体应用配置文件,每个应用程序都有一个对应的配置文件,例如/etc/pam.d/sshd对应SSH服务,/etc/pam.d/login对应本地登录等。这些配置文件定义了在用户登录或者执行特定操作时,系统应如何按照顺序调用不同的PAM模块进行身份验证、账户管理和会话管理等操作。

3.       /etc/security

复杂的配置文件

此目录则包含了一些高级的安全性配置文件,如限制用户资源使用量的配置文件limits.conf,以及与PAM交互的一些安全设置文件,比如用于密码复杂度检查的passwd配置等。此外,还包括了与sudo权限控制相关的文件以及其他系统级别的安全配置项。

(二)pam 工作原理

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

用户访问服务器时,服务器的某一个服务程序会把用户的请求发送到pam模块进行认证

不同的应用程序所对应的pam 模块是不同的

PAM认证过程示例:

1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

(三)专用配置文件/etc/pam.d/ 格式

每个程序单独一个配置文件,这个文件记录了这个程序怎么调用pam

可以看到,有四列

type:指模块类型,即功能

control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名

Arguments: 用来传递给该模块的参数

1,type  模块类型

  • Auth 账号的认证和授权                  

      指账户是否有效

  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)

       指账户是否在有效期

  • Password 用户修改密码时密码复杂度检查机制等功能

       账户密码是否有效

  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等

       可以同时和多少会话*(可以使用多少资源)

  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

2,control 控制位

required 一票否决 如果失败,最后一定失败,但是会继续往下走,到最后再回到失败

requisite 如果失败 会立即结束验证 反馈失败

sufficient 验证成功后立即返回 ,不再继续,否则忽略结果并继续

optional 可选项

3,PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

3,1   shell 模块

功能:检查有效shell

只规定除nologin之外的类型通过  (用户的shell 不在里面就不让登录)

3.2    securetty模块  

功能:只允许root用户在/etc/securetty列出的安全终端上登录

将第一行注释的话,可以使用telnet协议进行远程登录  

不建议使用telnet协议登录,因为telnet是明文传输 ,使用pam的目的是为了增强安全性

3.3   pam_nologin.so 模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录(可以用于日常维护使用)

3.4   limit 模块
功能:

控制进程占用资源例如:可打开的文件数量,可运行的进程数量,可用内存空间

配置文件格式

vim 打开/etc/security/limits.conf这个配置文件,这个文件的内容就是控制进程打开的数量和内存大小

domain 用户名
@组名
*表示所有用户和组
type hard:硬限制
soft:软限制
  —:软硬一起,相当于硬限制
item core :限制核心文件大小(KB)
data :最大数据大小(KB)
fsize :最大文件大小(KB)
memlock :最大锁定在内存中的地址空间(KB)
nofile :打开文件描述符的最大数目
rss :最大常驻集大小(KB)
stack :最大堆栈大小(KB)
cpu :最大cpu时间(MIN)
nproc :最大进程数
as :地址空间限制(KB)
maxlogins :该用户的最大登录数
maxsyslogins :系统上的最大登录数
priority :带锁运行用户进程的优先级
locks :用户可以持有的最大文件数
sigpending :挂起信号的最大数量
msgqueue : POSIX消息队列使用的最大内存(字节)
nice :允许提升的最大优先级:[: 20,19
rtprio :最大实时优先级
limit  模块例子

李四 这个用户在系统做个只可以打开5个进程(- 是软硬限制都有)

查看李四打开了多少个进程

内核调优,把系统可访问数量调大

输入ulimit  -a 查看看一下当前显示的所有资源

 

压力测试

ab压力测试 -c 一次 -n一共

先来进行一个压力测试  让它同时打开1025个文件  最多打开5000个进行测试

可以看到,会有提示信息,无法同时打开,可以通过 ulimit  -n 来调整

或者在配置文件里加上,表示所有用户最大打开文件数量为100000

 

六,sudo提权操作

(一)用途及用法

用途:以其他用户身份如(root)执行授权的命令

用法: sudo   授权命令

(二)特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

(三)配置文件

1,介绍具体含义

[root@localhost ~]#vim /etc/sudoers

[root@localhost ~]#visudo

 

 第一个root:                  哪个用户要使用命令

  ALL                            哪台主机(可以写域名,也可以写网段 all 就是所有)

(ALL)                         以谁的身份

   ALL                             任何命令、

生产环境建议把这个注释掉,有人把用户名叫root 就可以执行任何命令

2,具体使用方法

配置文件写  

外面命令要加sudo 输入的命令要和配置文件一样

3, 取反与* 的用法

3.1取反

!取反 同时写可以,不可以 后面的生效

就是不能看

3.2  *

当配置文件写*  有bug

只写message shadow 也可以看了           因为把空格 /etc/shadow 看成*

解决办法:

 

3.3  拓展

 

(四)增加日志

进入visudo中配置defaults  logfile="/data/sudo.log"

 可以查看日志文件

 

(五) 对组

(六) 子配置文件

在子配置文件写sudo权限

 

作用:方便管理

最好先改一下权限,默认比较危险

 

(七)别名

sudo别名有四种类型:

  • User_Alias(用户)
  • Runas_Alias(代表用户)
  • Host_Alias(登录主机)
  • Cmnd_Alias(命令)

别名格式:必须大写字母,数字可以使用但是不能放在开头

相关文章
|
6月前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
83 0
|
安全 算法 Linux
CentOS7 系统安全及应用
CentOS7 系统安全及应用
296 0
CentOS7 系统安全及应用
|
安全 Shell 数据安全/隐私保护
系统安全及应用
系统安全及应用
82 0
|
安全 Linux 数据安全/隐私保护
|
安全 网络协议 Linux
系统安全应用
系统安全应用
369 0
|
安全 网络协议 Unix
Linux系统安全与应用
系统安全问题一直存在着,当系统往往出现安全漏洞的时候会对我们的系统运行有一定程度的影响,严重的话还会造成系统瘫痪等问题。
Linux系统安全与应用
|
安全 网络协议 算法
Linux系统安全及应用
⭐本文介绍⭐ 作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势而得以广泛应用。本文主要从账号安全控制、系统引导和登录控制的角度,介绍Linux系统安全优化的点点滴滴;还将介绍基于Linux环境的弱口令检测、网络扫描等安全工具的构建和使用,帮助管理员查找安全隐患,及时采取有针对性的防护措施。
Linux系统安全及应用
|
缓存 网络协议 安全
Linux 系统安全及应用(账号安全和引导登录控制)(4)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
186 0
|
存储 安全 算法
Linux 系统安全及应用(账号安全和引导登录控制)(3)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
312 0
|
安全 Ubuntu Unix
Linux 系统安全及应用(账号安全和引导登录控制)(2)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
235 0