Linux系统安全及应用

一、账号安全控制

1.系统账号清理

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

usermod -s /sbin/nologin 用户名

锁定长期不使用的账号

usermod -L 用户名   或者  passwd -l 用户名

passwd -S  用户名(查看用户是否锁定)

删除无用的账号

userdel  [-r]  用户名

锁定账号文件

chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看文件状态
chattr -i /etc/passwd /etc/shadow 解锁文件

600

2.密码安全控制

设置密码有效期

修改密码配置文件,适用于新建用户
vim /etc/login.defs
PASS_MAX_DAYS  天数(99999默认表示永不过期)
cat /etc/shadow | grep lisi 查看文件并过滤出lisi

601

修改密码配置文件,适用于已有用户
chage -M 天数 用户名
cat /etc/shadow | grep lisi 查看文件并过滤出lisi

602

用户下次登陆时更改密码

强制在下次登录时更改密码
chage -d 0 lisi
cat /etc/shadow | grep lisi

603

3.命令历史限制

3.1限制记录的命令条数

vi /etc/profile 
export HISTSIZE=20
source /etc/profile

605

3.2清空历史命令

临时清空:history -c
永久清空:vi ~/.bashrc 或者 /etc/profile
         echo "" > ~/.bash_history

4.终端自动注销

闲置600秒后自动注销
vi /etc/profile
export TMOUT=600
source /etc/profile

二、切换用户

1.用户之间的切换

用途及用法

  • 用途:切换用户
  • 格式:su - 目标用户

密码验证

  • root -任意用户,不验证密码
  • 普通用户-其他用户,验证目标用户的密码

2.限制使用su命令的用户

vim /etc/pam.d/su  启用pam_wheel认证模块
auth sufficient pam_rootok.so  允许root不需要密码su其他用户
auth required pam_wheel.so use_uid 允许加入wheel的su root

606

607

查看su命令切换的日志:路径:/var/log/secure

608

3.PAM安全认证

PAM:可插拔式认证模块

可插拔:可以理解为可配置、可定制的一个模块。

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式PAM工作原理

3.1.PAM工作原理

PAM认证一般遵循的顺序:service(服务)--->PAM(配置文件)--->pam_*.so

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

用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不用的。

如果想查看某个程序是否支持PAM认证,可以用ls命令进程查看/etc/pam.d 下面是否有相应的配置文件

3.2.PAM配置文件介绍

PAM的配置文件中的每一行都是一个独立的认证过程,它们从上往下的顺序依次由PAM模块调用。

每一行可以区分为三个字段:

认证类型 、 控制类型 、 PAM模块及参数

609

第一列代表PAM认证模块类型

  • auth(认证管理) : 对用户身份进行识别,如提示输入密码,或者判断是否为root

  • account(账户管理) : 对账号各项属性进行检查,如是否允许登录系统,账号是否已过期,是否达到最大用户数等。

  • password(密码管理) : 使用用户信息来更新数据,如修改用户密码。

  • session (会话管理) : 定义登录前以及退出后要进行的会话草最管理,如登录连接信息,用户数据打开和关闭,挂载文件系统。

第二列代表PAM控制标记

610

  • requird : 表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续同类型的下一个验证,所有此类型的模块都执行完成后,再返回失败。
  • requisite : 和requird类型,但如果此模块返回失败,则立刻返回失败,并且此类型失败。
  • sufficient: 如果此模块返回成功,一般不用于验证,只是显示信息(通常用于session类型)
  • optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
  • include : 表示在验证过程中,调用其他的PAM配置文件,比如很对应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块

  • 默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径,同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数

  • 这个需要根据所使用的模块来添加。传递给模块的参数,参数可以有多个,之间用空格分开。

4.小结

PAM简单来说就是管理系统“默认”程序/服务的权限程序

三、提升权限机制sudo

1.sudo命令的用途及用法

  • 用途:以其它的用户身份(如root)执行授权的命令
  • 用法:sudo 授权命令

2.sudo参数命令

