系统相关
首页 > 系统相关> > Linux系统安全

Linux系统安全

作者:互联网

Linux系统安全

一.账号安全基本措施

1.1、系统账号清理

[root@localhost ~]# usermod -L 用户名   锁定用户账号
[root@localhost ~]# passwd -l 用户名    锁定用户账号
[root@localhost ~]# usermod -U 用户名   解锁用户账号
[root@localhost ~]# passwd -u 用户名    解锁用户账号
[root@localhost ~]# passwd -S 用户名    查看用户状态
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow   锁定文件
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow   解锁文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow      查看文件状态

[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# id lisi
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi)
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# useradd qiaozhi
useradd:无法打开 /etc/passwd
[root@localhost ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
123passwd: 鉴定令牌操作错误
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
[root@localhost ~]# useradd qiaozhi
[root@localhost ~]# passwd qiaozhi
更改用户 qiaozhi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

1.2、密码安全控制

​`[root@localhost ~]# cat /etc/shadow|grep lisi
lisi:$6$lI.TDhRs$lqTvhvybf2njN7/7eKS3ff56hEQDzbp0mxKk0yM/OSX6qj97j4lS4P2t44mT2Gf7IoVEA2GXkSv88/btLtkaf1:18885:0:99999:7:::
[root@localhost ~]# chage -M 30 lisi
[root@localhost ~]# cat /etc/shadow|grep lisi
lisi:$6$lI.TDhRs$lqTvhvybf2njN7/7eKS3ff56hEQDzbp0mxKk0yM/OSX6qj97j4lS4P2t44mT2Gf7IoVEA2GXkSv88/btLtkaf1:18885:0:30:7:::`

[root@localhost ~]# vim /etc/login.defs 适用于已有用户
PASS_MAX_DAYS 30
cat /etc/shadow | grep 用户名 查看密码有效日期是否配置成功在这里插入图片描述
在这里插入图片描述
这里有效期就变成了30天了
在这里插入图片描述
在这里插入图片描述

1.3、命令历史限制

减少记录命令的条数:
[root@localhost ~]# vim /etc/profile          编辑全局变量配置文件    
export HISTSIZE=10                 默认1000条 输入=10
:wq
[root@localhost ~]# source /etc/profile       相当使/etc/profile内的命令重载一遍
[root@promote ~]#history

history -c 临时清除
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# vim ~/.bashrc
echo " " > ~/.bash_history       
:wq
reboot
history

在这里插入图片描述

[root@localhost ~]# vim ~/.bashrc 
[root@localhost ~]# source .bashrc
[root@localhost ~]# reboot 
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(haoyang1) at 20:26:45.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 
[C:\~]$ 
[C:\~]$ 

Connecting to 192.168.32.99:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Wed Sep 15 20:27:12 2021
[root@localhost ~]# history 
    1  history 

1.4、终端自动注销

闲置600秒后自动注销:
[root@localhost ~]#vim .bash_profile  编辑全局变量配置文件
    export TMOUT=60  输出timeout=60
[root@localhost ~]# source .bash_profile  刷新
[root@localhost ~]# echo $TMOUT 查看注销时间

在这里插入图片描述

[root@localhost ~]# vim .bash_profile 
[root@localhost ~]# source .bash_profile
[root@localhost ~]# echo $TMOUT
60

二.使用su命令切换用户

2.1、su命令用途及用法

用途:Substitute User,切换用户
格式:su -目标用户

[root@localhost ~]# su - lisi 
上一次登录:三 9月 15 20:52:09 CST 2021pts/0 上
[lisi@localhost ~]$ pwd
/home/lisi
[lisi@localhost ~]$ echo $PATH 
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/lisi/.local/bin:/home/lisi/bin

2.2、密码验证

2.3、限制使用su命令的用户

gpasswd -a 用户名 wheel     将用户名加入到wheel组中
vim /etc/pam.d/su 

auth    sufficient   pam_rootok.so
............
#auth   required     pam_wheel.so use_uid
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

三.Linux中的PAM安全认证

1.su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2.PAM(Pluggable Authentication Modules)可插拔式认证模块
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式

3.PAM认证原理
一般遵循的顺序
Service(服务)->PAM(配置文件)一pam_*.so
首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块是不同的

4.PAM认证的构成
查看某个程序是否支持PAM认证,可以用ls命令
示例:查看su是否支持PAM模块认证
Is /etc/pam.d | grep su
查看su的PAM配置文件:cat/etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段
认证类型
控制类型
PAM模块及其参数
cat /etc/pam.d/system-auth
第一列代表PAM认证模块类型
auth;对用户身份进行识别,如提示输入密码,判断是否为root
accounl:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。能连接几个终端
第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值
optional:不进行成功与否的返回,也不影响这类型的返回值。一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。
比如很多应用通过完整调用/etc/pam.d/ayatem-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开

5.PAM安全认证流程
控制类型也称做Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息

四.使用sudo机制提权

4.1、sudo命令用途及用法

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

4.2、配置授权

visudo 或者 vim /etc/sudoers
格式:用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。

4.3、别名创建

[root@localhost ~]# vim /etc/sudoers
Host_Alias MYHOST = localhost
User_Alias MYUSER = zhangsan,lisi,liwu
Cmnd_Alias MYCMD = /usr/sbin/useradd,/usr/bin/passwd

MYUSER         MYHOST = NOPASSWD : MYCMD

在这里插入图片描述

[lisi@localhost root]$ sudo useradd liba
[lisi@localhost root]$ id liba
uid=1005(liba) gid=1005(liba) 组=1005(liba)
[lisi@localhost root]$ sudo passwd liba
更改用户 liba 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

4.4、查看sudo操作记录

[root@localhost ~]# vim /etc/sudoers
Defaults logfile = /var/log/sudo   //将该命令添加至最后一行:wq保存并退出即可

五.开关机安全控制

5.1、调整BIOS引导设置原则

5.2、GRUB限制及实现

方法1:直接设置grub2—setpasswd 设置grub密码
在这里插入图片描述
方法2

[root@localhost ~]# grub2-mkpasswd-pbkdf2 
输入口令:
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.2D96787097EB717901FC663B72435E8E3A20D4C293A4977486A09E9039535711B402A5135FA758CADF5A6FCAA9E0354FFF336C44379EE7C36A2ED144178058E9.EEFD95507926800D13491280B75E30A8049C08A7EA007032F3E083B38C9A5B29530D1A2A716AF174FEA05F898D69BA2C6E26F92615511BEFECFB3EAA0D0AD05C

[root@localhost grub.d]# vim 00_header把grub2-mkpasswd-pbkdf2 查看的内容复制过来
在这里插入图片描述
[root@localhost grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg生成新的grub.cfg 文件

[root@localhost grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
/etc/grub.d/00_header: line 361: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-4bf736ee567f4452a7da314101d15437
Found initrd image: /boot/initramfs-0-rescue-4bf736ee567f4452a7da314101d15437.img
error: out of memory.
error: syntax error.
error: Incorrect command.
error: syntax error.
Syntax error at line 143
Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
/boot/grub2/grub.cfg.new file attached.

在这里插入图片描述

六.系统弱口令检测与网络端口扫描

6.1、系统弱口令

在这里插入图片描述
在这里插入图片描述

解压
[root@localhost opt]#tar zxvf john-1.8.0.tar.gz 
​
安装软件编译工具
[root@localhost src]#yum install gcc gcc-c++ make -y
​
进行编译安装
[root@localhost src]#make clean linux-x86-64
​
准备待破解的密码文件
[root@localhost src]#cd ..   切换至上级目录
[root@localhost john-1.8.0]#cp /etc/shadow /opt/shadow.txt  准备密码文件
 
执行暴力破解
[root@localhost john-1.8.0]#cd /opt/john-1.8.0/run/
[root@localhost run]#./john /opt/shadow.txt 
​


[root@localhost src]# yum install gcc gcc-c++ make -y
[root@localhost src]# make clean linux-x86-64

[root@localhost src]# cd ..
[root@localhost john-1.8.0]# ls
doc  README  run  src
[root@localhost john-1.8.0]# cp /etc/shadow /opt/shadow.txt
[root@localhost john-1.8.0]# ls /opt/
john-1.8.0  john-1.8.0.tar.gz  rh  shadow.txt
[root@localhost john-1.8.0]# cd /opt/john-1.8.0/run/
[root@localhost run]# ls
ascii.chr   john       lm_ascii.chr  makechr       relbench  unique
digits.chr  john.conf  mailer        password.lst  unafs     unshadow
[root@localhost run]# ./john /opt/shadow.txt 
Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123123           (liba)
123123           (root)
123123           (kehuailunnade)
3g 0:00:00:46 100% 2/3 0.06478g/s 200.4p/s 221.1c/s 221.1C/s leslie..boston
Use the "--show" option to display all of the cracked passwords reliably
Session completed

6.2、网络端口扫描

一.NMAP概述:
1.是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术
2.官方网站:http://nmap.org/
3.CentOS 7.7光盘中安装包nmap-6.40-7.el7.x86_64.rpm
二.安装 NMAP 软件包
yum install -y nmap //然后安装nmap软件包

三.nmap命令常用选项与对应扫描类型

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

[root@localhost ~]# nmap -sT 127.0.0.1查看本机开放的TCP端口
[root@localhost ~]# nmap -sU 127.0.0.1 查看本机开放的UDP端口
[root@localhost ~]# nmap -n -sP 192.168.32.0/24 检测192.168.32.0/24网段有多少存活的主机

[root@localhost ~]# nmap -sT 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2021-09-22 21:14 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00063s latency).
Not shown: 996 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
111/tcp open  rpcbind
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

[root@localhost ~]# nmap -sU 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2021-09-22 21:16 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 998 closed ports
PORT     STATE         SERVICE
111/udp  open          rpcbind
5353/udp open|filtered zeroconf

Nmap done: 1 IP address (1 host up) scanned in 49.21 seconds


[root@localhost ~]# nmap -n -sP 192.168.32.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2021-09-22 21:18 CST
Nmap scan report for 192.168.32.1
Host is up (0.00071s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.32.2
Host is up (0.000087s latency).
MAC Address: 00:50:56:E7:1B:08 (VMware)
Nmap scan report for 192.168.32.254
Host is up (0.00013s latency).
MAC Address: 00:50:56:EC:A5:43 (VMware)
Nmap scan report for 192.168.32.96
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.00 seconds

标签:lisi,系统安全,密码,passwd,etc,Linux,root,localhost
来源: https://blog.csdn.net/wanghaoyang0324/article/details/120399868