系统安全及应用

目录

前言

一、账号的安全控制措施

1.1 系统账号清理

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

1.1.2 锁定长期不使用的账号

 1.2.3  删除无用的账号

1.2.4  锁定账号文件passwd、shadow

1.2  密码安全控制

1.2.1  设置密码有效期

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

1.3  命令历史限制

1.3.1   减少记录的命令条数

1.3.2   注销时自动清空命令历史

 1.4  终端自动注销

二、系统引导和登录控制

2.1   使用su 命令切换 用户

2.1.1  用途和用法

2.1.2   密码验证

2.2 限制使用su 命令的用户

2.2.1  限制使用su命令的用户

 2.2.2 查看su 的日志文件

 三、Liunx中的PAM安全认证

3.1  su命令的安全隐患

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

3.3  PAM 认证原理

3.4  PAM 认证的构成

3.4.1  用ls 命令,查看某个程序是否支持PAM认证

3.4.2   查看su 的PAM的配置文件

3.5 PAM 安全认证流程

四、使用sudo 机制提升权限

4.1 su命令的缺点

4.2  sudo命令的用途及用法

4.3    配置sudo授权

4.3.1   记录格式:

4.3.2  参数:

4.4 用户别名 

4.4.1  用户别名的语法格式

 4.5  启动sudo操作记录

4.5.1  查看sudo操作记录

4.5.2   查询授权的sudo操作

 五、开关机安全控制

5.1 调整BIOS引导设置原

5.2  GRUB限制

5.3 终端登录安全控制

5.3.1 限制root只在安全终端登录

5.3.2  禁止普通用户登录

 六、系统弱口令检测

6.1   弱口令检测

6.2   安装JR工具

6.3  检测弱口令账号

6.4    密码文件的暴力破解

七、网络端口扫描

7.1  NMAP

7.2  NMAP的扫描

7.3  常用的扫描类型

 八、总结


前言

学习这章内容能够更好地保护自己地账号信息,以及一些安全方面的常事。

一、账号的安全控制措施

1.1 系统账号清理

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

usermod -S /sbin/nologin用户名

 

1.1.2 锁定长期不使用的账号

用passwd -l 锁定账户 ,登陆不上;passwd -u 解锁账户

用usermod -L 锁定账户 ;usermod -U 解锁账户 

 1.2.3  删除无用的账号

userdel -r 删除无用账户

1.2.4  锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow    锁定文件

lsattr /etc/passwd /etc/shadow       查看文件状态

1.2  密码安全控制

1.2.1  设置密码有效期

新建用户更改密码有效期:

进入 vi /etc/login.defs     修改PASS MAX DAYS    设为30 :密码的有效期改为30天

已有用户更改密码有效期

chage -M 30   lisi 

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

 

1.3  命令历史限制

1.3.1   减少记录的命令条数

进入 vi /etc/profile   修改export HISTSIZE=200   再wq退出并保存

source /etc/profile    刷新系统

或重启系统,在查看

1.3.2   注销时自动清空命令历史

临时清除:进入vi ~/.bash_logout  编辑
history  -c
clear

永久清除: 进入  vi ~/.bashrc     编辑   echo  ''  >  ~/.bash_ history  保存退出后在重启 init  6 

 1.4  终端自动注销

 闲置600秒后自动注销

进入 vi /etc/profile    

编辑export TMOUT=300   保存并退出

刷新系统 source /etc/profile  或   .   /etc/profile

二、系统引导和登录控制

2.1   使用su 命令切换 用户

2.1.1  用途和用法

用途: Substitute User, 切换用户

格式: su - 目标用户

2.1.2   密码验证

root→任意用户,不验证密码

普通用户>其他用户,验证目标用户的密码

2.2 限制使用su 命令的用户

2.2.1  限制使用su命令的用户

 将允许使用su命令的用户加入wheel组,在wheel组内的用户才可以使用su切换用户命令

启用pam_wheel认证模块     把括号两项的前面的#去掉就可以开启

vim /etc/pam.d/ su

# auth sufficient pam rootok.so

# auth required pam_ wheel.so use__uid

(1)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

(2)两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok.so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码)。

(3)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。

(4)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令

 2.2.2 查看su 的日志文件

安全日志文件:/var/log/secure

 三、Liunx中的PAM安全认证

Linux-PAM  是Linux可拔插式认证模块,是一套可定制,可动态加载的共享库,是本地系统管理员

可以随意选择程序的认证方式。

3.1  su命令的安全隐患

默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登

录密码,带来安全风险

为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换

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

是一种高效而且灵活便利的用户级别的认证方式

也是当前Linux服务器普遍使用的认证方式

