Linux系统安全及应用

2024-01-08 14:20:21

目录

一、账号安全的基本措施

1、将非登录用户的shell设为nologin

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

3、删除无用账号

4、用chattr锁定重要账号文件(如passwd、shadow、fstab)

二、密码安全控制

1、对于新建用户可以修改/etc/login.defs文件里的内容来设置密码规则

三、命令历史记录限制

1、临时修改当前用户的历史命令条数

2、进入配置文件永久修改历史命令条数

3、退出当前终端将命令清除

4、开机后当前终端将命令清除

5、设置登录超时时间

四、切换和限制用户

1、su:切换用户

五、PAM安全认证

模块类型(module-type)

Control: ( 控制位)

3、shell模块

4、使用PAM模块

5、使用sudo机制提升权限

6、查看当前sudo配置文件,启用sudo操作日志

五、开关机安全控制

1、调整bios引导设置

2、grub限制

3、终端登录安全控制

4、网络扫描-NMAP

六、暴力破解密码

1.安装JR工具

2.检测弱口令账户

3.密码文件的暴力破解

4.简要介绍使用过程

总结:安全加固的措施:


一、账号安全的基本措施

1、将非登录用户的shell设为nologin

usermod -s nologin 用户名        #禁止登录

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

usermod -L lisi			#锁定账户
usermod -U lisi			#解锁账户
 
passwd -l lisi			#锁定账户方
passwd -u lisi			#解锁账户

3、删除无用账号

userdel 用户名			#删除用户

4、用chattr锁定重要账号文件(如passwd、shadow、fstab)

二、密码安全控制

1、对于新建用户可以修改/etc/login.defs文件里的内容来设置密码规则

1.适用于新建用户
vim /etc/login.defs 			#修改配置文件
-----此处省略部分注释及配置-------
PASS_MAX_DAYS   30				#修改密码有效期为30天
 
2.适用于已有用户
chage -M 30 zhangsan			#修改密码有效期
 
3.强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
chage -d 0 zhangsan				#设置下次登录强制修改密码

三、命令历史记录限制

登陆时自动清空历史命令条数

系统默认保存1000条历史命令记录

1、临时修改当前用户的历史命令条数

export HISTSIZE=100
#临时修改历史命令条数为100条

2、进入配置文件永久修改历史命令条数

vim /etc/profile       
#进入配置文件
 
export  HISTSIZE=100                      
#将全局历史命令条数由1000改为100
 
source /etc/profile    
#刷新配置文件,使文件立即生效

3、退出当前终端将命令清除

vim .bash_logout
echo " " > ~/.bash_history

4、开机后当前终端将命令清除

vim .bashrc
echo " " > ~/.bash_history

5、设置登录超时时间

vim /etc/profile    
#进入配置文件
 
export TMOUT=600                
#设置全局自动注销时间,声明600s没有操作就登出
 
source /etc/profile    
#更新配置文件

四、切换和限制用户

1、su:切换用户

可以切换用户身份,并且以指定用户的身份执行命令。

①su - 完全切换

②su? ?不完全切换(继承上一个用户)

wheel组是超级管理员组,权限大于root组

五、PAM安全认证

1、su命令的安全隐患:默认情况下任何人都允许su命令,有机会破开用户的登录密码

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

type:指模块类型,即功能

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

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

模块类型(module-type)

  • Auth 账号的认证和授权

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

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

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

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

Control: ( 控制位)

  • required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件

  • requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件

  • sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的

  • equired和requisiteoptional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置

  • optional 可选项

3、shell模块

功能:检查有效shell

帮助:man pam shells、

4、使用PAM模块

rpm -qi pam          #查看pam详细信息
 
rpm -ql pam          #查看pam所有文件

第一步:先确定你要使用什么服务程序

  • su? 切换用户程序

