文章目录(文章末尾有福利!!)

系统安全及应用

一、账号安全基本措施

1、系统账号清理

1.1 将用户设置为无法登录1.2 锁定长期不使用的账号1.3 删除无用的账户1.4 清空一个账号密码1.5 锁定账户文件passwd、shadow 2、密码安全控制

设置密码有效期 3、命令历史限制

3.1 减少命令记录条数3.2 登录时自动清空历史命令 4、终端自动注销 二、使用su命令切换用户

1、切换用户2、密码验证3、限制使用su命令的用户 三、Linux中的PAM安全认证

1、su命令的安全隐患2、PAM (Pluggable Authentication Modules)可插拔式认证模块3、PAM相关文件夹3、PAM认证原理4、PAM认证的构成5、PAM安全认证流程6、limit

ulimit命令(修改限制的实现方式) 四、使用sudo机制提升权限

1、sudo命令的特性2、配置sudo授权3、语法格式4、设置别名5、密码验证6、查看sudo操作记录7、查询授权的sudo操作 五、系统引导和登录控制

1、开关机安全控制

1.1 调整BIOS引导设置1.2 GRUB限制 2、终端登录安全控制

2.1 限制root只在安全终端登录2.2 禁止普通用户登录 六、弱口令检测

1、暴力破解工具-JR2、安装JR工具3、检测弱口令账号4、密码文件的暴力破解5、模拟暴破步骤 七、端口扫描

1、网络扫描工具-NMAP2、安装NMAP软件包3、nmap命令常用的选项和扫描类型4、常规检测方式:netstat5、netstat命令常用选项

系统安全及应用

一、账号安全基本措施

1、系统账号清理

1.1 将用户设置为无法登录

usermod -s /sbin/nologin #将非登录用户的Shell设为/sbin/nologin

1.2 锁定长期不使用的账号

usermod -L 用户名 #锁定用户账户

passwd -l 用户名 #锁定账户密码

passwd -S 用户名 #查看用户状态

1.3 删除无用的账户

userdel -r 用户名 #删除用户及其宿主目录

1.4 清空一个账号密码

passwd -d 用户名 #清空账户密码

1.5 锁定账户文件passwd、shadow

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

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

chattr -i /etc/passwd /etc/shadow #解锁文件

2、密码安全控制

设置密码有效期

对于新建用户,可以修改 /etc/login.defs 文件里的内容来设置密码规则 vim /etc/login.defs

对于已有用户可以使用chage命令

chage [选项] 用户名

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码

-M:密码保持有效的最大天数

-w:用户密码到期前,提前收到警告信息的天数

-E:帐号到期的日期。过了这天,此帐号将不可用

-d:上一次更改的日期

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

3、命令历史限制

3.1 减少命令记录条数

概述: /etc/profile 是系统全局变量配置文件,可以通过系统或者执行 source /etc/profile命令使文件被刷新重载

vim /etc/profile #编剧全局变量配置文件

export HISTSIZE=x #输入需要的命令条数

source /etc/profile #刷新重载

3.2 登录时自动清空历史命令

概述:~/.bashrc文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行 vim .bash_logout #退出后清除

echo " " >~/.bash_history #(一定要加空格)

vim ~/.bashrc #开机后清除(自己对自己生效)

echo " " > ~/.bashrc_history

4、终端自动注销

限制600秒后自动注销

vi /etc/profile #(对所有用户生效)

export TMOUT=600 #设置超过600秒后自动退出登录

source /etc/profile #刷新重载

二、使用su命令切换用户

1、切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

su 目标用户:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换su - 目标用户:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

2、密码验证

root ->任意用户,不验证密码普通用户->其他用户,验证目标用户密码

su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

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

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

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

格式:vim /etc/pam.d/su

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

​ ②、两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码

(pam_rootok.so模块的主要作用是使uid为0的用户,即 超级管理员用户能够直接通过认证而不用输入密码)

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

​ ④、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

三、Linux中的PAM安全认证

1、su命令的安全隐患

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

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

是一种高效而且灵活的用户级别的认证方式也是当前Linux服务器普遍使用的认证方式

3、PAM相关文件夹

/usr/lib64/security :存放功能模块/etc/pam.d/ :配置文件/etc/security :复杂的配置文件

3、PAM认证原理

当用户来访问某一程序的时候,如果这个程序启用了pam模块,会先去读取配置文件,然后按照配置文件调用模块,进行操作。

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

4、PAM认证的构成

查看某个程序是否支持PAM认证,可以用ls命令格式:ls /etc/pam.d | grep su查看su的PAM配置文件:cat /etc/pam.d/su

5、PAM安全认证流程

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

required:一票否决,如果失败,最后一定会失败,但是会继续验证requisite:一票否决,如果失败,会立即结束验证,反馈失败sufficient:验证成功则立即返回,不再继续,否则忽略结果并继续optional:不用于验证,只显示信息(通常用于session类型)

6、limit

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

ulimit命令(修改限制的实现方式)

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

-H 设置硬件资源限制.

-S 设置软件资源限制.

-a 显示当前所有的资源限制.

-c size:设置core文件的最大值.单位:blocks

-d size:设置数据段的最大值.单位:kbytes

-f size:设置创建文件的最大值.单位:blocks

