‘Linux‘系统安全及应用

一.账号安全控制

1.账号安全基本措施

系统账号清理:

  • ①、将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名      //禁止用户登录
  • ②、锁定长期不使用的账号
usermod  -L  用户名      
passwd   -S  用户名 
passwd   -1  用户名
  • ③、解锁账号
passwd  -u【用户名】     //解锁用户
  • ④、删除无用的账号
userdel  【r】 用户名
  • ⑤、锁定账号文件passwd、shadow
chattr  +i  /etc/passwd  /etc/shadow       //锁定文件
Isattr   /etc/passwd    /etc/shadow        //查看状态                    
chattr  -i /etc/passwd  /etc/shadow        //解锁文件

示例:锁定文件,解锁文件,查看状态

[root@whw ~]# chattr +i /etc/passwd /etc/shadow    //锁定文件
[root@whw ~]# lsattr /etc/passwd /etc/shadow       //查看状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@whw ~]# chattr -i /etc/passwd /etc/shadow    //解锁文件
[root@whw ~]# lsattr /etc/passwd /etc/shadow       //查看状态
---------------- /etc/passwd
---------------- /etc/shadow
[root@whw ~]# 

2.密码安全控制
  • (1)设置密码有效期
chage  -M  时间  用户名

示例:设置张三的用户密码有效期为3天
在这里插入图片描述

  • (2)设置新建用户密码有效期
vim  /etc/login.defs

示例
在这里插入图片描述

  • (3)要求用户下次登录时修改密码
[root@whw ~]# chage -d 0 zhangsan                   //强制在登录时修改密码
[root@whw ~]# cat /etc/shadow | grep zhangsan       //shadow文件中第三个字段被修改为0
zhangsan:$6$PKsNKEd5$eF8ZrIFsgoSJCSmyFCpR13lpbJ2MRMMTiazT35S0OHpHduRr4vw/LfnRK7bxZ47W2Mk8yZ55sCnGbLiO9AVn40:0:0:3:7:::
3.命令历史限制

(1)减少记录的in命令数

vi  /etc/profile

在这里插入图片描述

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

root@localhost ]# source /etc/profile
root@localhost ~]# vi -/.bashrc
echo"">~/.bash history

(3)终端自动注销

  • 闲置600秒后自动注销
root@localhost ~]# v i /etc/profile
.........
export TMOUT=600
[root@localhost ~]# source /etc/profile

(4)切换用户:su
用途及用法:

  • Substitute User,切换用户
    格式:
[root@localhost ~]# su 目标用户

密码验证:

  • root——>任意用户,不验证密码
  • 普通用户其他用户,验证目标用户的密码
    在这里插入图片描述
    在这里插入图片描述
    (5)限制使用su命令切换用户
  • 将允许使用su命令的用户加入wheel组中
gpasswd -a zhangsan wheel

启用pam_wheel认证模块

vi /etc/pam.d/su

在这里插入图片描述

二.PAM认证模块

1、Linux中的PAM安全认证

su命令的安全隐患

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

PAM(Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式
2.PAM认证原理
  • 一般遵循的顺序
    Service (服务)----->PAM (配置文件)----->pam_*.so
  • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块是不同的
3.PAM认证的结构

查看某个程序是否支持PAM认证,可以用ls命令
示例:查看su是否支持PAM模块认证

ls /etc/pam.d | grep su

查看su的PAM配置文件: cat /etc/pam.d/su

  • 每一行都是一个独立的认证过程

  • 每一行可以区分为三个字段

    • 认证类型
    • 控制类型
    • PAM模块及其参数

    在这里插入图片描述
    PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用

    第一列代表PAM认证模块类型
  • auth: 对用户身份进行识别,如提示输入密码,判断是否为root

  • account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。

  • password: 使用用户信息来更新数据,如修改用户密码。

  • session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记
  • required:表示需要返回一-个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此l类型的模块都执行完成后,再返回失败。
  • requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
  • sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
  • optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session 类型)。
  • include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/1ib64/security/目录下,如果不在此默认路径下,要填写绝对路径
  • 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
  • 传递给模块的参数。参数可以有多个,之间用空格分隔开
4.PAM安全认证流程

控制类型也称做Control Flags用于PAM验证类型的返回结果

  • 1.required验证失败时仍然继续,但返回Fail
  • 2.requisite验证失败则立即结束整个验证过程,返回Fail
  • 3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  • 4.optional不用于验证,只显示信息(通常用于session类型)在这里插入图片描述
5.使用sudo命令
  • su命令的缺点
    默认情况下,任何用户都能使用 su 命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • sudo命今的用途及用法
    visudo或者vi /etc/sudoers
    记录格式
