小言_互联网的博客

Linux系统安全

384人阅读  评论(0)

一、账号安全控制

(一)系统账号清理

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

usermod -s /sbin/nologin用户名

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

usermod -L用户名 passwd-l 用户名 --------------锁定账号

passwd-S用户名 ----------------------------查看用户状态
passwd -u 用户名 ------------------------------------解锁账号

3、删除无用的账号

userdel -r 用户名

4、锁定账号文件passwd、shadow

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

(二)密码安全控制

1、设置密码有效期

[root@localhost ~]# vi /etc/login.defs----------------修改密码配置文件,适用于新建用户
PASS_ MAX_ DAYS 30

[root@localhost ~]# chage -M 30 zhangsan-----------适用于已有用户


2、要求用户下次登录时修改密码

[root@localhost ~]# chage -d 0 zhangsan-------------强制在下次登录时更改密码
[root@localhost ~]# cat /etc/shadow | grep zhangsan--------------shadow文件中的第三个字段被修改为

(三)命令历史限制

1、减少记录的命令条数

[root@localhost ~]# vi /etc/profile----------------系统环境变量配置文件(所有用户登录都会执行)
export HISTSIZE=200


2、登录时自动清空命令历史

[root@localhost ~]# vi ~/.bashrc
echo “” > ~/.bash_ history

(四)终端自动注销

1、闲置600秒后自动注销

[root@localhost ~]# vi letc/profile
export TMQUT=600
[root@localhost ~]# source /etc/profile

二、使用su命令切换用户

(一)用途用法及密码验证

▶作用:切换用户
▶格式:su [-] 目标用户 #带“-”表示使用目标用户的登录shell环境,不加环境变量不变。
▶可登录的用户一般分两种种,超级用户root、普通用户。
▶当root切换到任意的用户时,不需要密码。但当普通用户切换其他用户的时候,需要输入目标用户的密码进行验证。

(二)限制使用su命令的用户

1、将允许使用su命令的用户加入wheel组

gpasswd -a 用户 wheel    #添加用户到wheel组中
grep wheel /etc/group    #确定wheel组成员

2、修改/etc/pam.d/su认证配置启用pam_wheel认证

vim /etc/pam.d/su     #编辑/etc/pam.d/su文件
auth sufficient pam_rootok.so  
#pam_rootok.so模块的主要作用是使uid为0的用户root能够直接通过认证而不用输入密码
...      #省略部分
auth required pam_wheel.so use_uid 
 #pam_wheel.so作用是让wheel组内的用户使用su命令,其他人(包括root)无法使用su命令

每种状态的解释:
两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证
开启第一行,注释第二行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码。
注释第一行,开启第二行:只有wheel组内的用户才能使用su命令,root用户也无法切换。
两行都开启:只有root用户和wheel组内的用户才可以使用su命令。


修改文档将命令前面的注释符“#”删除,并“wq”保存。

(三)查看su操作记录

1、安全日志文件—/var/log/secure

三、Linux中的PAM安全认证

(一)PAM安全认证流程

(二)PAM认证原理

▶PAM认证顺序:Service(服务)—>PAM(配置文件)—>pam_*.so
▶PAM首先确定服务,然后加载相应的PAM配置文件,最后调用PAM认证模块进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。

四、使用sudo机制提升权限

(一)sudo命令的用途及用法

▶作用:提升执行权限(使用其他用户的身份执行)
▶用法:sudo 授权命令

(二)配置sudo授权

1、visudo或vi /etc/sudoers

vi /etc/sudoers----此文件默认权限为440,保存退出时必须执行wq!强制操作

2、记录格式

用户 主机名=命令程序列表

3、语法格式

用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表

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


4、设置别名

输入时,有时候有些用户、主机名或命令字符比较长或复杂,可以设置一个别名,方便省力。

使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
多个信息需要用“,”隔开。
User_Alias USERS=用户名1,用户名2,用户名3        #用户别名,USERS代表后面三个用户
Host_Alias HOSTS=localhost,bogon              #主机别名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel  #命令别名
USERS HOSTS=CMNDS   #使用别名编写授权

(三)查看sudo操作记录

1、需要启动Defaults logfile配置


2、默认日志文件在"/var/log/sudo"


(四)查询授权的sudo操作

五、开关机安全控制

(一)调整BIOS引导设置

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

(二)GRUB限制

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

grub2-mkpasswd-pbkdf2       #使用grub2-mkpasswd-pbkdf2生成密钥

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 #修改/etc/grub.d/00_header文件,添加密码记录
cat << EOF
set superusers=“root” #设置用户名为root
password_pbkdf2 root grub.pbkdf2…… #设置密码,省略部分内容为经过加密生成的密码字符串
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的 grub.cfg 文件

1、使用grub2-mkpasswd-pbkdf2生成密钥

2、修改/etc/grub.d/00_header文件,添加密码记录

修改文件前备份文件,防止出现问题好恢复。这里将第三步的grup.cfg一起备份了

3、生成新的grub.cfg配置文件


重启系统init 6,在相应界面按“e”,会跳出下图界面,按照提示输入用户名和密码才可以进入grub菜单。

六、终端登录安全控制

(一)限制root只在安全端登录

1、安全终端配置:/etc/securetty

vi /etc/securetty
.....
#tty5
#tty6   #禁止root用户从终端tty5、tty6登录

(二)禁止普通用户登录

1、建立 /etc/nologin文件

2、删除 nologin 文件或重启后即恢复正常

[root@localhost ~]# touch  /etc/nologin     #禁止普通用户登录
[root@localhost ~]#  rm  -f  /etc/nologin    #取消上述登录限制

七、系统弱口令检测

一款密码分析工具,支持字典式的暴力破解。通过对shadow文件的口令分析,可以检测密码强度。

---解压工具包----
cd  /opt
tar  zxf  john-1.8.0.tar.gz
---安装软件编译工具---
yum  install  -y  gcc  gcc-c++  make
---切换到src子目录---
cd  /opt/john-1.8.0/src
---进行编译安装---
make  clean  linux-x86-64
---准备待破解的密码文件---
cp   /etc/shadow   /opt/shadow. txt
---执行暴力破解---
cd  /opt/john-1.8.0/run
./john  /opt/shadow.txt
---查看已破解出的账户列表---
./john  --show  /opt/shadow. txt

—使用密码字典文件—
> john.pot #清空已破解出的账户列表,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt #使用指定的字典文件进行破解

1、解压工具包到opt目录下

2、将本地磁盘挂载到/mnt目录下,然后安装安装软件编译工具

3、切换到scr子目录进行编译安装

4、准备待破解的密码文件,然后去到 /opt/john-1.9.0/run子目录下执行强制破解,/john --show /opt/shadow.txt查询已破解出的账号列表


5、若字典中没有此密码,则添加


八、网络端口扫描------NMAP

(一)安装 NMAP 软件包

mount /dev/sr0 /mnt       #先进行本地磁盘挂载
yum install -y nmap       #然后安装nmap软件包

(二)nmap命令常用选项与对应扫描类型

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




转载:https://blog.csdn.net/weixin_55609951/article/details/116136451
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场