• 账号安全

usermod -L [] 锁定用户,使用户无法登陆

usermod -U [] 解锁用户,使其正常登录

chattr (change attribute) +i /etc/passwd :锁定passwd文件(+i +a只有root用户能用)

lsattr /etc/passwd

chattr -i /etc/passwd

touch test.txt

lsattr test.txt

chattr +a test.txt(文件内容无法修改,仅仅允许在文件末尾添加信息)

虽然test.txt是空文件,但是vim进去修改是不可以的,进去只能叫做修改,而不是追加

echo aaa >test.txt(失败,不能覆盖)

echo aaa>>test.txt(成功运行,+a仅允许再末尾进行添加)

chattr

i:锁定

a :只能追加

c:压缩

d:dump,导出

s:删除文件,彻底删除,从磁盘被删除

u:删除文件,不会从磁盘删除,可恢复

lsattr:

-R:递归

-d

  • 密码安全

su lihua(切换)

su - lihua

vim /etc/login.defs(不能修改密码长度)

这里其他选项都可以实现,但是唯独这个密码长度无法实现,需要去其他地方配置(/etc/pam.d)

系统安全及其应用_vim

这些密码长度对root无效

chage -d 0 zhangsan(下次登录立刻修改密码)

PAM认证(etc/pam.d):可以解决关于密码的一系列问题



  • 命令历史

1.history (不管命令对错,都会进行记录)

2.修改显示条数:vim /etc/porfile

系统安全及其应用_配置文件_02

这里显示的是1000行,可以改成你需要的行数

3.vim /etc/profile

系统安全及其应用_用户登录_03

profile:全局环境变量,在这里面export一个变量每个终端,每个用户abc这个变量都是111

export 是 shell 命令中的一个内置命令,用于将 shell 变量设置为环境变量,或者将函数标记为可从子进程访问

TMOUT是未操作自动关机时间(秒)

4.清空history

系统安全及其应用_用户登录_04

vim .bash_logout进入/root下的隐藏文件,输入

history -c 命令的作用是清除当前 shell 会话中的命令历史记录。但请注意,这只会影响当前 shell 会话的内存中存储的历史记录,并不会影响已经保存到文件中的历史记录。

长时间不输入命令自动锁定:export TMOUT=5(一次性的)

  • su

想要su root 时候不需要密码验证则可以进入/etc/pam.d/su

在 PAM (Pluggable Authentication Modules) 的配置中,auth sufficient pam_wheel.so trust use_uid这一行定义了一个认证规则,用于控制哪些用户可以执行特定的操作(通常是需要超级用户权限的操作)。

具体来说,这一行的配置意义如下:

  • auth: 表示这是一个认证规则,它定义了在用户尝试访问服务或执行某个操作时应该执行的认证过程。
  • sufficient: 表示如果此模块成功,则认证成功,并且不会尝试后续的 required或 optional模块。但是,如果此模块失败,则认证流程会继续到下一个 required或 optional 模块。
  • pam_wheel.so: 这是 PAM 的一个模块,它提供了基于 wheel组的访问控制。wheel组通常用于限制哪些用户可以执行 su 到 root 用户或其他需要超级用户权限的操作。
  • trust: 这告诉 pam_wheel.so模块要信任当前的用户。当与 use_一起使用时,这意味着如果当前用户的有效用户 ID (uid) 在 wheel组中,那么该用户将被视为可信任的,并允许执行操作。
  • use_uid: 这告诉 pam_wheel.so 模块使用当前用户的有效用户 ID 而不是实际用户 ID 或真实用户 ID (uid) 来检查 wheel组成员资格。

如果当前用户的有效用户 ID 在 wheel组中,那么该用户将被视为已认证(sufficient),并且允许执行该服务或操作,而无需进一步的认证检查。也就是说在wheel组里面的用户使用 su - root这个命令时候不需要root输入密码



  • sudo,

想要 sudo 【命令】 时候不输入密码,或者想让某个用户不需要认证就可以进行某些命令,都可以去/etc/sudoers进行修改

下面就是wheel组里面的成员可以无需密码进行提权,用户sudo过的历史将被记录到/var/log/sudo里面

用户切换:

su zhangsan(直接切换,不need密码),以当前环境切换用户,用户是zhansgan,环境是root的,zhansgan无法访问root的环境

su - zhangsan不采用当前用户环境信息,真正进入zhangsan他家






  • grub引导设置密码

秘文

加密(-pbkdf2)PBKDF(Password-Based Key Derivation Function)是一种基于密码的密钥生成算法

步骤:

1.grub-mkpasswd-pbkdf2(用于生成 GRUB 2 引导加载器密码哈希的命令)

2.根据提示输入密码,确认密码

3.复制生成的哈希值

grub.pbkdf2.sha512.10000.<哈希值> 的格式,把is后的进行复制

4.vim /etc/grub.d/01_users

(1)/etc/grub.d/ 目录下包含的是用于生成 GRUB 配置文件的脚本文件

(2)/etc/grub.d/01_users这个文件并不是 GRUB 2 中的一个标准文件,是一个自定义的脚本,用于在 GRUB 2 配置过程中添加一些特定的菜单项或设置。

