Linux的安全与运用(susudoPAM)
Posted NicolasNRH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的安全与运用(susudoPAM)相关的知识,希望对你有一定的参考价值。
@TOC
系统的安全与应用
账号安全控制
账号安全基本措施
-
系统账号清理
- 将非登录用户的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 //解锁文件
-
密码安全控制
-
设置密码有效期
-
vi /etc/login.defs //修改密码配置文件,适用于新建用户(PS:UMASK,UID和GID的范围也在这个文件)
PASS_MAX_DAYS 30
-
chage -M 30 lisi //适用于已有用户
-
要求用户下次登陆时修改密码
-
chage -d 0 zhangsan //强制下次登陆时更改密码,shadow文件中的第三个字段修改为0
cat /etc/shadow | grep zhangsan //shadow文件中的第三个字段改为0
-
-
命令历史限制
- 减少记录的命令条数
vi /etc/profile //系统环境变量文件
export HISTSIZE=20 //加在文件末尾,带上export使其全局有效
source /etc/profile //重新加载一下(也可以. /etc/profile)
- 登陆时自动清空命令历史(当前用户每次切换bash)
vi ~/.bashrc //若要对全部用户生效写入的文件是/etc/bashrc
echo "" > ~./bash_history //在文件中输入,以达到每次切换bash时都覆盖记录的效果
history -c //临时清空当前历史命令,重启可恢复(历史命令记录在.bash_history中)
-
终端自动注销
- 闲置600秒后自动注销
vi /etc/profile
export TMOUT=600
source /etc/profile
使用su命令切换用户
-
用途和用法
用途:Substitute User,切换用户
格式:
su - 目标用户
-
密码验证
-
root -> 任意用户,默认情况下不验证密码
-
普通用户 -> 其他用户,验证目标用户的密码
-
su - root //带 - 选项表示将使用目标用户的登录Shell环境
-
口令:xxxxxxxx
whoami //查看当前登录的用户
-
-
限制使用su命令的用户
-
将允许使用su命令的用户加入wheel组:
gpasswd -a zhangsan wheel //正在将用户"zhangsan"加入到"wheel"组中
-
启用pam_wheel模块:
vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
#auth required pam_wheel.so use_uid
-
-
查看su操作记录
查看日志文件
vim /var/log/secure
Linux中的PAM安全认证
-
su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
-
PAM(Pluggable Authentication Modules)可插拔式认证模块
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
PAM认证原理
-
一般遵循的顺序
Service (服务) → PAM(配置文件) → pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
-
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
-
不同的应用程序所对应的PAM模块是不同的
-
PAM认证的构成
-
查看某个程序是否支持PAM认证,可以用ls命令
-
示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
-
查看su的PAM配置文件:
cat /etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段
-
认证类型
- 控制类型
- PAM模块及其参数
-
-
PAM安全认证流程
-
pic
控制类型也称做Control Flags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续4.optional不用于验证,只显示信息
(通常用于session类型)
使用sudo机制提升权限
-
sudo命令的用途及用法
- 用途:以其他用户身份(如root)执行授权的命令
- 用法:
sudo 授权命令
-
配置sudo授权
-
visudo
-
vi /etc/sudoers
(此文件默认权限为440,需要强制保存,可以使用通配符*、取反符号!) -
在文件夹/etc/sudoers.d中创建
- 记录格式:
用户 主机名=(用户)命令程序列表("="左右无空格)
- 用户:直接授权指定的用户名,可采取"%组名"的形式(授权一个组的所有用户)。
- 主机名:使用此规则的主机名,没配置过主机名时可用localhost,有配过主机名则采用实际的主机名,ALL则代表所有主机。
- (用户):用户能够以何种身份来执行命令。此项可忽略,缺省时以root用户的身份来运行
-
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个目录之间以逗号","进行分隔。ALL则代表系统中的所有命令。
- 别名设置("="左右可以空格,别名必须为大写)
User_Alias USERS = username1, username2, username3 //一组用户的别名
Cmnd_Alias CMDS = command1, command2, command3 //一组用户的别名
Host_Alias Hosts = localhost1, localhost2, localhost3 //一组主机的别名
- 记录格式:
-
-
查看sudo操作记录
-
需启用Default logfile配置,启用日志配置以后,sudo操作过程才会被记录
-
默认日志文件:/var/log/sudo
visudo
Defaults logfile = "/var/log/sudo" //日志路径
-
-
查询授权的sudo操作
sudo -l
系统引导和登录控制
开关机安全控制
-
调整Bios引导设置
-
将第一引导设备设为当前系统所在硬盘
-
禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员密码
-
-
GRUB限制(限制更改GRUB引导参数)
- 使用grub2-mkpasswd-pbkdf2生成密钥
grub2-mkpasswd-pbkdf2 //根据提示设置GRUB菜单的密码
PBKDF2 hash of your passwd 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 //备份
- 修改/etc/grub.d/00_header文件中,添加密码记录
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" //设置用户名为root
password_pbkdf2 root grub.pkdf2…… //设置密码,省略部分内容为经过加密生成的密码字符串
EOF
- 生成新的grub.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的grub.cfg文件
重启系统进入GRUB菜单时,按e键将需要输入账号才能修改引导参数。
终端登录安全限制
-
限制root只在安全终端登录
- 安全终端配置:
/etc/securetty
- 将不信任的终端注释掉
- 安全终端配置:
-
禁止普通用户登录
-
建立/etc/nologin文件
- 删除nologin文件或重启后即恢复正常
touch /etc/nologin //禁止普通用户登录
rm -rf /etc/nologin //取消上述限制
-
端口扫描
网络端口扫描
-
NMAP
- 一款强大的网络扫描工具、安全检测工具
- 官网:http://nmap.org/
- CentOS 7.3光盘中安装包nmap-6.40-7.el7.x86_64.rpm
-
安装NMAP软件包
rpm -qa | grep nmap
yum install -y nmap
-
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检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping通而放弃扫描。
- 分别查看本机开放的TCP端口、UDP端口(先关闭防火墙)
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1
- 检测192.168.4.0/24网段有哪些主机提供FTP服务
nmap -p 21 192.168.4.0/24
- 检测192.168.4.0/24网段有哪些主机提供HTTP服务
nmap -p 80 192.168.4.0/24
- 检测192.168.4.0/24网段有哪些存活主机
nmap -n -sP 192.168.4.0/24
-
natstat
- natstat命令常用选项:
- -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
- -n:以数字的形式显示相关的主机地址、端口等信息。
- -t:查看TCP相关的信息。
- -u:显示UDP协议相关的信息。
- -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root权限)
- -r:显示路由表信息。
- -l:显示处于监听状态的网络连接及端口信息。
以上是关于Linux的安全与运用(susudoPAM)的主要内容,如果未能解决你的问题,请参考以下文章
linux 基础入门 系统服务 systemctl 与 xinted的运用
Node.js实战之Node多进程与JXcore 打包深入运用