选项作用
-l列出用户在主机上可用的和被禁止的命令,一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的。
-v验证用户的时间戳,如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作,可以跟踪最新的时间戳
-u指定以用户执行特定操作
-k删除时间戳

sudo -l :查看当前用户获得哪些sudo授权

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3d6b2ybX-1681370183928)(C:\Users\10311\Desktop\课程图片\4.12\612.png)]

3.sudo命令授权

配置sudo命令授权的配置文件在:

613

以上两个都可进入授权配置文件,第一个配置文件的权限为440,保存退出时,需要:wq!

格式

用户/组授权
用户名/用户别名    主机名/别名=程序列表/别名

%组名   主机名 = 程序列表
用户名  主机名=(用户)程序列表
  • 用户:直接授权指定的用户名,或采用"组名"的形式(授权一个组的所有用户)
  • 主机名:使用此规则的主机名,每配置过主机名时可以用locathost,有配过主机名
    则用实际的主机min,ALL代表带所有主机。
  • 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以逗号进行分隔。ALL代表所有命令
zhangsan   ALL=/sbin/ifconfig
#zhangsan用户下的所有主机都可以使用ifconfig命令

lisi  localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff
lisi用户下的localhost主机,可以使用root的所有命令,但是reboot和poweroff命令不能使用

wangwu  ALL=(root)NOPASSWD:/bin/kill,/usr/bin/killall
xiaoming用户下的所有主机,可以使用kill和killall命令,并且不需要验证密码

4.sudo用户别名案例

  • 当使用相同授权的用户较多,或者授权的命令较多时,可以采集几种定义别名。
  • 用户、主机、命令部分都可定义为别名(别名必须为大写),分别通过关键字:User_Alias、Host_Alias、Cmnd_Aliasl来进行设置

用户别名的语法格式

别名解释
User_Alias用户别名:包含用户、用户组(用户组用%引导),还可以包含其它已经使用的别名
Host_Alias主机别名:主机名、IP、网络地址、其它主机名(使用!进行取反)
Comnd_Alias命令路径:目录(此目录所有命令),其它事先定义过的命令别名

案例:zhangsan ,lisi 除了重启 关机命令都可以使用

614

615

616

四、开关机安全机制

调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

GRUB限制

  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

1.限制更改GRUB引导参数

通常情况下载系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

方法一:
grub2-mkpasswd-pbkdf2   
#根据提示设置GRUB菜单的密码,后面自动生成加密密码

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
#备份配置文件

vim /etc/grub.d/00_header
#进入修改配置文件
****
cat << EOF
set superusers="root"
加密密码内容
EOF
****

grub2-mkconfig -o /boot/grub2/grub.cfg
#使用grub2-mkconfig命令生成新的grub。cfg配置文件

方法二:
grub2-setpassword
#一步到位

650

vim /etc/grub.d/00_header里面

651

2.终端登录安全控制

2.1 禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或重启后恢复正常

禁止普通用户登录,当服务器正在备份或调试等维护工作时,可能不希望有新的用户登录系统。这时候,只需要简单的建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制)

用途:建立在服务器维护期间临时使用

2.2 指定终端id进行登录

安全终端配置:/etc/securetty

652

五、网络端口扫描nmap

1.nmap介绍

端口取值范围: 0-65535。0是一个预留的特殊端口。

扫描目标: 主机名,IP地址,网络地址等,多个目标以空格分隔。

常用选项

选项参数
-p分别用来指定端口扫描
-n禁止反向DNS解析(加快扫描速度)

653

常用的扫描类型

扫描类型作用
-sS半开扫描: 值向目标发送SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接,如果没收到则认为目标端口未开放
-sT连接扫描: 这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,如果失败则认为目标端口未开放
-sFTCP FIN 扫描: 开放的端口会忽略这种数据包,关闭的端口会回应RST数据白,许多防火墙只对SYN数据包进行简单过滤,而忽略了其它形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sUUDP扫描: 探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sPICMP扫描: 类似于ping检测,快速判断目标主机是否存活,不做其它扫描
-P0跳过ping检测: 这种方式认为所有的目标主机时存活的,当不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。

