用户和组
用户和组信息查看
1 | # 查看所有用户信息 |
用户安全
系统安装的时候会带有很多不需要的用户和组,需要我们自己根据情况处理。
1 | # 可删除用户 |
对于这些系统安装带有的用户和用户组,我们选择使用userdel 用户
和groupdel 用户组
命令来删除,但更建议的是使用usermod -s /sbin/nologin 用户
来禁止用户进行登录。
1 | usermod -s /sbin/nologin adm |
Kali Linux 渗透系统
介绍
- Kali Linux是一个基于Debian的Linux发行版,
- 集成了300多个安全和取证方面的相关工具, 专为渗透测试人员准备,
- Kali Linux的前身是BackTrack Linux发行版。
- Back Track是基于Ubuntu的一个Linux发行版。(补充: ubuntu也是基于Debian的Linux发型版)
- 它由Offensive Security Ltd维护和资助,最先由Offensive Security的MatiAharoni和Devon Kearns通过重写Back Track来完成。
- Kali Linux有32位和64位的镜像,可用于x86指令集。同时它还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook。用户可通过硬盘、Live CD或Live USB来运行Kali Linux操作系统。
kali默认自带的字典
1 | ls /usr/share/wordlists/rockyou.txt |
安装
Kali Linux 下载地址 https://www.kali.org/downloads/
系统更新
执行
lsb_release -a
命令查看当前操作系统的所有版本信息配置软件源, 国内建议选择“中科大”的源,(综合来书,中科大的源还是比较靠谱)
1
2
3
4
5vim /etc/apt/sources.list
# 修改域名为
http://mirrors.ustc.edu.cn/kali
# 更新软件源
apt update软件更新
apt-get dist-upgrade
nessus 扫漏洞工具
Nessus 国外流行的漏洞扫描工具。多用来发现系统漏洞。
洞信息共享平台
https://nvd.nist.gov/
http://cve.mitre.org/
http://www.cnvd.org.cn/
暴力破解
暴力破解就是对用户的口令进行穷举尝试,直到尝试出正确的密钥为止。
hydra
Hydra 是Kali Linux中一款很受欢迎的密码破解工具,支持多种协议的攻击, 基本用法可以通过man hydra 来查看,在hydra工具中, 如果用户名不知道,需要使用用户字典, 但会增加暴力破解难度。 因此,隐藏用户名也是一种好的防护手段。
1 | hydra -l 用户 -P 密码字典 -t 32 -e nsr -vV -o ssh_ok.log IP ssh |
crunch
crunch是用来给定一个字符集生成一个全集的字典
1 | crunch <min-len> <max-len> [<charset string>] [options] |
cupp
生成字符集字典的工具
1 | # 从仓库去下载一些字典 |
暴力破解的防御
禁止root登录
修改/etc/ssh/sshd_config文件: 禁用root登录
1 | vi /etc/ssh/sshd_config |
限定可登录的用户列表
对于多普通用户的场景,建议可远程登录用户许可,可远程登录的用户越少,Attacker猜对用户名的概率越低, 相应来说,越安全。
可通过白名单或黑名单, 控制登录的用户列表。
1 | vi /etc/ssh/sshd_config |
ssh服务鉴权次数限定
对于允许登录的用户,可以通过ssh鉴权失败次数,来增加对抗暴力破解的难度
1 | vi /etc/ssh/sshd_config |
这个选项的作用,在口令输入错误超过设定次数后, 主动断开链接,但允许client端再次发起链接。
此种方式在应对口令破解中,可以增加破解的时间开销, 并不能完全避免口令被暴力破解。 但是,由于口令破解的时间加长,也就给了IDS/IPS(入侵检测系统)反应的时间。便于系统运维人员采取措施。
shadow文件破解
将/etc/shadow文件拷贝一份到某个文件比如1.txt
使用vim进行编辑只留下第二列的内容,如下:
1 | root:$6$WQJmEIbE$u5gns7kaUXd6GdTgNpoFNDGpmdU4O7qPf3DgNCHg57wgOIuwEXKorlZczhBWVoNV6EG8DvkajzYeP8Sgye8Vq1:18015:0:99999:7::: |
使用准备一个字典文件dict.txt,最后使用如下命令进行破解
1 | hashcat –m 1800 1.txt dict.txt |
PAM
Pluggable Authentication Modules , 可插拔的鉴权模块, sun提出的一种鉴权机制。
它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
中文文档 https://blog.csdn.net/shenlan211314/article/details/6569592
使用PAM
Pam使用非常简单, 就是修改相应配置文件,添加pam 模块的配置。
1 | ls /etc/pam.d/ |
PAM配置格式
配置文件有许多配置项(每行对应一个配置项)组成,每一行又分为四列(每列对应一栏):
1 | # 服务名栏(隐藏) |
常用的PAM模块,如下表:
模块 | 结合管理类型 | 说明 |
---|---|---|
pam_unix.so | auth | 提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0 |
pam_unix.so | account | 检查用户的账号信息(包括是否过期等).帐号可用时,返回0. |
pam_unix.so | password | 修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件 |
pam_shells.so | auth account | 如果用户想登录系统,那么它的shell必须是在/etc/shells文件中之一的shell |
pam_deny.so | account auth password session | 该模块可用于拒绝访问 |
pam_permit.so | auth account password session | 模块任何时候都返回成功. |
pam_securetty.so | auth | 如果用户要以root登录时,则登录的tty必须在/etc/securetty之中. |
pam_listfile.so | auth account password session | 访问应用程的控制开关 |
pam_cracklib.so | password | 这个模块可以插入到一个程序的密码栈中,用于检查密码的强度. |
pam_limits.so | session | 定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定 |
实例:弱口令防护
弱口令防护,简单说就是增加口令复杂度
- 口令长度不小于8位
- 口令是大、小字母、数字和特殊字符组成
- 口令不得与账户名相同
1 | vi /etc/pam.d/common-password |