Linux系统安全及应用(su、sudo命令详解)(详细)
系统安全以及应用
目录 二、使用su命令切换用户 (四)、限制使用su命令的用户 三、使用sudo机制提升权限 四、开关机安全控制 五、系统弱口令检测 五、网络端口扫描—NMAP
一、账号安全基本措施 (一)、系统账号清理
要求用户下次登录时修改密码
chage -d 0 lisi
密码有效期设置为0,意思就是下次登录就要重新设置密码才可以登录
vi /etc/login.defs 给即将创建的新用户设置密码有效期
(三)、命令历史限制
减少记录的命令条数
vim /etc/
=200 这个比较简单,保留最后200条历史命令
注销时自动清空命令历史
vim /etc/
rm -rf /root/. 每次开机执行删除这个文件的命令,这样历史的命令就会自动清空
注:想要配置直接生效:. /etc/ 或 /etc/
(四)终端自动注销
闲置600秒后自动注销
vi ~/.
TMOUT=600
二、使用su命令切换用户 (一)、用途及用法
用途: User,切换用户
格式:su 目标用户
密码验证:
root su任意用户,不验证密码
普通用户su其他用户,验证目标用户的密码
(二)、su命令的安全隐患
默认情况下,任何用户都允许使用su命令,这样就有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
(三)PAM可插拔式认证模块 1、介绍
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
2、PAM认证原理
1.PAM 认证一般遵循的顺序:(服务)–> PAM(配置文件)–> pam_*.so;
2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于 /lib64//下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
3、PAM认证的构成(了解)
第一列代表PAM认证模块类型
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
:使用用户信息来更新数据,如修改用户密码。
:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关
第二列代表PAM控制标记
:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
:与类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 类型)。
:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64//目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开
(四)、限制使用su命令的用户
将允许使用su命令的用户加入wheel组
启用认证模块
[root@ ~]# -a chen wheel
正在将用户“chen”加入到“wheel”组中
[root@ ~]# chen
chen : chen wheel
[root@ ~]#vim /etc/pam.d/su (在这个文件里设置禁止用户使用su命令)
首先,圈出来的两行是默认状态,这种状态下是允许所有用户间使用su命令进行切换的, 而且root使用su普通用户就不需要输入密码
第二种情况,把两行都注释掉:
第三种情况:注释第一行,开启第二行:
第四种情况:第一行和第二行都开启:
由此可以得出四种情况的结果:
1、两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
2、两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码。)
3、如果开启第一行和第二行,表示只有root用户和wheel组内的用户才可以使用su命令。
4、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
三、使用sudo机制提升权限 (一)、配置sudo授权
命令:或者vi /etc/(此文件保存退出需要:wq!)
记录格式:用户 主机名列表=命令程序列表
用户 主机名=(用户) 命令程序列表
例:给chen这个用户加权限,除了和其他命令都可执行
下面说一下别名的设置:
(二)、启用sudo操作日志
需启用 配置
默认日志文件:/var/log/sudo
命令:或 vim /etc/
= “/var/log/sudo”!
四、开关机安全控制 (一)、调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
(二)、GRUB限制
开机页面按e键盘就会进入grub菜单,如果修改grub菜单内的配置,可能会导致系统开不了机,为了保护grub菜单,给进入grub菜单设置密码
下面看具体操作:
使用grub2--生成密钥
修改/etc/grub.d/文件中,添加密码记录
生成新的grub.cfg配置文件
(三)、禁止 root 用户登录
在 Linux 系统中,login 程序会读取/etc/ 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。
vi /etc/
#tty5
#tty6
进入tty界面按住ctrl+alt 和F1-6之间切换,比如我们禁用tty5和tty6
(四)、禁止普通用户登录
login 程序会检查/etc/ 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)。
touch /etc/ #禁止普通用户登录
rm -rf /etc/ #取消登录限制
五、系统弱口令检测 (一)、Joth the ,简称为 JR
一款密码分析工具,支持字典式的暴力破解
通过对文件的口令分析,可以检测密码强度
官方网站:
1、首先将准备好的john工具包通过直接拖到/opt目录下,并进行解压
2、安装软件编译工具,需要用到下面的三个工具,没安装的可以安装一下
yum -y gcc gcc-c++ make
3、切换到src目录下面进行编译安装
cd /opt/john-1.8.0/src
make clean linux-x86-64
4、准备待破解的密码文件,密码文件我们知道在/etc/里面,我们复制这个文件到opt目录下面,并命名
cp /etc/ /opt/.txt
5、这一步就是见证奇迹的时刻,执行暴露破解
cd /opt/john-1.8.0/run
./john /opt/.txt
#查看已破解出的账户列表
./john --show /opt/.txt
使用密码字典文件
john.pot #清空已破解出的账户列表,以便重新分析
./john --=./.lst /opt/.txt #使用指定的字典文件进行破解
五、网络端口扫描—NMAP (一)、NMAP
一款强大的网络扫描、安全检测工具
官方网站:
7.3光盘中安装包 nmap-6.40-7.el7..rpm
使用之前查一下是否安装:
rpm -qa | grep nmap
yum -y nmap
(二)、NMAP的扫描 (1) 、nmap
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
检测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)、
命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作
该命令的一般格式为:
[选项]
常用命令选项:
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息
例: -natp 查看正在运行的使用TCP协议的网络状态信息
网段有哪些存活主机,这个自己试一下
nmap -n -sP 192.168.1.0/24
(2)、
命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作
该命令的一般格式为:
[选项]
常用命令选项:
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n:以数字的形式显示相关的主机地址、端口等信息。
-t:查看 TCP相关的信息。
-u:显示 UDP协议相关的信息。
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
-r:显示路由表信息。
-l:显示处于监听状态的网络连接及端口信息
例: -natp 查看正在运行的使用TCP协议的网络状态信息
-naup 查看正在运行的使用UDP协议的网络状态信息 -natup 查看正在运行的使用TCP和UDP协议的网