-l size:设置在内存中锁定进程的最大值.单位:kbytes

-m size:设置可以使用的常驻内存的最大值.单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值.单位:n

-p size:设置管道缓冲区的最大值.单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限.单位:seconds

-u size:最大用户进程数

-v size:设置虚拟内存的最大值.单位:kbytes

unlimited 是一个特殊值,用于表示不限制

ab -c1025 -n 2000 http://192.168.10.11/ #使用压力测试工具进行测试 打开的文件数

vim /etc/security/limits.conf #永久修改不用重启(软硬一起设置可以直接使用-)

四、使用sudo机制提升权限

1、sudo命令的特性

sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

2、配置sudo授权

visudo或vi /etc/sudoers #此文件的默认权限为440,保存退出时必须执行“wq!”,强制保存退出

3、语法格式

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

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

可使用通配符“ * ”表示所有,取反符号“!”表示排除

例如:Jerry localhost=/sbin/*,!/sbin/poweroff

表示jerry用户操作localhost主机可使用sbin目录下的除poweroff以外的所有命令

注:Jerry仍可使用init、shutdown等命令执行关机操作,因此限制命令需做到全面无漏,否则限制影响十分有限。

4、设置别名

别名格式:必须大写字母,数字可以使用但是不能放在开头

使用关键字User_Alias(用户)、Runas_Alias(代表用户)、Host_Alias(登录主机)、Cmds_Alias(命令)来进行设置别名

User_Alias USERS=Tom,Jerry,Mike

Host_Alias HOSTS=localhost,bogon

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

USERS HOST=CMDS

root ALL=(ALL) ALL

用户 主机名ip= 命令

5、密码验证

正常情况下,第一次使用sudo命令需输入密码验证,有效期为五分钟,过期后使用sudo需再次输入密码验证。 可以设置特定用户无需密码验证 Mike ALL=(ROOT)NOPASSWD:/bin/kill,/usr/bin/killall 也可设置组用户无需密码验证 %wheel ALL=NOPASSWD:ALL 以及所有用户无需密码验证 USERS HOSTS=NOPASSWD:CMDS

6、查看sudo操作记录

需启用Defaults logfile配置

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

visudo #进入sudo配置文件

Defaults logfile="/var/log/sudo" #启动Defaults logfile

tail /var/log/sudo #查看sudo末尾10行记录

7、查询授权的sudo操作

格式:sudo -l

五、系统引导和登录控制

1、开关机安全控制

1.1 调整BIOS引导设置

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

1.2 GRUB限制

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

在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下

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

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

PBKDF2 hash of your password is grub.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

cat << EOF

set superusers="root" #设置登录用户为 root

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

EOF

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

完成配置修改工作,重启后进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。

grub2-setpassword #直接设置密码

2、终端登录安全控制

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

安全终端配置 /etc/securetty vi /etc/securetty 将tty5,tty6前加 “#” 将其注释,表示禁止root用户从终端tty5,tty6登录

2.2 禁止普通用户登录

建立/etc/nologin touch /etc/nologin 删除nologin文件或重启后即恢复正常 rm -rf /etc/nologin

六、弱口令检测

1、暴力破解工具-JR

John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过对shadow文件的口令分析,可以检测密码强度。官方网站:http://www.openwall.com/john/

2、安装JR工具

安装方法:make clean 系统类型主程序文件为john

3、检测弱口令账号

获得Linux/Unix服务器的shadow文件执行john程序,将shadow文件作为参数

4、密码文件的暴力破解

准备好密码子弹文件,默认为password.lst执行john程序,结合–wordlist=字典文件

5、模拟暴破步骤

cd /opt

tar zxf 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 #查看已破解出的账户列表

> john.pot #使用密码字典文件,清空已破解出的账户列表以便重新分析

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

添加字典内容

若密码无法被暴力破解说明字典中没有该密码记录,可以进入字典文件(/opt/john-1.8.0/run/password.list)中手工输入添加,字典内容的丰富程度与破解能力成正比

七、端口扫描

1、网络扫描工具-NMAP

NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术。

2、安装NMAP软件包

rpm -qa | grep nmap #检查是否已安装

yum install -y namp #若未安装,进行yum安装

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

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

4、常规检测方式:netstat

netstat -natp #查看正在运行的使用TCP协议的网络状态信息

netstat -naup #查看正在运行的使用UDP协议的网络状态信息

nmap -sT 127.0.0.1 #查看本机开放的TCP端口

nmap -sU 127.0.0.1 #查看本机开放的UDP端口

nmap -p 80 192.168.80.0/24 #检测192.168.80.0/24网段有哪些主机提供HTTP服务

nmap -n -sP 192.168.80.0/24 #检测192.168.80.0/24网段有哪些存活主机

5、netstat命令常用选项

服务端口号HTTP80HTTPS443Telnet23FTP21SSH(安全登录)、SCP(文件传输)、端口重定向22SMTP25POP3110WebLogic7001TOMCAT8080WIN2003远程登录3389Oracle数据库1521MS SQL* SEVER数据库sever1433MySQL 数据库sever3306

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

第二阶段:Web渗透(初级网安工程师)

第三阶段:进阶部分(中级网络安全工程师)

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里【整整282G!】网络安全&黑客技术小白到大神全套资料,免费分享!

学习资源分享

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。