第一章账号安全基本措施
1.1将用户设置为无法登录
1.2锁定用户
1.3删除账户
1.4锁定配置文件
1.5命令历史
1.6切换用户
1.7认证类型 控制类型 PAM 模块及其参数
1.8 sudo
1.9 暴力破解密码
1.10 nmap 扫描
第一章账号安全基本措施
1.1将用户设置为无法登录
1.2锁定用户
1.3删除账户
userdel -r 用户名
1.4锁定配置文件
chattr
-a 让文件或目录仅供附加用途。只能追加
-i 不得任意更动文件或目录。
1.5命令历史
Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。
家目录里的这些文件只对 自己的用户的有效
.bash_logout: 退出用户后 会执行里面的命令
.bash_profile 登录用户前执行里面的命令
.bashrc 登录用户前执行里面的命令
#可以使用以下命令临时清除历史命令
history -c 临时清除命令
vim /etc/profile
export HISTSIZE=100 #全局 生效 命令长度100
开机清空历史命令:
vim ~/.bashrc
echo " " > ~/.bash_history
1.6切换用户
su 切换用户
su [-] 用户名
su 切换到root
管理员切换到普通用户不需要输入密码
su - 切换的比较彻底
su 有限的切换
1.7认证类型 控制类型 PAM 模块及其参数
PAM 认证类型包括四种:
认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;
帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等;
密码管理(password management):主要是用来修改用户的密码;
会话管理(session management):主要是提供对会话的管理和记账。
控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。
1)required 验证失败时仍然继续,但返回 Fail
2)requisite 验证失败则立即结束整个验证过程,返回 Fail
3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续
4)optional 不用于验证,只是显示信息(通常用于 session 类型)
shell模块
功能:检查有效shell
帮助:man pam_shells
案例:不允许使用/bin/csh的用户本地登录
vim /etc/pam.d/su
文中第一行 实际第二行
文中第二行 实际第六行
a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b)两行都注释也是允许所有用户都能使用su命令,但是 root用户要输入密码
c)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
1.8 sudo
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具.这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
配置文件位置
/etc/sudoers
root ALL=(ALL) ALL
可以执行命令的用户名 哪台主机=已谁的身份运行 可以执行的命令
lisi ALL = /usr/bin/mount /dev/sr0 /mnt
lisi ALL= /usr/bin/*, !/usr/bin/cat
在后面的命令生效,如果和前面冲突,已后为准
通配符 * 有个小问题
子目录
设置GRUB 2加密
[root@kgc ~]# grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码
1.9 暴力破解密码
./configre 安装路径和选择功能
make .c .py 高级语言 机器 make(编译) 高级编译二进制 0 1 让机器课读懂
make install 将程序 存起来
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.1st /opt/shadow.txt
#使用指定的字典文件进行破解
1.10 nmap 扫描
===============网络端口扫描============
控制位
SYN 建立链接
ACK 确认
FIN 结束断开
PSH 传送 0 数据缓存 上层应用协议
RST 重置
URG 紧急
#安装
rpm -qa|grep nmap 查看nmap
yum install -y nmap
nmap命令常用的选项和描类型
-p:指定扫描的端口。
-n:禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com
-sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目 标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
-sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功 则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙 只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测 防火墙的健壮性。
-sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这 种方式可以避免因无法ping通而放弃扫描。
用于主机发现的一些用法
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
--dns-servers <serv1[,serv2],...>: 指定DNS服务器。
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点
Nmap用于端口扫描的一些用法
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags <flags>: 定制TCP包的flags。
-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO: 使用IP protocol 扫描确定目标机支持的协议类型。
-b <FTP relay host>: 使用FTP bounce scan扫描方式
示例:
#分别查看本机开放的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
nmap -p 80 192.168.91.100/24
#检测192.168.80.0/24网段有哪些存活主机
nmap -n -sP 192.168.80.0/24