一、账号安全控制
1.如何使用户不能登录?
1.切换到esdeath查看是否可以切换到esdeath用户
在/etc/passwd文件中过滤出用户esdeath的信息
更改用户esdeath登录的shell为/sbin/nologin
再看看是否还能切换到用户esdeath
2.锁定长期不使用的账号
1.锁定用户:usermod -L 用户名
2.解锁用户:usermod -U 用户名
3.删除无用的用户:userdel -r 用户名
4.锁定配置文件:chattr和查看配置文件的属性状态lsatter
chattr命令用于修改文件或目录的属性,设置文件的特殊属性,使其具有更高级的保护或控制,可以防止恶意修改或者误修改,保证系统和数据的安全性
锁定配置文件 /etc/passwd 和 /etc/shadow
chattr +i /etc/passwd /etc/shadow
查看配置文件的属性状态:
lsattr /etc/passwd /etc/shadow
解锁配置文件命令格式:
chattr -i /etc/passwd /etc/shadow
2.密码安全控制
1.设置密码有效期
设置密码规则:vim /etc/login.defs
在图示部分修改来设置密码
2.改变已有用户的密码:chage
命令格式:chage 选项 用户名
选项 | 功能 |
-m | 密码可更改的最小天数,m=0代表任何时候都可以更改密码 |
-M | 密码保持有效的最大天数 |
-w | 用户密码到期前,提前收到警告信息的天数 |
-E | 账号到期的日期,过了这天,此账号将不可用 |
-d | 上一次更改的日期 |
-i | 停滞时期,如果一个密码已过期这些天,那么此账号将不可用 |
-l | 例出当前的设置,由非特权用户来确定他们的密码或账号何时过期 |
3.设置自动注销时间
设置自动注销时间(对当前用户生效)vim .bashrc
4.终端自动注销
1.600秒后自动注销:echo $TMOUT=600
3.历史命令限制
1.查看历史命令:history
2.注销时自动清空命令历史:vim .bash_logout
3.修改历史命令配置:vim /etc/profile
. .bashrc=source .bashrc | 刷新文件,应用修改效果等同于重启刷新 |
echo $x | 查看设置的变量,如果是自定义的变量需要加上export |
export 需要生效的 | 全局生效 |
echo ... | passwd -- stdin 用户名 | 非人机交互式改密码 |
4.用户切换
1.用户切换:su
su(switch user):切换用户身份,并且以指定用户的身份执行命令
命令格式:su 选项 用户名
切换到root用户需要密码
切换到普通用户则不需要
2.显示当前登录用户:whoami
3.查看su命令的操作日志,绝对路径:/var/log/secure
这里可以用less或tail查看,这里推荐tail
5.用户提权
1.使用户以超级用户的身份去执行命令:sudo
命令格式:sudo 选项 命令
选项 | 功能 |
-V | 显示版本编号 |
-l | 显示出自己的权限(执行sudo的使用者) |
-k | 将会强制使用者在下一次执行sudo时需要输入密码(无论多久) |
-p | 可以更改问密码的提示语,其中%u会代换为使用者的账号名称,%h会显示主机名称 |
-u 用户名 | 指定用户的权限 |
-s | 执行环境变数中的SHELL所指定的shell |
2.编辑配置文件的绝对路径:/etc/sudoers
1.vim /etc/sudoers
2.用户eva通过任何主机登入系统后,可以以root的身份运行ls命令(命令前必须加sudo)
3.这里使用wq!强制保存退出
4.切换到eva用户使用ls测试
5.可以用eva使用ls命令
3.配置详解
1.root字段:用户名或UID,%组名或%GID
2.第一个ALL字段:IP地址或主机名,ALL代表任意主机
3.第二个ALL字段:用户字段,用户名或UID,ALL代表任意用户
4.第三个ALL字段:命令字段(绝对路径)可以是,命令名(command name),文件夹里的命令(directory),可以编辑sudoers这个文件(sudoedit),变相变成管理员,命令别名(Cmnd_Alias)
4.sudo子目录
如果将所有提权都放在配置文件/etc/sudoers下不便于管理,可以通过在/etc/soduers.d/下创建子目录,可以更好地管理sudo的授权规则
5.区别
身份验证方式:
su命令(切换用户)需要输入目标用户的密码来切换到目标用户的身份。
sudo命令(以超级用户执行)需要输入当前用户的密码来验证身份。
执行命令的方式:
su命令会切换用户的环境,包括当前工作目录和环境变量等。在切换用户后,需要重新设置所需的工作环境。
sudo命令在当前用户的环境下以超级用户身份执行命令,不会切换用户的环境。这使得在执行完命令后,可以继续以当前用户身份继续工作,而不需要重新设置环境。
授权:
su命令切换到目标用户后,拥有目标用户的完整权限。
sudo命令可以按需授予用户对特定命令或特定命令组合的访问权限
二、PAM安全认证流程
1.PAM(Pluggable Authentication Modules)
插件式的验证模块,PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API 接口,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证,PAM是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式
http://www.linux-pam.org/:官方手册
2.PAM相关文件
包名:pam
模块文件目录:/lib64/security/*.so
特定模块相关的设置文件:/etc/security/
man 8 +模块名:查看帮助
应用程序调用PAM模块的配置文件
1.主配置文件:/etc/pam.conf,默认不存在,一般不适用主配置
2.为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
注:如果/etc/pam.d存在,/etc/pam.conf将失效
3.PAM工作原理
PAM认证遵循顺序:Service(服务)---PAM(配置文件)---pam_*.so
PAM认证首先要确定一项服务,然后加载相应的PAM配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
这里查看su的PAM配置文件做实例,cat /etc/pam.d/su
查看su命令内容:cat /etc/pam.d/su
1.第一列模块类型
1.auth:账号的认证和授权,用户名
2.Account:账户的有效性,与账户管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例:root用户只能从控制台登录)
3.Password:用户修改密码时密码复杂度检查机制等功能
4.Session:用户会话期间的控制,如:最多打开的文件数,最多的进程数等
5.-type:表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
PAM验证
2.第二列控制类型Control Flags,用于PAM验证类型的返回结果
1.required验证失败时依然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session类型)
3.第三列要调用的功能或参数
三.*limit
limit:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
1.ulimit命令
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制
ulimit的设定值是per-process的,也就是说,每个进程有自己的limitis值,使用ulimiti进行修改,立即生效
ulimiti只影响shell进程及其子进程,用户登出后失效
可以在profile中加入ulimiti的设置,变相的做到永久生效
ulimit -a :查看当前所有的资源限制
命令 | 功能 |
-H | 设置硬件资源限制 |
-S | 设置软件资源限制 |
-a | 显示当前所有的资源限制 |
-c size | 设置core文件的最大值,单位:blocks |
-d size | 设置数据段的最大值,单位:kbytes |
-f size | 设置创建文件的最大值,单位:blocks |
-l size | 设置在内存中锁定进程的最大值,单位:kbytes |
-m size | 设置可以使用的常驻内存的最大值,单位:kbytes |
-n size | 设置内核可以同时打开的文件描述符的最大值,单位:n |
-p size | 设置管道缓冲区的最大值,单位:kbytes |
-s size | 设置堆栈的最大值,单位:kbytes |
-t size | 设置CPU使用时间的最大上限,单位:seconds |
-u size | 最大用户进程数 |
-v size | 设置虚拟内存的最大值,单位:kbytes |
unlimited | 一个特殊值,表示不限制 |
注:vim /etc/sysctl.conf:专门用来修改内核参数的(重要
内核参数:
只读:只用于输出信息
四、nmap
1.端口扫描工具:nmap
选项 | 功能 |
-p | 指定扫描的端口 |
-n | 禁用反向DNS解析(以加快扫描速度) |
-sP | ICMP扫描,类似于ping,快速判断目标主机是否存在,不做其他扫描 |
1.yum -y install nmap:安装nmap
2.检测192.168.7.130/24网段有哪些主机
3.服务和端口号
服务 | 端口号 |
HTTP | 80 |
HTTPS | 443 |
Telnet | 23 |
FTP | 21 |
SSH(安全登录)、SCP(文件传输)、端口重定向 | 22 |
SMTP | 25 |
POP3 | 110 |
WebLogic | 7001 |
TOMCAT | 8080 |
WIN2003远程登录 | 3389 |
Oracle数据库 | 1521 |
MS SQL*SEVER数据库sever | 1433 |
MySQL数据库sever | 3306 |
vim /etc/security/limits.conf #突破进程打开文件的限制
* - nofile 100000 #用户*代表所有用户
Mianshi:题目
linux系统优化
修改yum仓库源,改成国内,加快速度
建立统一的管理用户
Linux系统安全(安全设置)
尽量不要使用超级管理员启动程序
修改一些常见的端口号如22
telnet ip地址 端口号 ---不常用,主要作为测试
用户安全:复杂密码,清理不用的用户,限制历史命令条数,加锁重要配置文件,启用pam做一些安全加固
二、系统引导和登录控制
1.开关机安全控制
1.调整BIOS引导设置
1.将第一引导设备设为当前系统所在硬盘
2.禁止从其他设备(光盘、u盘、网络)引导系统
3.将安全级别设为setup,并设置管理员密码
2.GRUB限制
1.使用grub2-mkpasswd-pbkdf2生成密钥
2.修改/etc/grub.d/00_header文件中,添加密码记录
3.生成新的grub.cfg配置文件