使用sudo机制提升权限
su命令的缺点:
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他的用户(如rootd)登录码,带来安全风险
sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
配置sudo权限
visudo或vim /etc/sudoers(要强制保存“wq!”)
语法格式:
用户名 主机=命令列表(多条命令时使用,号间隔,支持使用* !等通配符,命令前面加NOPASSWD:可以不需要密码验证)
用户 主机名=(用户) 命令列表
| 用户 | 直接授权指定的用户名,或采用“&组名”的形式(授权给一个组的所有用户) |
|---|---|
| 主机名 | 使用此规则的主机名,没配置过主机名时可用localhost,有配过的主机名用实际的主机名,ALL代表所有主机 |
| (用户) | 用户以何种身份来执行命令,省略时以root用户的身份来运行命令 |
| 命令列表 | 允许授权的用户通过sudo方式执行的特权命令,需填写命令的完整路径,多个命令之间以逗号","进行分隔。ALL则代表系统中的所有命令 |
举例:
Tom ALL=/sbin/ifconfig
Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff
#通配符“*"表示所有、取反符号“!”表示排除;
%wheel ALL=NOPASSWD: ALL
#表示whee1组成员无需验证登录码即可使用sudo执行任何命令
Mike ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killall
允许lisi用户以root用户的身份运行ifconfig命令
设置网卡192.168.46.100
先查询网卡位置
后进入配置sudo授权
进入最后一行,输入lisi ALL=/usr/sbin/ifconfig
然后强制保存退出
sudo别名
别名有四种类型:
User_Alias(用户)
Runas_Alias(代表用户)
Host_Alias(登录主机)
Cmnd_Alias(命令)
例子操作过程:
sudo 命令 #第一次执行时需要认证密码,默认超时时长为5分钟。在此期间不在重复验证密码
查询用户拥有的su权限
sudo –l ##可以查看当前用户获得哪些sudo权限
开关机安全控制
1. 调整BlOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员登录码
2. GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00_ header文件中,添加登录码记录
- 生成新的grub.cfg配置文件
限制更改GRUR引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。
可以为GRUB菜单设置一个登录码,只有提供正确的登录码才被允许修改引导参数。
终端登录安全控制
限制root只在安全终端登录
- 安全终端配置:/etc/securetty
- tty1~ 6是文本型控制台,tty7 是X Window图形显示管理器 可以通过CtrI+Alt+F1 (F1-F7键) 切换到对应的登录控制台。
注:按ctrl+Alt+F1回到图形化界面
实际操作:
设置不允许root用户使用tty5和tty6终端登录
设置完成后,重启主机切换终端测试是否能登录
禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或重启即恢复正常
实操:
touch /etc/nologin #禁止普通用户登录
rm -rf /etc/nologin #取消上述登录限制
1. 创建文件,进行测试
2. 删除文件之后,进行测试
系统弱口令检测(Joth the Ripper 检测JR)
John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解
1、JR概述
Joth the Ripper,简称为 JR
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方网站: www.openwall.com/john/
2、安装JR工具
-
安装方法
make clean 系统类型
-
主程序文件为john
3、 检测弱口令账号
- 获得Linux/Unix服务器的shadow文件
- 执行john程序,将shadow文件作为参数
4、 密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合- -wordlist=字典文件
5.操作步骤:
解压工具包
cd /opt
tar zxvf john-1.8.0.tar.gz
安装软件编译工具
yum install -y gcc gcc-c++ make
切换到src子目录
cd /opt/john-1.8.0/src
进行编译安装
make clean linux-x86-64
准备待破解的密码文件
cp /etc/shadow /opt/shadow.txt
#执行暴力破解
cd /opt/john-1.8.0/ run
./john shadow
查看已破解出的账户列表
./john --show /opt/ shadow.txt
使用密码字典文件
> john.pot ##清空已破解出的账户列表,以便重新分析
./john --wordlist=. /password.lst /opt/mm.txt
##使用指定的字典文件进行破解
网络端口扫描NMAP命令
NMAP
一款强大的网络扫描、安全 检测工具
官方网站:nmap.org/
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
格式
nmap 扫描类型 [选项] <扫描目标...>
namp命令常用的选项和扫描类型
| 常见选项 | 选项作用 |
|---|---|
| -P | 指定扫描端口 |
| -n | 禁用反向DNS解析(加快扫描速度) |
| -sS | TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放 |
| -sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放 |
| -sF | TCP的FIN描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻ji包。这种类型的扫描可间接检测防火墙的健壮性。 |
| -sU | CMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描 |
| -sP | UDP 扫描,探测目标主机提供哪些UDP 服务,UDP 扫描的速度会比较慢 |
| -P0 | 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描 |
示例
分别查看本机开发的TCP端口、UDP端口
[root@localhost~]#nmap -sT 127.0.0.1 #查看本机开发的TCP端口
[root@localhost~]#nmap -sU 127.0.0.1 #查看本机开发的UDP端口
检测192.168.80.0/24网段有哪些主机提供HTTP服务
[root@localhost~]#nmap -p 80 192.168.46.0/24 #80为HTTP默认端口号
检测192.168.80.0/24网段有哪些存活主机
[root@localhost~]#nmap -n -sP 192.168.46.0/24
查看网络连接情况:netstat
命令常用选项
| 常用选项 | 作用 |
|---|---|
| -a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
| -n | 以数字的形式显示相关的主机地址、端口号等信息 |
| -t | 查看TCP相关的信息 |
| -u | 显示UDP协议相关的信息 |
| -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
| -r | 显示路由表信息 |
| -l | 显示处于监听状态的网络连接及端口信息 |
举例:
[root@localhost~]#netstat -natp #查看正在运行的使用TCP协议的网络状态信息
[root@localhost~]#netstat -naup #查看正在运行的使用UDP协议的网络状态信息
获取socket(套接字)系统信息:ss
ss命令
查看系统的网络链接情况,获取socket统计信息
命令格式:
ss [选项]
选项:
| 常用命令 | 介绍 |
|---|---|
| -t | 显示 TCP 协议的 sockets |
| -u | 显示 UDP 协议的 sockets |
| -n | 不解析服务的名称,如 “22” 端口不会显示成 “ssh” |
| -l | 只显示处于监听状态的端口 |
| -p | 显示监听端口的进程 |
| -a | 显示所有端口和连接 |
| -r | 把 IP 解释为域名,把端口号解释为协议名称 |