系统安全及应用

目录

账号安全的基本措施

系统账号清理

将非登录用户的Shell设为/sbin/nologin

锁定长期不使用的账号

删除无用的账号

chattr 锁定账号文件passwd、shadow

密码安全控制

设置密码有效期

新建用户

​编辑​编辑

已有用户  chage

要求用户下次登录时修改密码

PAM安全认证

PAM认证原理

一般遵循的顺序

PAM安全认证流程

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

limit

修改限制的实现方式:

用户切换  su

切换用户的方式:

限制使用su命令的用户

​编辑

sudo

sudo特性:


账号安全的基本措施

系统账号清理

将非登录用户的Shell设为/sbin/nologin

锁定长期不使用的账号

删除无用的账号

chattr 锁定账号文件passwd、shadow

选项:

-a :让文件或目录仅供附加用途。只能追加

-i :不得任意更动文件或目录

密码安全控制

设置密码有效期

新建用户

修改/etc/login.defs文件,设置密码规则

已有用户  chage

选项:

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

要求用户下次登录时修改密码

PAM安全认证

pam  插件式的模块

最常见的功能 用户名, 密码验证功能。

开发出一款软件,如果要用到用户名和密码的功能时,就会调用pam架构中的密码模块不需要二次开发。pam架构统一了标准。

PAM认证原理

一般遵循的顺序

Service (服务)---->PAM (配置文件)---->pam_*.so

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

PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果

1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回不再继续,否则忽略结果并继续                                            4.optional不用于验证,只显示信息(通常用于session类型)

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

type control module-path arguments
功能    判断成功失败   .so   参数
application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数

limit

功能:在用户级别实现对其可使用的资源的限制。例如:可打开的文件数量,可运行的进程数量,可用内存空间。unlimited 是一个特殊值,用于表示不限制。

- H设置硬件资源限制,一旦设置不能增加ulimit - Hs 64;限制硬资源,线程栈大小为 64 k
- S设置软件资源限制,设置后可以增加,但不能超过硬资源设置ulimit -Sn 32;限制软资源,32个文件描述符
- a显示当前所有的资源限制ulimit -a;
- c设置core文件的最大值.单位:blocksulimit -c unlimited;不限制
- d设置数据段的最大值.单位:kbytesulimit -d unlimited;不限制
- f设置创建文件的最大值.单位:blocksulimit -f 2048;文件大小最大为2048
- l设置在内存中锁定进程的最大值.单位:kbytesulimit -l 32;最大加锁内存为32
- m设置可以使用的常驻内存的最大值.单位:kbytesulimit -m unlimited;不限制
- n设置内核可以同时打开的文件描述符的最大值.单位:nulimit -n 128;最大可使用128个文件描述符
- p设置管道缓冲区的最大值.单位:kbytesulimit -p 512;管道缓冲区大小为512
- s设置堆栈(线程栈)的最大值.单位:kbytesulimit -s 512;线程栈大小为512
- t设置CPU使用时间的最大上限.单位:secondsulimit -t unlimited;不限制
- u最大用户进程数ulimit -u 64;用户最多可使用64个进程
- v设置虚拟内存的最大值.单位:kbytesulimit -v 200000;虚拟内存最大可用200000
修改限制的实现方式:

(1) ulimit命令

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

limits 生产中的 建议设置

*                soft      core              unlimited
*                hard     core             unlimited
*                soft      nproc           1000000
*                hard     nproc           1000000
*                soft      nofile            1000000
*                hard     nofile            1000000
*                soft      memlock       32000
*                hard     memlock       32000
*                soft      msgqueue     8192000
*                hard     msgqueue     8192000

用户切换  su

切换用户的方式:

su  用户名(UserName):非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换;即su 不加 - 切换子进程会接收父进程的一些配置

su - 用户名(UserName):登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换;即su 加 - 子进程不会接受父进程的 配置是完全独立

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

限制使用su命令的用户

1.以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
2.两行都注释也是允许所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
3.如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
4.如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

sudo

允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。

sudo特性:

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

配置文件格式说明:/etc/sudoers, /etc/sudoers.d/

配置文件中支持使用通配符 glob

#用户    登入主机    =    (代表用户)     命令
#user      host       =    (runas)       command
root     ALL=(root)                   A

user: 运行命令者的身份
host: 通过哪些主机 多个 192.168.91.100 - 110  localhost
(runas):以哪个用户的身份
command: 运行哪些命令

User和runas: 
 username(用户名)
 #uid(id号)
 %group_name(组名)
 %#gid(组id)
 user_alias|runas_alias(别名)   MYUSER=zhangsan,lisi
host:
 ip或hostname(IP地址或主机名)
 host_alias(别名)  localhost 
command:
 command name  (命令)
 directory     (文件夹里的命令)
 sudoedit      (可以编辑sudoers这个文件,变相变成管理员)
 Cmnd_Alias    (命令别名)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值