(3)在 GRUB 2 中,/etc/grub.d/ 目录下的脚本会在 grub-mkconfig 或 update-grub 命令执行时被调用,用于生成最终的 GRUB 配置文件(通常是 /boot/grub/grub.cfg)。这些脚本通常以数字开头,以确定它们的执行顺序。数字较小的脚本会先执行,数字较大的脚本会后执行。

5.把刚刚复制的哈希密码粘贴到绿色光标后面

系统安全及其应用_配置文件_05

_pbkdf2是一种基于密码的秘钥生成算法

6.grub2-mkconfig -o /boot/grub2/grub.cfg

-o:指定输出路径

这个命令是扫描系统上所有可用的操作系统和内核,并根据 /etc/grub.d/ 目录下的脚本生成一个新的 GRUB 配置文件,然后将该配置文件写入指定的路径。

明文:

系统安全及其应用_配置文件_06

1.不需要算法,直接进入01_users文件进行编辑即可

2.grub2-mkconfig -o /boot/grub2/grub.cfg


操作

1.进入grub菜单界面按e进行编辑

系统安全及其应用_用户登录_07

2.输入用户root,然后明文密码123

系统安全及其应用_用户登录_08

3.成功!

系统安全及其应用_用户登录_09


  • 终端

1.tty默认6个,/etc/securetty里面放置了允许哪些tty可以使用,可以根据自己需求进行配置,例如你不想让root从2号tty登录,则注释掉tty2这一行即可,里面存放了所有tty号的信息那为啥默认6个呢?这是因为/etc/systemd/logind.conf这个文件的原因,vim这个文件在下图字段进行设置你想要的tty数量,这指定了NAutoVTs参数的值,即自动创建的虚拟终端的数量为12个

系统安全及其应用_用户登录_10

2.重启服务,systemctl restart systemd-logind,systemd-logind 是一个守护进程,它管理用户登录会话。它提供了多个特性,比如管理多个用户登录同一系统的情况,为每个登录用户设置独立的环境,管理屏幕锁定,等等

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

输入:touch /etc/nologin即可

  • 密码破解

1.检测弱口令

(1)解压包:tar -zxvf /root/john-1.8.0.tar.gz

(2)然后cd进去:cd john-1.8.0/src

(3)在/src中执行make clean linux-x86-64(换到 src 子目录并执行“make clean linux-x86-64”命令,即可执行编译过程)

不同的包编译过程是不一样的,像之前安装过的nginx还需要配置文件,然后最后还需要make install,这个clean是清除上一次的编译结果,重新进行全新的编译, linux-x86-64是指定系统的架构类型,要不然就不知道这是什么系统,造成编译不正常。不同的源码包,安装的方式各不相同,有的只需要make一下,编译好后就有了二进制的代码文件了,不需要安装,这就叫免安装。有的源码包不仅要make,还要make install,需要将二进制的代码文件放在指定的位置。有的甚至直接解压就可以直接用了。

系统安全及其应用_用户登录_11

(4)然后 john-1.8.0/run里面会生成一个john可执行程序

(5)对 shadow 文件进行复制,随便找一个文件进行覆盖即可

cp /etc/shadow /root/test

(6)把复制的文件传递给 john 程序进行检测

cd /john-1.8.0/run

./john /root/test

等待即可

(7)查看破解出来的密码:

./john --show /root/test

2.若弱口令无法检测则,则使用密码字典文件

(1)首先清空破解出来的密码:

在run里面执行 >john.pot

(2)/john-1.8.0/run里面提供了3000多个常用命令,如果不够可以自己进行添加,或者换成自己的文件

(3)./john --wordlist=./password.list /root/test(用password.list的密码当然可也可以换成自己的文件绝对路径对test文件进行破解)

(4)查看破解情况:./john --show /root/test



  • 网络扫描

查找nmap包:which nmap,发现在/usr/bin/nmap,所以它是一个普通用户都可以执行的命令。

nmap [扫描类型] [选项] <扫描目标...>

常用选项:

-p:扫描端口

-n:禁用反向DNS解析(加快扫描速度,一般就加上这个选项)

常用类型:

-sS:TCP SYN 扫描(半开扫描)

-sT:TCP 连接扫描

-sU:UDP 扫描

-sP:ping扫描


常用命令:

1.nmap通过发送一些包可以探测一些信息:nmap -sP 1.1.1.1/24

2.探测C段存活主机,可以用 |grep up 过滤存活的主机:nmap -sS 1.1.1.1-30 -p 80

3.SYN扫描,指定IP范围指定端口:nmap -sV 1.1.1.1 -p 1-65535

4.探测端口的服务和版本:nmap -O 1.1.1.1 或 nmap -A 1.1.1.1

5.nmap -p 21 192.168.4.0/24: 检测此网段中有哪些主机提供FTP服务

6.nmap -n -sP 192.168.4.0/24 检测网段中存活的主机

7.nmap -p 139,445 192.168.4.100-200 检测 IP 地址位于 192.168.4.100~200 的主机是否开启文件共享服务