3.3  PAM 认证原理

PAM认证一般遵循的顺序:Service(服务)>PAM(配置文件)>pam_*.so

PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调

用认证文件(位于/lib64/security下)进行安全认证

用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证

不同的应用程序所对应的PAM模块也是不同的

注:.so 为结尾的就是模块文件

3.4  PAM 认证的构成

3.4.1  用ls 命令,查看某个程序是否支持PAM认证

案例: 查看su是否支持PAM模块认证 

ls /etc/pam.d | grep su


 

3.4.2   查看su 的PAM的配置文件

cat     /etc/pam.d/su

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

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

      1.认证类型

      2.控制类型

      3.PAM模块及其参数

第一列代表PAM认证模块类型
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记
​ required:表示需要返回一个成功值,如果返回失败,不 会立刻将失败结果返回,而是继续进行同类型的下一验证, 所有此类型的模块都执行完成后,再返回失败。

requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session 类型)。

include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去 写配置项。

第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开。

3.5 PAM 安全认证流程

控制类型也可以乘坐Control Flags,用于PAM验证类型的返回结果

 

1.required验证失败时仍然继续,但返回Fail

2.requisite验证失败则立即结束整个验证过程,返回fail(最重要的一步)

3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

4.optional不用于验证,只显示信息(通常用session类型)

四、使用sudo 机制提升权限

4.1 su命令的缺点

默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登

录密码,带来安全风险

4.2  sudo命令的用途及用法

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

用法:sudo     授权命令

4.3    配置sudo授权

visudo命令 或者 vim /etc/sudoers

4.3.1   记录格式:

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

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

①用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)。

②主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机。

③(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令。

④命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。ALL则代表系统中所有命令。

4.3.2  参数:

-l:列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;

-v:验证用户的时间戳;如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作;用-v可以跟踪最新的时间戳;

-u:指定以以某个用户执行特定操作;

 -k:删除时间戳,下一个sudo命令要求用求提供密码;

案例一:lisi 用户可以使用useradd  usermod

需求:lisi                   root用户下的权限useradd  usermod

1.先创建lisi的用户,再进入lisi用户看看可以使用权限不

2.  在visudo 里面配置权限

 3.验证  进入lisi用户 查看是否可以使用权限

案例二:用户可以临时创建网卡

1、先在lisi用户,先输入(ifconfig ens33:0 192.168.169.100)创建网卡;
发现是不允许操作的,因为没有权限

2、需要在root用户visudo 或者/etc/sudoers都可以进配置文件添加提权用户;

 3、配置文件末行加入你想要提权的用户;(wd是主机名)

 4、再去lisi用户上再去(sudo ifconfig ens33:1 192.168.169.100)创建网卡那条命令,发现是可以做操作的权限已经有了

4.4 用户别名 

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd _Alias来进行设置。

4.4.1  用户别名的语法格式

(1)User_Alias 用户别名:包含用户、用户组(%组名(使用引导))、还可以包含其他其他已经用户的别名
 
User_Alias OPERATORS=zhangsan,tom,lisi
 
(2)Host_Alias 主机别名:主机名、IP、网络地址、其他主机别名!取反
 
Host_Alias MAILSVRS=smtp,pop
 
(3)Cmnd_Alias命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
 
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum

案列:用户别名

使用关键字User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须位大写)

