目录
一、账号安全控制
1、系统账号清理
2、密码安全控制
3、命令历史限制
4、清空历史命令
5、终端自动注销
6、通过pam模块防止暴力破解
7、环境变量的读取顺序
二、限制su命令用户、PAM安全认证
1、su命令用户
2、PAM安全认证
三、提升权限机制 sudo ☆
1、sudo [参数选项] 命令
2、sudo的配置文件
3、sudo授权案例
四、 终端登录安全控制
1、禁止普通用户登录
2、 指定终端id进行登录
五、网络端口扫描 nmap ☆☆
1、常用选项
2、 比较常用的几种扫描类型如下
六、netstat命令 ☆☆
总结
① 将非登录用户的shell设为/sbin/nologin useradd -s /sbin/nologin xiao 禁止xiao用户远程登录
②锁定长期不使用的账号 passwd -l xiao 锁定xiao用户密码
③删除无用的账号 userdel -r xiao
④锁定账号文件
锁定和解锁文件命令(chattr +i chattr -i )查看文件是否锁定命令(lsattr)
锁定账号文件 passwd shadow
锁定之后,无法对文件进行任何修改,包括删除,只能查看文件内容
①设置密码有效期 chage -M 10 xiao 10天后修改密码
②要求用户下次登录时修改密码 chage -d 0 xiao 强制在下一次登录时更换密码
③还有一种可以修改配置文件的内容。
可以进入配置文件 /etc/login.defs 进行修改,修改之后以后创建的用户都会按照文件配置内容进行执行
第一种方法 ①减少历史命令记录的命令条数 永久修改 vim /etc/profile
② 在vim中输入:/HISTSIZE 修改历史命令只显示10条
第二种方法 家目录中(cd ~) vim .bash_profile 修改配置文字
第一种方法 history -c 临时清空历史命令 清空历史缓存
第二种方法 退出时自动清空历史命令
第三种方法 家目录中 vi .bash_history 全部清空
vim /etc/profile 输入 export TMOUT=20 20s不动自动退出终端
修改后刷新配置文件 source /etc/profile
用户登录 ---> 加载 ~/.bash_profile ---> bash_profile 中配置了首先是使 ~/.bashrc 生效
.bash_profile”文件中的命令将在该用户每次登录时被执行
.bashrc”文件中的命令会在每次加载“/bin/bash(Shell解释器)”
.bash_logout 在退出shell时被读取
默认情况下,任何用户都允许使用su命令进行切换,root用户切换到普通用户不需要密码,普通用户切换到root用户需要密码
vim /etc/pam.d/su
2 # auth sufficient pam_rootok.so
注释第二行后所有用户切换都需要密码
gpasswd -a zhangsan wheel
cat /etc/group | grep -i "wheel"
vim /etc/pam.d/su 取消第六行注释
取消第六行注释后,只有wheel组成员及root可以使用su
普通用户切换登录测试验证
使用 su 命令切换用户的操作将会记录到安全日志/var/log/secure 文件中,可以根据需要 进行查看。
PAM认证原理:(非重点)
1.PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
2. PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM
模块也是不同的。
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用 ls /etc/pam.d
每一列可以区分为三个字段:
认证类型 、 控制类型 、 PAM模块及参数
第一列代表PAM认证模块类型
auth(认证管理) : 对用户身份进行识别,如提示输入密码,或者判断是否为root
account(账户管理) : 对账号各项属性进行检查,如是否允许登录系统,账号是否已过期,是否达到最大用户数等。
password(密码管理) : 使用用户信息来更新数据,如修改用户密码。
session (会话管理) : 定义登录前以及退出后要进行的会话草最管理,如登录连接信息,用户数据打开和关闭,挂载文件系统。
第二列代表PAM控制标记
requird : 表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续同类型的下一个验证,所有此类型的模块都执行完成后,再返回失败。
requisite : 和requird类型,但如果此模块返回失败,则立刻返回失败,并且此类型失败。
sufficient: 如果此模块返回成功,一般不用于验证,只是显示信息(通常用于session类型)
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include : 表示在验证过程中,调用其他的PAM配置文件,比如很对应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径,同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数
这个需要根据所使用的模块来添加。传递给模块的参数,参数可以有多个,之间用空格分开。
-l | 列出用户在主机上可用的和被禁止的命令,一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的。 |
-v | 验证用户的时间戳,如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作,可以跟踪最新的时间戳 |
☆☆-u | 指定以用户执行特定操作 |
-k | 删除时间戳 |
vim /etc/sudoers 或者 visudo 保存需要强制保存
用户/组名称 主机名(主机组)=(提权的权限身份-ROOT) 赋权的使用命令(以绝对路径方式来写)
用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名,每配置过主机名时可以用locathost,有配过主机名
则用实际的主机min,ALL代表带所有主机。
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以逗号进行分隔。 ALL代表所有命令
① 授权zhangsan用户可以在所有的主机上创建网卡且不需要输入密码
1、zhangsan ALL=(root)NOPASSWD: /usr/sbin/ifconfig
②授权一个组可以在所有的主机上创建网卡且不需要输入密码
%gang ALL=(root)NOPASSWD: /usr/sbin/ifconfig
建立/etc/nologin文件
删除nologin文件或重启后恢复正常
限制root只在安全终端登录
禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。
这时候,只需要简单地建立/etc/nologin 文件即可。login 程序会检查/etc/nologin 文件是否存在, 如果存在,则拒绝普通用户登录系统(root 用户不受限制)。
touch /etc/nologin #除root以外的用户不能登录了。
此方法实际上是利用了 shutdown 延迟关机的限制机制,只建议在服务器维护期间临时 使用。 当手动删除/etc/nologin 文件或者重新启动主机以后,即可恢复正常。
扫描目标: 主机名,IP地址,网络地址等,多个目标以空格分隔。
选项 | 参数 |
---|---|
-p | 分别用来指定端口扫描 |
-n | 禁止反向DNS解析(加快扫描速度) |
-sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
tcp确定三次握手
-sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果 成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sF,TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU,UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP扫描的速度会比较慢。
-sP,ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
-P0,跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。
yum -y install nmap 提前安装好 ① nmap -sT 127.0.0.1
② nmap -sP 192.168.100.0/24 扫描这个网段有哪些主机开启
③ nmap -sU 127.0.0.1扫描这个主机的UDP端口
查看当前操作系统的网络连接状态、路由表、接口等信息,它是了解网络状态及排除网络故障的有效工具。
-n | 以数字的形式显示相关的主机地址,端口等信息 |
-r | 显示路由表信息 |
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-l | 显示处于监听(Listening)状态的网络连接及端口信息 |
-t | 查看TCP相关信息 |
-u | 查看UDP相关信息 |
-p | 显示与网络连接相关的进程号、进程名称信息(需要root权限) |
常用组合命令
① netstat -natp #查看正在运行的使用TCP协议的网络状态信息
② netstat -naup #查看正在运行的使用UDP协议的网络状态信息
③ netstat -natup #查看正在运行的使用TCP、UDP协议的网络状态信息
查看80端口的TCP信息
1、账号管理
锁定对象:账号、文件/目录
账号锁定:passwd -l、 usermod
文件/目录锁定:chattr +i 、文件/目录解锁:chattr -i
查看文件锁定:lsattr
2、密码安全
chage命令---->控制账号的密码
修改配置文件:/etc/logine.defs
3、历史命令限制
linux中执行命令的同时,会保存在内存中然后被写入到磁盘中,磁盘的目录为:~/.bash_hostory
所以想要完全清空,需要清空缓存(hostory -c)和清空磁盘(eho “ ” > ~/.bash_hostory)
或者在~/.bash_logout中定义清除日志,终端在关闭时执行的文件
或者在~/.bash_profile ( ~/.bashrc) 中定义,终端在开启时执行的文件
/etc/profile:系统所有用户生效的配置文件(环境变量)
4、su切换用户登录
管理su命令的用户或附加组(wheel)对象
配置文件:PAM模块的配置:/etc/pam.d
可实现的是:控制用户,分为root用户和组用户(wheel组),可以将普通用户添加到wheel组中,来实现“赋权”---->可以使用su切换
5、sudo提权(暂时用root用户的权限来执行操作)
使用 visudo 或 /etc/sudoerc 进行编辑
标准格式:用户 或 %组名(表示组) 主机名=命令(绝对路径)
提权的目的:可以有效减少重复输入root密码的次数/频率。
6、PAM原理
用户---->访问服务----->进项pam验证------>调用对应的so模块
如何查看指定的一个服务程序或命令工具,是否能被pam管理?
ls /etc/pam.d/ |grep 名称对象
7、终端登录
对于用户登录终端的id进行限制
控制的文件:/etc/securetty ------》控制指定的终端ID
可以在非远程登录的终端上,来切换终端。
8、nmap端口扫描
可以使用nmap扫描主机。主要输出的内容在于端口、协议、主机ip、是否存活。
作用场景:
①扫描指定协议(TCP/UDP)端口的目标IP、主机名、网络号是否开启
②扫描指定网段中哪些主机是否存活/开启的
9、netstat命令
netstat是查看指定协议的网络信息
包含:
① 协议(TCP/UDP) TCP
② 队列 queue 接收队列 0
③ 队列 queue 发送队列 0
④ IP:Port :::80(IPV6) 192.168.226.131:80(接收端) 192.168.226.132:Port(发送端)
⑤ LISTEN 状态 包含了连接状态、断开状态、等待状态
⑥ PID/进程任务 3459/httpd