Linux系统安全及应用(su、sudo命令详解)(太详细了)
本文主要从账号安全控制、系统引导和登录控制的角度,介绍Linux系统安全优化的点点滴滴;还将介绍基于Linux环境的弱口令检测、网络扫描等安全工具的构建和使用,帮助管理员查找安全隐患,及时采取有针对性的防护措施
Linux系统安全及应用(su、sudo命令详解) 太详细了
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
Linux系统安全及应用(su、sudo命令详解)(详细)
目录
一、账号安全基本措施
(一)、系统账号清理
(二)、密码安全控制
(三)、命令历史限制
(四)终端自动注销
二、使用su命令切换用户
(一)、用途及用法
(二)、su命令的安全隐患
(三)PAM可插拔式认证模块
1、介绍
2、PAM认证原理
3、PAM认证的构成(了解)
(四)、限制使用su命令的用户
三、使用sudo机制提升权限
(一)、配置sudo授权
(二)、启用sudo操作日志
四、开关机安全控制
(一)、调整BIOS引导设置
(二)、GRUB限制
(三)、禁止 root 用户登录
(四)、禁止普通用户登录
五、系统弱口令检测
(一)、Joth the Ripper,简称为 JR
五、网络端口扫描—NMAP
(一)、NMAP
(二)、NMAP的扫描
(1) 、nmap
(2)、natsta
(2)、natsta
一、账号安全基本措施
(一)、系统账号清理
将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
锁定长期不使用的账号
usermod -L 用户名 [解锁(-U)] passwd -l 用户名 [解锁(-u)]
passwd -S 用户名 查用户密码状态
删除无用的账号
useradd -r 用户名 连宿主目录一并删除
锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow 锁定这个两个账号 文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow 查看账号状态
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow 解锁这两个账号文件
(二)、密码安全控制
设置密码有效期
chage -M 30 chen
要求用户下次登录时修改密码
chage -d 0 lisi
密码有效期设置为0,意思就是下次登录就要重新设置密码才可以登录
vi /etc/login.defs 给即将创建的新用户设置密码有效期
(三)、命令历史限制
减少记录的命令条数
vim /etc/profile
export HISTSIZE=200 这个比较简单,保留最后200条历史命令
注销时自动清空命令历史
vim /etc/profile
rm -rf /root/.bash_history 每次开机执行删除这个文件的命令,这样历史的命令就会自动清空
注:想要配置直接生效:. /etc/profile 或 source /etc/profile
(四)终端自动注销
闲置600秒后自动注销
vi ~/.bash_profile
export TMOUT=600
二、使用su命令切换用户
(一)、用途及用法
用途:Substitute User,切换用户
格式:su 目标用户
密码验证:
root su任意用户,不验证密码
普通用户su其他用户,验证目标用户的密码
(二)、su命令的安全隐患
默认情况下,任何用户都允许使用su命令,这样就有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
(三)PAM可插拔式认证模块
1、介绍
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
2、PAM认证原理
1.PAM 认证一般遵循的顺序:Service(服务)–> PAM(配置文件)–> pam_*.so;
2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于 /lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
3、PAM认证的构成(了解)
第一列代表PAM认证模块类型
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关
第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开
(四)、限制使用su命令的用户
将允许使用su命令的用户加入wheel组
启用pam_wheel认证模块
[root@localhost ~]#gpasswd -a chen wheel
正在将用户“chen”加入到“wheel”组中
[root@localhost ~]#groups chen
chen : chen wheel
[root@localhost ~]#vim /etc/pam.d/su (在这个文件里设置禁止用户使用su命令)
首先,圈出来的两行是默认状态,这种状态下是允许所有用户间使用su命令进行切换的, 而且root使用su普通用户就不需要输入密码
第二种情况,把两行都注释掉:
第三种情况:注释第一行,开启第二行:
第四种情况:第一行和第二行都开启:
由此可以得出四种情况的结果:
1、两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
2、两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码。)
3、如果开启第一行和第二行,表示只有root用户和wheel组内的用户才可以使用su命令。
4、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
三、使用sudo机制提升权限
(一)、配置sudo授权
命令:visudo或者vi /etc/sudoers(此文件保存退出需要:wq!)
记录格式:用户 主机名列表=命令程序列表
用户 主机名=(用户) 命令程序列表
例:给chen这个用户加权限,除了reboot和poweroff其他命令都可执行
下面说一下别名的设置:
(二)、启用sudo操作日志
需启用 Defaults logfile 配置
默认日志文件:/var/log/sudo
命令:visudo或 vim /etc/sudoers
Defaults logfile = “/var/log/sudo”!
四、开关机安全控制
(一)、调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
(二)、GRUB限制
开机页面按e键盘就会进入grub菜单,如果修改grub菜单内的配置,可能会导致系统开不了机,为了保护grub菜单,给进入grub菜单设置密码
下面看具体操作:
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_header文件中,添加密码记录
生成新的grub.cfg配置文件
(三)、禁止 root 用户登录
在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。
vi /etc/securetty
#tty5
#tty6
进入tty界面按住ctrl+alt 和F1-6之间切换,比如我们禁用tty5和tty6
(四)、禁止普通用户登录
login 程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)。
touch /etc/nologin #禁止普通用户登录
rm -rf /etc/nologin #取消登录限制
五、系统弱口令检测
(一)、Joth the Ripper,简称为 JR
一款密码分析工具,支持字典式的暴力破解
通过对shadow文件的口令分析,可以检测密码强度
官方网站:http://www.openwall.com/john/
1、首先将准备好的john工具包通过xshell直接拖到/opt目录下,并进行解压
2、安装软件编译工具,需要用到下面的三个工具,没安装的可以安装一下
yum install -y gcc gcc-c++ make
3、切换到src目录下面进行编译安装
cd /opt/john-1.8.0/src
make clean linux-x86-64
4、准备待破解的密码文件,密码文件我们知道在/etc/passwd里面,我们复制这个文件到opt目录下面,并命名
cp /etc/shadow /opt/shadow.txt
5、这一步就是见证奇迹的时刻,执行暴露破解
cd /opt/john-1.8.0/run
./john /opt/shadow.txt
#查看已破解出的账户列表
./john --show /opt/shadow.txt
使用密码字典文件
john.pot #清空已破解出的账户列表,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt #使用指定的字典文件进行破解
六、网络端口扫描—NMAP
(一)、NMAP
一款强大的网络扫描、安全检测工具
官方网站:http://nmap.org/
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
使用之前查一下是否安装:
rpm -qa | grep nmap
yum install -y nmap
(二)、NMAP的扫描
(1) 、nmap
nmap [扫描类型] [选项] <扫描目标 …>
NMap也就是Network Mapper,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
检测192.168.1.0/24网段有哪些主机提供HTTP服务
nmap -p 80 192.168.1.0/24
检测192.168.1.0/24网段有哪些存活主机,这个自己试一下
nmap -n -sP 192.168.1.0/24
(2)、natsta
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作
该命令的一般格式为:
netstat [选项]
常用命令选项:
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息
例:netstat -natp 查看正在运行的使用TCP协议的网络状态信息
网段有哪些存活主机,这个自己试一下
nmap -n -sP 192.168.1.0/24
(2)、natsta
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作
该命令的一般格式为:
netstat [选项]
常用命令选项:
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息
例:netstat -natp 查看正在运行的使用TCP协议的网络状态信息
netstat -naup 查看正在运行的使用UDP协议的网络状态信息 netstat -natup 查看正在运行的使用TCP和UDP协议的网
————————————————
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)