Linux 之系统安全管理
- 一. 账号安全控制
- 1. 系统账号清理
- 2. 密码安全控制
- 3. 命令历史限制
- 4. 终端自动注销
- 5. 使用 su 命令切换用户
- 5.1 su 切换用途
- 5.2 密码验证
- 5.3 限制使用 su 命令的用户
- 二. PAM安全认证
- 1. su命令的安全隐患
- 2. PAM认证原理
- 3. PAM安全认证流程
- 三. 使用sudo机制提升权限
- 1. su命令的缺点
- 2. sudo的用途和用法
- 3. 配置sudo授权
- 四. 开关机安全机制
- 1. 调整BIOS引导设置
- 2. GRUB限制
- 五. 限制root 只在安全终端登录
- 1. 安全终端配置
- 2. 禁止普通用户登录
- 六. 网络端口扫描
- 1. nmap
- 2. netstat
一. 账号安全控制
1. 系统账号清理
-
将非登录用户的shell 设为 /sbin/nologin
usermod -s /sbin/nologin 用户名 -
锁定长期不使用的账号
usermod - l 用户名
passwd - l 用户名
passwd - S 用户名 -
删除无用的账号
userdel -r 用户名 -
锁定账号文件 passwd ,shadow
chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看文件
chattr -i /etc/passwd /etc/shadow 解锁文件
2. 密码安全控制
- 设置密码有效期
vi /etc/login.defs
先进入 vi /etc/login.def 修改 PASS_ MAX_DAYS 30
再查看下 vim /etc/shadow
chage -M 30 jichao
cat /etc/shadow | grep jichao 适用于已有用户
- 要求用户下次登录时修改密码
chage -d 0 jichao
3. 命令历史限制
- 减少记录的命令条数
history - c 临时清除历史命令记录,重启后会重现
进入 vi /etc/profile 设置全局历史命令记录
export HISTSIZE=100
出来后 source /etc/profile 再查看下history
- 登录时自动清空命令历史
进入 vim .bashrc ,添加一条命令 echo" " > .bash_history
再查看history 历史命令
4. 终端自动注销
进入 vim /etc/profile 添加命令 export TMOUT=600 600秒自动注销
退出后 source /etc/profile ,echo $TMOUT 查看下
5. 使用 su 命令切换用户
5.1 su 切换用途
su 切换到用户的当前目录
su - 切换到用户的家目录
5.2 密码验证
root→任意用户,不验证密码
普通用户→其他用户,验证目标用户的密码
5.3 限制使用 su 命令的用户
gpasswd -a zhangsan wheel #添加授权用户 zhangsan到wheel组中
j进入 vim /etc/pam.d/ su
auth required pam_wheel.so use_uid #去掉此行开头的注释
启用pam_wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用su命令
二. PAM安全认证
1. su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2. PAM认证原理
一般遵循的规律
Service(服务)→ PAM(配置文件)→ pam_*.so
首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
3. PAM安全认证流程
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session类型)
三. 使用sudo机制提升权限
1. su命令的缺点
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
2. sudo的用途和用法
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
3. 配置sudo授权
visudo或vi /etc/sudoers
记录格式:
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
一: root 用户下进入visudo 给用户jichao 添加命令 jichao ALL=/sbin/config ,再回到su jichao 普通用户下 用sudo 命令添加网卡输入jichao 的 密码 就可以修改成功
二:进入到visudo 里面 把%wheel 前面的注释#去掉,代表任何普通目录都可以使用sudo 操作命令,再切换到 jichao 普通目录中 ,执行添加网卡的操作 查看下
三 . 进入 visudo 添加命令 ,然后切换到普通用户 jichao 试下命令 sudo init 6 发现没有权限执行
使用关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置别名
(别名必须为大写)
User Alias USERS=Tom, Jerry,Mike
Host Alias HOSTS=localhost, bogon
Cmnd Alias CMNDS=/sbin/ifconfig
,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS
四. 开关机安全机制
1. 调整BIOS引导设置
●将第一引导设备设为当前系统所在硬盘
●禁止从其他设备(光盘、U盘、网络引导系统
●将安全级别设为setup,并设置管理员密码
2. GRUB限制
●使用grub2-mkpasswd-pbkdf2生成密钥
●修改letclgrub.d/00_header文件中,添加密码记录
●生成新的grub.cfg配置文件
grub2-mkpasswd-pbkdf2 #根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub .pbkd…
#省略部分内容为经过加密生成的密码字符串!
步骤:
五. 限制root 只在安全终端登录
1. 安全终端配置
/etc/securetty
#tty 5
#tty 6 代表禁止root用户从终端tty5,tty6 登录
2. 禁止普通用户登录
建立 /etc /nologin 文件
删除 nologin 文件或重启后即恢复正常
touch /etc/nologin 禁止普通用户登录
rm - rf /etc/nologin 取消上述登录限制
六. 网络端口扫描
1. nmap
一款强大的网络扫描,安全检测工具
官方网站: http://nmap.orgl
oCentOS 7.3光盘中安装包,nmap-6.40-7.el7.x86_64.rpm
安装 NMAP 软件包
rpm -qa | grep nmap
yum install -y nmap
nmap命令常用的选项和扫播类型:
选项 | 说明 |
---|---|
-p | 指定扫描的端口 |
-n | 禁用反向DNS解析(以加快扫播速度) |
-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检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMAP请求时,使用这种方式可以避免因无法ping通而放弃扫描 |
例如 查看本机开放的TCP端口
namp - sT 127.0.0.1
检测192.168.118.0/24 网段有哪些主机提供http 服务
nmap -p 80 192.168.80.0/24
检测192.168.80.0/24网段有哪些存活主机
nmap -n -sP 192.118.80.0/24
2. netstat
选项 | 说明 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端口等信息。 |
-t | 查看TCP相关的信息。 |
-u | 显示UDP协议相关的信息。 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root 权限)。 |
-r | 显示路由表信息。 |
-l | 显示处于监听状态的网络连接及端口信息。 |
– | – |
netstat -natp | 查看正在运行的使用TCP协议的网络状态信息 |
netstat -naup | 查看正在运行的使用UDP协议的网络状态信息 |