2.案例

①nmap -sT (扫描常用的TCP)

654

现在开另一台系统,配置好ip为:20.0.0.51 ,DNS,关闭防火墙。

在用nmap去扫描查看

655

②nmap -sU (扫描常用的UDP)

656

③nmap -sP (ICMP扫描)

657

设置禁ping

  • 内核的配置文件:/etc/sysctl.conf

658

六、netstat命令

查看当前操作系统的网络连接状态、路由表、接口等信息,它是了解网络状态及排除网络故障的有效工具。

常用选项

选项作用
-n以数字的形式显示相关的主机地址,端口等信息
-r显示路由表信息
-a显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l显示处于监听(Listening)状态的网络连接及端口信息
-t查看TCP相关信息
-u查看UDP相关信息
-p显示与网络连接相关的进程号、进程名称信息(需要root权限)

用法:

①通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息
②配合管道符grep过滤出特定的记录

netstat -natp    #查看正在运行的使用TCP协议的网络状态信息

netstat -naup    #查看正在运行的使用UDP协议的网络状态信息

实例:

659

660

七、总结

1.账号管理

  • 锁定对象:账号、文件/目录
    • 账号锁定:passwd 、 usermod
  • 文件/目录锁定:chattr +i 、文件/目录解锁:chattr -i
  • 查看文件锁定:lsattr

2.密码安全

  • chage命令---->控制账号的密码
  • 修改配置文件:/etc/logine.defs

3.历史命令限制

  • linux中执行命令的同时,会保存在内存中然后被写入到磁盘中,磁盘的目录为:~/.bash_hostory
  • 所以想要完全清空,需要清空缓存(hostory -c)和清空磁盘(eho “ ” > ~/.bash_hostory)
  • 或者在~/.bash_logout中定义清除日志,终端在关闭时执行的文件
  • 或者在~/.bash_profile ( ~/.bashrc) 中定义,终端在开启时执行的文件
  • /etc/profile:系统所有用户生效的配置文件(环境变量)

4.su切换用户登录

  • 管理su命令的用户或附加组(wheel)对象
  • 配置文件:PAM模块的配置:/etc/pam.d
  • 可实现的是:控制用户,分为root用户和组用户(wheel组),可以将普通用户添加到wheel组中,来实现“赋权”---->可以使用su切换

5.sudo提权(暂时用root用户的权限来执行操作)

  • 使用 visudo 或 /etc/sudoerc 进行编辑
  • 标准格式:用户 或 %组名(表示组) 主机名=命令(绝对路径)
  • 提权的目的:可以有效减少重复输入root密码的次数/频率。

6.PAM原理

  • 用户---->访问服务----->进项pam验证------>调用对应的so模块
  • 如何查看指定的一个服务程序或命令工具,是否能被pam管理?
    • ls /etc/pam.d/ |grep 名称对象

7.终端登录

  • 对于用户登录终端的id进行限制
  • 控制的文件:/etc/securetty ------》控制指定的终端ID
  • 可以在非远程登录的终端上,来切换终端。

8.nmap端口扫描

  • 可以使用nmap扫描主机。主要输出的内容在于端口、协议、主机ip、是否存活。
  • 作用场景:

①扫描指定协议(TCP/UDP)端口的目标IP、主机名、网络号是否开启

②扫描指定网段中哪些主机是否存活/开启的

9.netstat命令

  • netstat是查看指定协议的网络信息
  • 包含:

① 协议(TCP/UDP) TCP
② 队列 queue 接收队列 0
③ 队列 queue 发送队列 0
④ IP:Port :::80(IPV6) 192.168.226.131:80(接收端) 192.168.226.132:Port(发送端)
⑤ LISTEN 状态 包含了连接状态、断开状态、等待状态
⑥ PID/进程任务 3459/httpd
c/pam.d/ |grep 名称对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值