Linux系统安全及应用(账号权限管理、登录控制、弱口令、端口扫描)

目录

[1. 账号管理与权限控制](#1. 账号管理与权限控制)

[1.1 基本安全措施:](#1.1 基本安全措施:)

[1.1.1 账号管理和文件权限](#1.1.1 账号管理和文件权限)

[1.1.2 密码安全控制](#1.1.2 密码安全控制)

1.1.3历史命令和自动注销

[1.2 用户切换与提权:](#1.2 用户切换与提权:)

[2. 系统引导与登录控制](#2. 系统引导与登录控制)

[2.1 开关机安全控制:](#2.1 开关机安全控制:)

[2.1.1 GRUB](#2.1.1 GRUB)

[2.1.2 限制更改GRUB引导参数](#2.1.2 限制更改GRUB引导参数)

[2.2 终端登录控制:](#2.2 终端登录控制:)

[3. 弱口令检测与端口扫描](#3. 弱口令检测与端口扫描)

[3.1 弱口令检测-JR:](#3.1 弱口令检测-JR:)

[3.2 端口扫描-NMAP:](#3.2 端口扫描-NMAP:)

4.操作举例(帮助理解)


1. 账号管理与权限控制

1.1 基本安全措施:

1.1.1 账号管理和文件权限

#检查账号情况

cat /etc/passwd | grep /sbin/nologin #禁止终端登录的账号

cat /etc/passwd | grep -v /sbin/nologin #重点关注没有禁止终端登录的账号 invert match反向匹配

#禁止账号登录

usermod -s /sbin/nologin nologintest #禁止用户nologintest终端登录 -s shell 指定新的shell

#恢复账号登录

usermod -s /bin/bash nologintest #恢复用户nologintest终端登录

#锁定账号

passwd -l nologintest #-l lock 锁定账号

#查看锁定状态

passwd -S nologintest #-s status 查看账号锁定状态

cat /etc/shadow #用户名后面有两个!!号

#解锁账号

passwd -u nologintest #-u unlock 解锁账号

#当某用户长期无人使用时,为了安全考虑可以先进行锁定

#锁定账号

usermod -L zhangsan #锁定张三用户

#查看锁定状态

passwd -S zhangsan

#解锁账号

usermod -U zhangsan #解锁张三用户

特殊权限 suid sgid sticky

#suid 冒险位,执行二进制文件(执行文件)与文件所有人有关,与谁来执行无关(执行者以所有者的权限运行)

#去掉suid冒险位

#sgid 强制位,对目录生效,在此目录中创建文件和目录的属组都跟父目录的属组相同

#sticky 粘制位,目录中的文件只能被文件拥有者删除,root也可以删除

文件ACL getfacl setfacl

对文件的权限进行附加说明的权限设定方式,独立于基础权限

#查看权限

#设定ACL权限

#取消lisi用户的ACL权限

#取消所有用户的ACL设置,恢复文件默认设置

文件属性 chattr lsattr +i +a

#基本权限rwx概念

#默认root用户新建目录权限755,新建文件权限644。普通用户新建目录权限775,新建文件权限664

#修改umask配置文件(/etc/bashrc,/etc/profile),umask命令可以查看umask的值

#锁定配置文件,文件不能删除,不能更改,不能移动

chattr +i /etc/passwd #chattr change attribution

#设置了`i'属性的文件不能进行修改:你既不能删除它,也不能给它重新命名,你不能对该文件创建链接,而且也不能对该文件写入任何数据.只有超级用户可以设置或清除该属性.

#查看锁定情况

lsattr /etc/passwd

----i----------- /etc/passwd

#解锁配置文件

chattr -i /etc/passwd

1.1.2 密码安全控制

将密码的有效期设为30天

#新创建的用户默认设定

vim /etc/login.defs

PASS_MAX_DAYS 30 #默认值PASS_MAX_DAYS 99999

#已有用户修改设定

chage -M 30 nologintest #-M MAX_DAYS 不是-m 修改的是/etc/shadow配置文件

#账户安全限制,打开/etc/login.defs 文件,修改下列信息,修改的信息只限制新创建的用户

PASS_MAX_DAYS 20 #密码最长使用期限

PASS_MIN_DAYS 0 #密码最短使用期限

PASS_MIN_LEN 5 #密码最小字符

PASS_WARN_AGE 7 #密码临近多久到期时发出警告

强制用户下次登录时重设密码

chage -d 0 nologintest #-d LAST_DAY

1.1.3历史命令和自动注销

#修改历史记录保存条数

#统一管理

vim /etc/profile

HISTSIZE=200 #历史记录的保存条数,默认是1000

#单独定制

vim ~/.bash_profile

export HISTSIZE=200

#注销用户并清除history历史记录

vim ~/.bash_logout

echo > ~/.bash_history

#修改闲置超时时间

#统一管理

vim /etc/profile

export TMOUT=200 #单位为秒

#单独定制

vim ~/.bash_profile

export TMOUT=200

1.2 用户切换与提权:

su命令

su - root # - 切换为新用户的环境变量

whoami

限制某些用户可以使用su命令

useradd pamtest01

useradd pamtest02

gpasswd -a pamtest01 wheel #将pamtest01用户加入至wheel组内

cat /etc/group | grep wheel #确认wheel组成员

#开启pam认证

vim /etc/pam.d/su

auth required pam_wheel.so use_uid #将注释符号去掉,非wheel组成员无法使用su命令

验证su命令限制生效

sudo命令

作用:将root命令授权给普通用户使用

授权的基本配置格式:

user MACHINE=COMMANDS

user(用户);授权的用户名,或采用%组名的形式

MACHINE:使用此配置文件的主机名称,一般设为localhost或者实际的主机名即可。

COMMANDS:允许授权的用户通过sudo方式执行的特权命令。多个命令之间以逗号分隔。

#添加用户授权前

#添加用户授权后

#禁止zhang用户以root权限查看/etc/shadow文件,其他文件可以以root权限查看

#对zu1授权

测试user1,user2是否可以使用fdisk -l命令

#sudo别名使用

User Aliases(用户别名),别名需要大写

#查看当前用户被授权的命令有那些

​​​​​​​

#sudo日志/var/log/secure

#默认情况下通过sudo方式执行操作并不记录,若要启用sudo日志记录,需要在/etc/sudoers 文件内增加 Defaults logfile 设置

​​​​​​​ ​​​​​​​

2. 系统引导与登录控制

2.1 开关机安全控制:

增加GRUB引导时间。

vim /boot/grub2/grub.cfg

if x$feature_timeout_style = xy ; then

set timeout_style=menu

set timeout=20

else

set timeout=20

fi

2.1.1 GRUB

GNU GRUB(GRand Unified Bootloader简称"GRUB")是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

2.1.2 限制更改GRUB引导参数

如果想编辑grub引导参数,按e键后,需要输入用户名密码。

#给编辑grub引导参数加密码

grub2-setpassword

#这个过程创建了一个/boot/grub2/user.cfg配置文件,其中包含已经加密的密码。密码的用户是root。如果想要删除密码,直接删除/boot/grub2/user.cfg文件就可以。

2.2 终端登录控制:

#限制普通用户登录终端

touch /etc/nologin #不需要更改任何信息,有这个文件就无法登录

rm -rf /etc/nologin #删除后普通用户就可以登录

3. 弱口令检测与端口扫描

3.1 弱口令检测-JR:

John the Ripper 开膛手约翰

安装过程

tar -zxvf john-1.9.0.tar.gz -C /usr/src

cd /usr/src/john-1.9.0

cd src

make clean linux-x86-64

#在run目录下 就会生成john工具

JR安装弱口令检测使用方法

1、复制shadow文件

cp /etc/shadow /root/shadow.txt

2、直接查找

cd /usr/src/john-1.9.0/run/

./john /root/shadow.txt

#查看已经检测出来的用户有哪些

./john --show /root/shadow.txt

#可以手动将需要添加的密码手动写入其中,做实验使用

vim password.lst

#还可以结合用户自己选择的字典文件匹配查看

./john --wordlist=./password.lst /root/shadow.txt

3.2 端口扫描-NMAP:

yum安装nmap

yum -y install nmap

nmap使用

NMAP的扫描语法

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

常用的扫描类型

-sS,TCP SYN扫描(半开)

-sT,TCP 连接扫描(全开)

-sF,TCP FIN扫描

-sU,UDP扫描

-sP,ICMP扫描

-P0,跳过ping检测

nmap 127.0.0.1 #查看当前主机的TCP所有开放端口

nmap -sU 127.0.0.1 #查看当前主机的UDP所有开放端口

nmap -p 22 192.168.37.0/24 #查看192.168.37.0网段所有主机22端口的开放情况,ssh

nmap -n -sP 192.168.37.0/24 #检测192.168.37.0/24网段有哪些存活主机,-n 禁用反向解析

4.操作举例(帮助理解)

相关推荐
雯宝15 小时前
mnt_init 函数
linux
律宏阔21 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔21 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴21 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千21 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei3721 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3721 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3721 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh21 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW21 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux