当前位置:网站首页>10.系统安全及应用
10.系统安全及应用
2022-07-17 00:16:00 【世上无难事754】
文章目录
账号安全基本措施
系统账号清理
将非登陆用户的Shell设为 /sbin/noiogin
锁定长期不使用的账号
删除无用的账号
锁定账号文件 passwd,shadow
账号锁定:
解锁账号:
删除无用账号:
chattr命令
如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方 法
使用 chattr 命令,分别结合“+i”“-i”选项来锁定、解锁文件,使用 lsattr 命令可以查看文 件锁定情况
参数:
+i:锁定文件
-i:解锁文件
lsattr:查看为锁定的状态
锁定文件:锁定后只可以看,其他操作都不允许
测试文件是否锁住:因为锁定没办法写入到/etc/passwd,所以创建不了用户,给密码也一样
解锁文件:
密码安全控制
vi /etc/login.defs #适用于新建的用户
PASS_MAX_DAYS 30 #设置密码有效期30天 默认99999
PASS_MIN_DAYS 0 #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0
PASS_MIN_LEN 5 #密码最小长度,对于root无效
注解:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
PASS_WARN_AGE 7 #指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
通过pam 模块来防止暴力破解ssh(扩展)
[email protected] ~]# vim /etc/pam.d/sshd
在第一行下面添加一行:
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁
命令历史限制
查看历史命令: history
history -c 临时的清除,重启之后还会有,因为清除的是缓存(内存)里的数据,不是磁盘里的
清除磁盘中的数据开机后就不在有显示 :
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVxzEesJ-1654514949660)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529214108002.png)]
先清除缓存在echo覆盖掉,或直接rm -rf删除此文件也可以清除历史命令,此文件会开机自创建[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIONRzgr-1654514949660)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529214345682.png)]
vim进入编辑(修改)历史记录遗留多少,用于新登录用户
/etc/profile 文件为系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvjxaciS-1654514949660)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529211341094.png)]
修改历史记录遗留为多少[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M7Bjk4Da-1654514949661)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529212121138.png)]
刷新一下 让系统识别,修改成功[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EiA6AFoR-1654514949661)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529213146937.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVdEZgSa-1654514949661)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529213231482.png)]
关于环境变量的读取顺序:
用户登录 ->> 加载~/.bash_profile --> bash_profile中配置了首先是使~/.bashrc生效
.bash_profile”文件中的命令将在该用户每次登录时被执行
.bashrc”文件中的命令会在每次加载“ /bin/bash (Shell解释器)
.bash_logout 在退出shell时被读取
其他办法:
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,
.bash_history文件都会被删除.
系统自动注销设置
进入编辑
插入写闲着多久系统自动注销
需要注意的是,当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免 设置 TMOUT 变量。必要时可以执行“unset TMOUT”命令取消 TMOUT 变量设置
除此之外,还可以修改用户宿主目录中的~/.bash_logout 文件,添加清空历史命令的 操作语句。这样,当用户退出已登录 Bash 环境以后,所记录的历史命令将自动清空
vi ~/.bash_logout
history -c
clear
限制su命令用户
默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root) 的登录密码,这样带来了安全风险。为了加强 su 命令的使用控制,可以借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换
例:将授权使用 su 命令 的用户添加到 wheel 组,修改/etc/pam.d/su 认证配置以启用 pam_wheel 认证
在/etc/pam.d/su 文件里设置禁止用户使用su命令(一般注释2 6行)
1)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换
2)两行都注释也是运行所有用户都能使用su命令,但root’下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
没注释之前切换是不需要密码的:
把第二行注释并保存后就会需要密码登陆:
表示双方登陆都需要验证
3)如果开启第六行,要第二行开启的情况下,表示只有root用户和wheel组内的用户才可以使用su命令
lisi用户不在wheel组中就不可以使用su命令
相反在同一个组内可以使用
同一级别用户,不在同一个组内的用户,要切换到在组内的用户不可以,但组内用户可切换都没有组的用户
4)如果注释第二行,开启六行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
组内成员
取消第四条注释使得wheel成员su到root不用输密码
普通用户切换登录测试验证
使用 su 命令切换用户的操作将会记录到安全日志/var/log/secure 文件中,可以根据需要 进行查看
PAM安全认证
可插拔是形象说法 不是外部设备也不是U盘,可插拔可以理解为可配置、可定制的一个模块,你想让某个服务具有什么样的认证功能,你就可以通过配置它的配置文件实现
可以理解为可配置、可定制、我们可以编辑,我们可以定制某个服务的认证就是可插拔试认证模块,它是一种高效而且灵活的便利的用户级的认证,也是现在linux 服务器普遍使用的认证方式
Linux-PAM,是linux可插拔认证模块,是一套可定制、 可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
PAM认证原理:
1.PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
- PAM认证首先要确定哪一项应用 服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于
/lib64/security/下)进行安全认证。 - 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM
模块也是不同的。
如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/pam.d/
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
vim su 每一列的详细说明:
第一列代表PAM认证模块类型
auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等
password: 使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统
第二列代表PAM控制记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开
PAM 就是管理默认程序或服务的权限程序
PAM su 切换用户(su程序的使用权)
PAM sudo 提权/借权
sudo机制提升权限
sudo机制介绍:
通过su命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登 录密码。例如,若要从zhangsan 用户切换为 root 用户,必须知道 root 用户的密码。对于生产环 境中的 Linux 服务器,每多一个人知道特权密码,其安全风险也就增加一分。 有没有一种折中的办法,既可以让普通用户拥有一部分管理权限,又不需要将 root 用户的密码告诉他,使用 sudo命令就可以提升执行权限。不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令。
etc/sudoers文件的默认权限为440,需使用专门的 visudo 工具进行编辑。虽然也可以用 vi 进行编辑,但保存时必须执行“:w!”命令来强制操作,否则 系统将提示为只读文件而拒绝保存
配置文件/etc/sudoers 中,授权记录的基本配置格式
用户 主机名(可自定义) 允许使用什么命令的绝对路径
zhangsan localhost=/usr/bin/ifdown
sudo [参数选项] 命令:
-l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳;
-u 指定以以某个用户执行特定操作;
-k 删除时间戳,下一个sudo 命令要求用求提供密码;
普通用户没提权时不可操作
授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令
具体含义如下:
注:Runas_Alias:在哪些主机以谁的身份运行的别名 这个不怎么使用
用户组设置sudo提权:
用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机(MACHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份 sudoers 文件,一般设为 localhost 或者实际的主机名即可
命令(COMMANDS):允许授权的用户通过 sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔
实验 例:visudo进入编辑
让某个用户可以使用那个命令
zhangsan用户创建用户时不需要密码,控制账号锁定解锁等需要密码
sudo输入命令第一次默认5分钟,前提是密码没改
终端登录安全控制
限制root只在安全终端登录
禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时 候,只需要简单地建立/etc/nologin 文件即可。login 程序会检查/etc/nologin 文件是否存在, 如果存在,则拒绝普通用户登录系统(root 用户不受限制)
touch /etc/nologin #除root以外的用户不能登录了。
此方法实际上是利用了 shutdown 延迟关机的限制机制,只建议在服务器维护期间临时 使用。当手动删除/etc/nologin 文件或者重新启动主机以后,即可恢复正常。
vi /etc/securetty 虚拟机内 远程不可
删除之后就可登陆
虚拟机内 远程不可
虚拟控制台的选择可以通过按下Ctrl+Alt键和功能键Fn(n=1~6)来实现(tty1-tty6) tty1 图形界面 tty2-6 字符界面
注释 tty5 tty6
root 就不能登录
按Ctrl+Alt键和功能键F(1-12),F5,6不可登陆
使用last命令显示用户或终端登录情况
网络端口扫描nmap
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
端口的取值范围是:0-65535 1-1027 0(是预留的特殊端口)
其中,扫描目标可以是主机名、IP 地址或网络地址等,多个目标以空格分隔
常用选项:
-p:分别用来指定扫描的端口
-n:禁用反向 DNS 解析(以加快扫描速度)
扫描 类型决定着检测的方式,也直接影响扫描的结果。
有的时候开启dns解析 通过该域名 回的是反向解析 把IP解析成域名 我禁止反向解析可以加快速度
netstat -natp | grep 80 查看本地占用80端口的ip(主机)
比较常用的几种扫描类型:
-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 通而放弃扫描。
防火墙是有软件形式,和硬件形式的,防火墙是禁ping的
禁ping临时
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
启用ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
永久禁 ping
编辑配置
vim /etc/sysctl.conf 内核配置文件,可做内核优化,开关系统功能,
设置禁ping(如果有此配置就无需重复添加,仅更新值即可)
net.ipv4.icmp_echo_ignore_all = 1
刷新配置
sysctl -p
启用ping
net.ipv4.icmp_echo_ignore_all = 0
例:nmap -p 80 192.168.226.100-200
检测 IP 地址位于 192.168.226.100-200的主机是否开启文件共享服务
netstat命令
查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具
选项:
-n:以数字的形式显示相关的主机地址、端口等信息
-r:显示路由表信息
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l:显示处于监听(Listening)状态的网络连接及端口信息
-t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息
-u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)
netstat -natp 查看正在运行的使用TCP协议的网络状态信息(可配合管道符grep过滤出特定的记录)
netstat -naup 查看正在运行的使用UDP协议的网络状态信息(可配合管道符grep过滤出特定的记录)
Proto 显示连接使用的协议,
RefCnt 表示连接到本套接口上的进程数量,
Types 显示套接口的类型,
State 显示套接口当前的状态,
ion Control Protocol,传输控制协议)相关的信息
-u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)
netstat -natp 查看正在运行的使用TCP协议的网络状态信息(可配合管道符grep过滤出特定的记录)
netstat -naup 查看正在运行的使用UDP协议的网络状态信息(可配合管道符grep过滤出特定的记录)
Proto 显示连接使用的协议,
RefCnt 表示连接到本套接口上的进程数量,
Types 显示套接口的类型,
State 显示套接口当前的状态,
Path 表示连接到套接口的其它进程使用的路径名
边栏推荐
- PHP pseudo protocol for command execution
- Use of sqlmap
- Interpretation of concurrent virtual users, RPS and TPS
- Inverse yuan (I'll add these words if there are too many people using the name)
- 时间管理方法的反思与探讨
- Keep two decimal places and take values upward
- Leetcode 322: coin change - Dynamic Planning
- For solopi app performance test
- 2022 latest software testing tools
- 高质量的子程序
猜你喜欢
[unity Editor Extension] displays the memory size of all files in the resource directory
【瑞吉外卖⑩】Linux 粗略学习 & Redis 粗略学习
[unity development tips] unity mixer mixer controls global volume
VLAN and trunk port configuration
The JMeter BeanShell implementation writes the parameterized data generated by the request to the file
How to add software shortcuts to the right mouse button list
DNS域名解析
shell脚本接收和返回参数
The solution to the bounce and offset of unity3d game characters when jumping to the ground
[unity Editor Extension] unity makes its own exclusive editor panel
随机推荐
Firewalld 防火墙
静态路由(详)
仅以此篇纪念负数取模
BeanShell script gets the current time
Test knowledge preparation
Leetcode --- one question per day
SoloPi APP性能测试用
[tools] unity quickly starts to make the artifact tilemap of 2D and 2.5D games
Plant a seed and grow into a towering b+ tree ten years later
Reprint: SQL injection common bypass
LAMP平台部署及应用
Flyway的SaaS多租户实现方案
MDK Keil/ARM printf 用法说明
Make a simple record and check the set
Gzip的动态压缩和静态压缩详解
Interpretation of concurrent virtual users, RPS and TPS
Inverse yuan (I'll add these words if there are too many people using the name)
摇摆摇摆~防火墙
2022.6.28-database-1 Isolation level of database
VLAN和TRUNK口配置