用户 主机名=命令程序列表
 用户 主机名=(用户) 命令程序列表

可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。

5.2:配置/etc/sudoers文件,可以授权用户较多的时使用
Host_Alias MYHOST= localhost 主机名
User_Alias MYUSER = yxp,zhangsan,lisi 需要授权的用户
Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd 授权
MYUSER MYHOST = NOPASSWD : MYCMD 授权格式
5.3:查看sudo操作记录

需启用:Defaults logfile
配置默认日志文件: /var/log/sudo

三.系统引导和登录控制

1.开关机安全控制

调整BIOS引导设置

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

GRUB菜单设置

  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00 header文件中,添加密码记录
  • 生成新的grub.cfg配置文件
    *
    在这里插入图片描述

按E键进入选择菜单,就是GRUB的引导参数
在这里插入图片描述
按E键后在里面三处命令后就会出现异常,想要恢复就要进入急救模式

  • 设置密码串
  • 设置备份文件
    grub2-mkpasswd-pbkdf2
[root@whw~]# cd/boot/grubz
[root@whw /boot/grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  local
[root@whw  /boot/grub2]# cp grub .cfg grub.cfg.bak
[root@whw  /boot/grub2]# [s
device.map  fonts  grub.cfg  grub.cfg.bak  grubenv  i386-pc  local
[root@whw  /boot/grub2]# cd /etc/grub .d/
[root@whw  /etc/grub ,d]# ls
00_header01 01_users  20_linux_xen  30_os-prober  41_ custom
00_tuned1   10_linux  20_ ppc_terminfo  40_custom  README
[root@whw  /etc/grub.d]# cp 00_header{, .bak)
[root@whw  /etc/grub .d]# ls
00_header01     00_tuned  10_linux      20_ppc_terminfo  40_ custom  README
00_header.bak   01_users  20_linux_xen  30_os-prober    41_custom
[root@whw  /etc/grub.d]# vim 00 header[rootedz666
00_header        00_header.bak
[root@whw  /etc/grub.d]# vim 00 header
[root@whw  /etc/grub.d]# grub2-mkconfig -o /boot/grub2.cfg
  • 在行尾加入用户名和字符串

vim /etc/grub.d/00_header

在这里插入图片描述

  • 加个引导文件,让开机时有密码

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

[root@root/etc/grub,d]# grub2-mkconfig -o /boot/grub2/grub .cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86 64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86 64.img
Foundinux image:/boot/vmlinuz-0-rescue-d5b12869d32844dd9f04c7dca0b24ada
Foundinitrd image: /boot/initramfs-0-rescue-d5b12869d32844dd9f04c7dca0b24ada.img
done
  • 设置完成后,进入后需要设置密码

Enter username:

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

安全终端配置:
/etc/securetty

  • 按快捷键“Ctrl+Alt+T”即可打开终端窗口;
  • 按“Ctrl+Alt+F1-F6”均可进入终端(模拟终端,不显示桌面)
3.如何限制虚拟终端

在这里插入图片描述

输入命令查看终端,如需关闭终端在前加上#即可
vim /etc/securetty

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

4.禁止普通用户登录
touch /etc/nologin  禁止普通用户登录
rm -rf /etc/nologin  取消登录限制

四.系统弱口令检测

Joth the Ripper,简称为 JR

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对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=./parsword.lst /opt/shadow.txt
./john --wordlist=指定文件
使用指定的字典文件进行破解

五.网络端口扫描

1.NMAP:

  • 一款强大的网络扫描,安全检测工具
  • CentOS 7.3光盘中安装包nmap-6.40-7.el7.x86_64.rpm
mount /dev/sr0 /mnt  进行挂载
yum install -y nmap  安装nmap工具

2.NMAP的使用
nmap的扫描:

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

NMAP的常用选项:

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

分别查看本机开发的TCP端口,UDP端口

  • nmap -sT 127.0.0.1
  • nmap -sU 127.0.0.1

检测192.168.80.0/24网段有哪些主机提供HTTP服务

  • nmap -p 80 192.168.80.0/24

检测192.168.80.0/24网段有哪些存活主机

  • nmap -n -sP 192.168.80.0/24

netstat常用选项

选项作用
-a显示主机中所有活动的网络连接信息(包括监听和非监听的服务端口)
-n以数字的形式显示相关的主机地址,端口等信息
-t查看TCP相关的信息
-u显示UDP协议相关的信息
-p显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r显示路由表信息
-l显示处于监听状态的网络连接和端口信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanghwei 17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值