1)Host_Alias MYHOSTS = kgc , localhost

      User_Alias MYUSERS = zhangsan , wangwu,lisi

      Cmnd_Alias MYCNNDS= /sbin/* ,!/ sbin/reboot,! /sbin/poweroff,,! /sbin/init,! /usr/bin/rm

      MYUSERS MYHOSTS=NOPASSWD:MYCMNDS(这一行必须输入,不然上面的会不成功)
2)User_Alias USERS=Tom, Jerry,Mike

     Host_Alias HOSTS=localhost, bogon

     Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel

     USERS HOSTS=CMNDS

3)创建用户zhangsan    wangwu   加入组名为yizu
 

进入visudo进行设置

 进行验证

 4.5  启动sudo操作记录

4.5.1  查看sudo操作记录

需启用Defaults logfile 配置

默认日志文件: /var/log/sudo

4.5.2   查询授权的sudo操作

sudo -l

(1)sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加"Defaults logfile"设置如果已经启用sudo日志,则可以从/var/log/sudo文件中看到用户的 sudo操作记录。注:启用日志:Defaults logfile=/var/ log/ sudo。

(2)另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤。

 sudo -l  ###查看当前获得哪些sudo授权

 五、开关机安全控制

5.1 调整BIOS引导设置原

将第一引导设备设为当前系统所在硬盘;

禁止从其他设备(光盘、 U盘、网络)引导系统;

将安全级别设为setup,并设置管理员密码。

禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启

5.2  GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥

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

生成新的grub.cfg配置文件

 通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

1.grub2-mkpasswd-pbkdf2   ###根据提示设置GRUB菜单的密码

2.  备份配置文件

cp  /boot/grub2/grub.cfg  /boot/grub2/grub.cfg.bak

cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

3.    vim /etc/grub.d/00_header

 

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

5. 重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。

 输入root 按回车键再输入密码就可以进入下图的界面

6.  扩展:一步到位
grub2-setpassword

5.3 终端登录安全控制

5.3.1 限制root只在安全终端登录

安全终端配置: /etc/securetty

案例:

1.先在虚拟机终端里面 init 3切换字符界面,然后登陆进去

 2.  打开 vi /etc/securetty,在tty2前加上#号,然后wq保存退出

 3. 记住当前我们是在tty1终端里面,然后按ctrl+alt+F2切换成tty2终端。进tty2终端后,正常输入root用户和密码,应该是进不去的。因为刚才我们已经把终端tty2给关闭了。意思就是禁止 root 用户从终端tty2进入

 注意:如果我们此时在tty1终端,然后在进入vi /etc/securetty把tty1终端给关掉,是没有用的,因为我们当时已经在tty1终端里面了,所以是没有效果的。
ctrl+alt+F1—F9 是切换终端用的(在字符界面使用)

5.3.2  禁止普通用户登录

建立/etc/nologin文件

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

案例:

 touch /etc/nologin  普通用户登录不了

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

 

 六、系统弱口令检测

6.1   弱口令检测

John the Ripper,简称为JR

一款密码分析工具,支持字典式的暴力破解;

通过对shadow文件的口令分析,可以检测密码强度;

官方网站:http://www.openwall.com/john/

6.2   安装JR工具

安装方法 :   make clean系统类型

主程序文件为  john

6.3  检测弱口令账号

获得Linux/Unix服务器的shadow文件

执行john程序,将shadow文件作为参数

6.4    密码文件的暴力破解

准备好密码字典文件,默认为password.lst

执行john程序,结合–wordlist=字典文件

案例:John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。

方法一:1、把软件包放入 /opt目录里

2. 进入 /opt目录,用tar软件包解压这个压缩包    tar zxvf john-1.8.0.tar.gz

 3.进入 john-1.8.0/src   ls 查看一下解压过后软件包的内容

 4. 安装编译软件包   yum install -y gcc gcc-c++ make

  5.进行编译安装    make clean linux-x86-64

 6.准备待破解的密码文件cp /etc/shadow /opt/shadow .txt

在cd  .  .  /run/ 目录下用 ls 查看

7.执行暴力破解   ./john /opt/shadow.txt

8.查看己破解出的账户列表    ./john --show/opt/ shadow.txt

方法二: 使用密码字典文件

1.进入vim   john. pot 里面清空己破解出的账户列表,方便重新分析

2.  使用指定的字典文件进行破解:   ./john --wordlist=./password.lst /opt/shadow.txt

七、网络端口扫描

7.1  NMAP

一款强大的网络扫描、安全 检测工具。

官方网站:http://nmap.org/。

CentOS 7.7光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

7.2  NMAP的扫描

格式:  nmap [扫描类型] [选项] <扫描目标…>

7.3  常用的扫描类型

-sS、-sT、 -sF、 -sU、-sP、-PO

-p:指定扫描的端口。

-n:禁用反向DNS解析(以加快扫描速度)

-sS: TCP的sYN扫描(半开扫描),只向目标发出sYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。

-sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYTN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。

-sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。

-sP: ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。

-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。

控制位:

SYN

建立连接

ACK

确认

FIN

结束断开

PSH

传送0数据缓存上层应用协议

RST

重置

URG

紧急

案例:

1.首先查看nmap软件包是否安装,若没有就使用  yum install nmap -y  安装软件包

2.分别查看本机开放的TCP端口、UDP端口

 

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

4.检测192.168.169.0/24网段有哪些存活主机

 八、总结

1.账号基本安全措施:系统账号清理、密码安全控制、命令历史清理、自动注销

2.用户切换与提权:su 命令  和   sudo 命令

3.开关机安全控制:BIOS引导设置、禁止Ctrl+Alt+Del 快捷键、GRUB菜单设置密码

4.终端控制:限制root只在终端登录、禁止普通用户登录

5.系统的弱口令控制JR工具:安装JR工具、检测弱口令账号、密码文件暴力破解

6.网络端口扫描:nmap   命令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值