系统安全及应用

  • Post author:
  • Post category:其他



目录


一、账号基本安全措施


1.1.系统账号清理


1.2.密码安全控制


1.3.命令历史清理


1.4.自动注销


二、用户切换su


2.1.用途及用法


2.2.密码验证


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


2.4.su命令的安全隐患


2.5.PAM可插拔式认证模块


2.6.PAM认证原理


2.7.查看某个程序是否支持PAM认证,可以用ls命令


2.8.PAM安全认证流程


三、提权sudo


3.1.sudo命令的用途及用法


3.2.配置sudo授权


3.3.用户别名案列


3.3.启动sudo操作记录


四、开关机安全控制


4.1.调整BIOS引导设置原则


4.2.GRUB限制


五、终端控制


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


5.2.禁止普通用户登录


六、弱口令检测、端口扫描


6.1.弱口令检测——John the Ripper


6.2.端口扫描——NMAP


七、总结


一、账号基本安全措施

1.1.系统账号清理

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

命令: usermod -s 用户登录shell路径 用户

(2)锁定账号文件passwd、影子文件shadow;并查看

命令:

chattr +i /etc/passwd       锁定

chattr -i /etc/passwd       解锁

lsattr /etc/passwd          查看

chattr +i /etc/shadow

chattr -i /etc/shadow

lsattr /etc/shadow

(3)删除无用的账号

命令:userdel -r  用户名

(4)锁定长期不使用的账号

命令:

passwd      -l     用户名        ###锁定用户账号(2个!)

passwd     -u    用户名        ###解锁用户账号

usermod    -L    用户名       ###锁定用户账号(1个!)

usermod   -U    用户名       ###解锁用户账号

查看/etc/shadow文件,看效果

cat /etc/shadow

1.2.密码安全控制

(1)设置密码的有效期


①适用于新建用户:


vi  /etc/login.defs


进去编辑:



查看:



适用于已有用户


命令:chage -M 天数 用户

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


命令:chage -d 0 用户


1.3.命令历史清理

1)减少记录的命令条数

例如:把记录的命令条数改为200条

vim /etc/profile

(2)注销时自动清空历史命令


永久清除:


临时清除(重启缓存还在):


1.4.自动注销

闲置(*)秒后自动注销:

例如:闲置600秒后自动注销

进去编辑:

二、用户切换su

2.1.用途及用法

su – : 切换到宿主目录下

su :切换到当前目录下

2.2.密码验证

(1)root→任意用户,不验证密码。

(2)普通用户→其他用户,验证目标用户的密码。

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

(1)①将允许使用su命令的用户加入wheel组②启用pam_wheel认证模块

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到 wheel 组,修改/etc/pam.d/su 认证配置以启用pam_wheel 认证。

在/etc/pam.d/ su文件里设置禁止用户使用su命令

vim /etc/pam.d/ su

2          # auth sufficient pam rootok.so

6          #auth required pam_ wheel.so use__uid

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

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

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

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

(2)查看su操作记录:

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

普通用户切换登录测试验证:

使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看。

2.4.su命令的安全隐患

①默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。

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

2.5.PAM可插拔式认证模块

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

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

2.6.PAM认证原理

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

(2)PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。

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

(4)不同的应用程序所对应的PAM模块也是不同的。

2.7.查看某个程序是否支持PAM认证,可以用ls命令

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

ls /etc/pam.d | grep su

2.8.PAM安全认证流程

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

2.requisite验证失败则立即结束整个验证过程,返回Fail。

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

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

三、提权sudo

3.1.sudo命令的用途及用法

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

(2)用法:sudo 授权命令

3.2.配置sudo授权

(1)visudo  或者  vi  /etc/sudoers

(2)语法格式:

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

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

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

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

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

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

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

②主机名:使用此规则的主机名。没配置过主机名时可用localhost,

有配过主机名则用实际的主机名,ALL则代表所有主机。

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

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

(3)案列

①:wangliu 用户可以使用useradd usermod

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


3.3.用户别名案列

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

用户别名的语法格式:

(1)User_Alias 用户别名:包含用户、用户组(%组名(使用引导))、还可以包含其他其他已经用户的别名

User_Alias  MYUSER =zhangsan,lisi,wangwu

(2)Host_Alias 主机别名:主机名、IP、网络地址、其他主机别名!取反

Host_Alias MYHOST=yy,localhost

(3)Cmnd Alias命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名

Cmnd_Alias MYCMND=/usr/sbin/*,/usr/bin*,!/usr/sbin/reboot

(4)   MYUSER MYHOST=NOPASSWD:MYCMND


3.3.启动sudo操作记录

visudo

Defaults logfile = “/var/log/sudo”

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

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

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

四、开关机安全控制

4.1.调整BIOS引导设置原则

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

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

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

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



4.2.GRUB限制

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

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

③生成新的grub.cfg配置文件


方法一:

通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。

可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

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

PBKDF2 hash of your password is grub.pbkd…..    ###省略部分内容为经过加密生成的密码字符串

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

cat << EOF

set superusers=”root”  ###设置用户名为root

password_pbkdf2 root grub.pbkd2…..    ###设置密码,省略部分内容为经过加密生成的密码字符串EOF

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

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


方法二:


一步到位

grub2-setpassword

五、终端控制

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

(1)安全终端配置:/etc/securetty

(2)步骤:

  1. 更改相关配置文件

  2. 切换至指定终端进行测试

  3. 切换至其他终端进行测试

5.2.禁止普通用户登录

(1)建立/etc/nologin文件


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


六、弱口令检测、端口扫描

6.1.弱口令检测——John the Ripper

(1)John the Ripper,简称为JR

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

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

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

(2)安装JR工具

①安装方法:make clean 系统类型

②主程序文件为john

(3)检测弱口令账号

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

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

(4)密码文件的暴力破解

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

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

(5)案列

弱口令检测————John the Ripper

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

① cd  /opt

② tar zxvf john-1.8.0.tar.gz                     #解压工具包

③ yum install -y gcc gcc-c++ make        #安装软件编译工具

④ cd /opt/john-1.8.0/src                             #切换到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               #查看己破解出的账户列表

6.2.端口扫描——NMAP

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

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

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

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


控制位:

控制位
SYN 建立连接
ACK 确认
FIN 结束断开
PSH 传送0数据缓存  上层应用协议
RST 重置
URG 紧急

rpm -qa | grep nmap  查看nmap是否安装

yum install -y nmap

nmap命令常用的选项和描类型



-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通而放弃扫描。


案列:

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

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

七、总结

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

(2)用户切换与提权(su、sudo)。

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

(4)终端控制

(5)弱口令检测——John the Ripper

(6)端口扫描——namp



版权声明:本文为weixin_64015933原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。