第二步

  • 写配置文件? /etc/pam.d/*? ? (配置文件的位置)

5、使用sudo机制提升权限

①sudo命令的用途及用法

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

用法:sudo授权命令

②配置sudo授权

可以使用visudo(通常使用visudo,因为visudo可以自动检查语法是否输入错误)
也可以使用vim /etc/sudoers进行配置(此文件默认权限为440,保存时必须 wq!强制执行操作)
可以使用通配符“ * ”号任意值和“ !”号进行取反操作
权限生效后,输入密码后5分钟可以不用重新输入密码
③格式:

用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
 
zhu1 ALL=(root) /sbin/ifconfig				#举例

用户: 直接授权指定的用户名,或采用“&组名"的形式(授权一个组的所有用户)。
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机。
(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令。
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“。"进行分隔。ALL则代表系统中的所有命令。


6、查看当前sudo配置文件,启用sudo操作日志

启用sudo操作日志

  • 需启用Defaults logfile配置
  • 默认日志文件:/var/log/sudo
  • 操作:在/etc/sudoers末尾添加Defaults logfile="/var/log/sudo"

查询授权的sudo操作

  • sudo -l

五、开关机安全控制

1、调整bios引导设置

①将第一引导设备设为当前系统所在硬盘

②禁止从其他设备(光盘、U盘、网络)引导系统

③将安全级别设为setup,并设置管理员密码

2、grub限制

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

3、终端登录安全控制

限制root只在安全终端登录

  • 安全终端配置:/etc/securetty
  • tty1~ 6是文本型控制台,tty7 是X Window图形显示管理器。可以通过CtrI+Alt+F1 (F1-F7键) 切换到对应的登录控制台。

示例:禁止root在tty2和tty3终端登录

第一步:更改安全终端配置文件

②禁止普通用户登录

建立/etc/nologin文件

删除nologin文件或者重启后恢复正常

touch /etc/nologin
#禁止普通用户登录
 
rm -rf /etc/nologin
#取消上述登录限制,删除后即可恢复

4、网络扫描-NMAP

是一个强大的网络扫描、安全、检测工具

nmap [扫描类型]  [选项]  <扫描目标>
 
netstat natp								   #查看正在运行的使用TCP协议的网络状态信息
netstat -natp | grep httpd			           #实际操作(httpd换成80也可以)
 
netstat -naup								   #查看正在运行的使用UDP协议的网络状态信息


-p?? ?指定扫描的端口。
-n?? ?禁用反向DNS解析(以加快扫描速度) ip转换成 域名 ?12222 2www.baidu.com
-sS?? ?TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT?? ?TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF?? ?TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU?? ?UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP?? ?ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0?? ?跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。


六、暴力破解密码

弱口令检测一 John the Ripper.
John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。

1.安装JR工具

安装方法 make clean 系统类型
主程序文件为john


2.检测弱口令账户

获得Linux/Unix服务器的shadow文件;
执行john程序,将shadow文件作为参数


3.密码文件的暴力破解

准备好密码字典文件,默认为psaaword.lst
执行john程序,结合--wordlist=字典文件(有更强大的字典可以使用).


4.简要介绍使用过程

①将john-1.8.0.tar.gz安装包拖入Linux系统内

②移动至/opt 然后解压

③编译安装指定程序

④添加三个用户并设置简单密码,用于下面测试破解

⑤将/etc/shadow 文件复制到/opt下进行暴力破解

⑥可以使用--show进行查看破解处的密码

总结:
安全加固的措施:

1.将非登录用户shell设置为nologin

2.锁定长期不使用的账号(锁定用户)

3.删除无用账号

4.chattr锁定配置文件(重要文件passwd、shadow、fstab等加 i 权限,不让删除)

5.设置密码复杂性规则(长度、特殊字符、失效时间等)密码策略

6.修改history,记录历史命令,尽量缩短记录历史命令的条数

7.禁止su root,切换超级管理员

8.设置sudo权限,禁用不安全命令

9.给GRUB设置密码

10.只允许BIOS从硬盘启动,关闭除了硬盘启动外的(光驱、udisk 、网络)

11.给BIOS设置密码

12.限制root只在安全终端登录

13.禁止普通用户登录

14.改掉大家都知道的服务端口

15.做好日志权限管理

16.内核参数调整
?

文章来源:https://blog.csdn.net/rmh0713/article/details/135409614
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。