文章目录
-
- 账号安全基本措施
-
- 系统账号清理
- chattr命令
- 密码安全控制
- 通过pam 模块来防止暴力破解ssh(扩展)
- 命令历史限制
- 系统自动注销设置
- 限制su命令用户
- PAM安全认证
- sudo机制提升权限
- 终端登录安全控制
- 网络端口扫描nmap
-
- 禁ping临时
- 永久禁 ping
- netstat命令
账号安全基本措施 系统账号清理
将非登陆用户的Shell设为 /sbin/noiogin
锁定长期不使用的账号
删除无用的账号
锁定账号文件 passwd,shadow
账号锁定:
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2123338-0.jpg)
文章图片
解锁账号:
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2125B5-1.jpg)
文章图片
删除无用账号:
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/9d847884093247598746fe1a792502a6.png)
文章图片
chattr命令 如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方 法
使用 chattr 命令,分别结合“+i”“-i”选项来锁定、解锁文件,使用 lsattr 命令可以查看文 件锁定情况
参数:
+i:锁定文件
-i:解锁文件
lsattr:查看为锁定的状态
锁定文件:锁定后只可以看,其他操作都不允许
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcSCUYgr-1654419807188)(https://typorqi.oss-cn-hangzhou.aliyuncs.com/image-20220528154304847.png)]
测试文件是否锁住:因为锁定没办法写入到/etc/passwd,所以创建不了用户,给密码也一样
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/fd14210d916e4f418d5d450f7a1ba591.png)
文章图片
解锁文件:
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R21249E-4.png)
文章图片
密码安全控制 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 天。
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/a458da600353431b8ba1134f1a7ec603.png)
文章图片
通过pam 模块来防止暴力破解ssh(扩展) root@benet ~]# 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-Bs3esRDi-1654419807188)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529214108002.png)]
先清除缓存在echo覆盖掉,或直接rm -rf删除此文件也可以清除历史命令,此文件会开机自创建[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DMY9CXdI-1654419807189)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529214345682.png)]
vim进入编辑(修改)历史记录遗留多少,用于新登录用户
/etc/profile 文件为系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtQ4kyDI-1654419807189)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529211341094.png)]
修改历史记录遗留为多少[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QB7oAGk5-1654419807189)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529212121138.png)]
刷新一下 让系统识别,修改成功[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9OkOFGQd-1654419807189)(C:\Users\qi\AppData\Roaming\Typora\typora-user-images\image-20220529213146937.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kiH1Huc8-1654419807190)(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文件都会被删除.
系统自动注销设置 进入编辑
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2124215-6.png)
文章图片
插入写闲着多久系统自动注销
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2121536-7.jpg)
文章图片
需要注意的是,当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免 设置 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 认证
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2124296-8.png)
文章图片
在/etc/pam.d/su 文件里设置禁止用户使用su命令(一般注释2 6行)
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/1d6762cf435648148b72f866c69af5d9.jpg)
文章图片
1)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换
2)两行都注释也是运行所有用户都能使用su命令,但root’下使用su切换到其他普通用户需要输入密码; 如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
没注释之前切换是不需要密码的:
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212A19-10.png)
文章图片
把第二行注释并保存后就会需要密码登陆:
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2121319-11.png)
文章图片
表示双方登陆都需要验证
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212H16-12.jpg)
文章图片
3)如果开启第六行,要第二行开启的情况下,表示只有root用户和wheel组内的用户才可以使用su命令
lisi用户不在wheel组中就不可以使用su命令
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/587aa155e314421295720c7f0b331905.png)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2125L5-14.jpg)
文章图片
相反在同一个组内可以使用
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212L51-15.png)
文章图片
同一级别用户,不在同一个组内的用户,要切换到在组内的用户不可以,但组内用户可切换都没有组的用户
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/eac727cfb213467984f3505faf7ca355.jpg)
文章图片
4)如果注释第二行,开启六行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212N52-17.jpg)
文章图片
组内成员
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212G10-18.png)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2125960-19.png)
文章图片
取消第四条注释使得wheel成员su到root不用输密码
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2121Q0-20.jpg)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2124L2-21.png)
文章图片
普通用户切换登录测试验证
使用 su 命令切换用户的操作将会记录到安全日志/var/log/secure 文件中,可以根据需要 进行查看
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/317c19dfff1a4920aff1b81ddf3d1b36.jpg)
文章图片
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模块调用
第一列代表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
【liunx|10.系统安全及应用】sudo [参数选项] 命令:
-l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳;
-u 指定以以某个用户执行特定操作;
-k 删除时间戳,下一个sudo 命令要求用求提供密码;
普通用户没提权时不可操作
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R21254V-23.jpg)
文章图片
授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令
具体含义如下:
注:Runas_Alias:在哪些主机以谁的身份运行的别名 这个不怎么使用
用户组设置sudo提权:
用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机(MACHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份 sudoers 文件,一般设为 localhost 或者实际的主机名即可
命令(COMMANDS):允许授权的用户通过 sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔
实验 例:visudo进入编辑
让某个用户可以使用那个命令
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2125P7-24.jpg)
文章图片
zhangsan用户创建用户时不需要密码,控制账号锁定解锁等需要密码
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/88f7fd8b24ff472dacb93f6dde24c908.png)
文章图片
sudo输入命令第一次默认5分钟,前提是密码没改
终端登录安全控制 限制root只在安全终端登录
禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时 候,只需要简单地建立/etc/nologin 文件即可。login 程序会检查/etc/nologin 文件是否存在, 如果存在,则拒绝普通用户登录系统(root 用户不受限制)
touch /etc/nologin #除root以外的用户不能登录了。
此方法实际上是利用了 shutdown 延迟关机的限制机制,只建议在服务器维护期间临时 使用。当手动删除/etc/nologin 文件或者重新启动主机以后,即可恢复正常。
vi /etc/securetty 虚拟机内 远程不可
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/94d13d658aea4122aeb00eb36715fe67.png)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2121558-27.jpg)
文章图片
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/00b5c3f6c93b477ab745c72d1b14ae5a.jpg)
文章图片
删除之后就可登陆
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2126217-29.png)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R212D19-30.jpg)
文章图片
虚拟机内 远程不可
虚拟控制台的选择可以通过按下Ctrl+Alt键和功能键Fn(n=1~6)来实现(tty1-tty6) tty1 图形界面 tty2-6 字符界面
注释 tty5 tty6
root 就不能登录
按Ctrl+Alt键和功能键F(1-12),F5,6不可登陆
使用last命令显示用户或终端登录情况
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R2124415-31.png)
文章图片
![liunx|10.系统安全及应用](http://img.readke.com/220725/0R21225K-32.png)
文章图片
网络端口扫描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的主机是否开启文件共享服务
![liunx|10.系统安全及应用](https://img.it610.com/image/info8/9a18c2e6bd7b4752af1532952b229e37.jpg)
文章图片
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 表示连接到套接口的其它进程使用的路径名
推荐阅读
- wed服务|3.Nginx网站服务
- Linux|Linux awk命令详解
- linux|linux awk命令根据分隔符输出,linux下awk命令使用详解(实例)
- linux|linux awk 命令使用详解
- RK3588|RK3588 CPU GPU DDR NPU定频和性能模式设置
- Linux|常见Linux命令的基本使用
- CTF知识点|SSTI 模板注入漏洞总结之[BJDCTF2020]Cookie is so stable
- #|【攻防世界WEB】难度四星12分进阶题(Confusion1)
- #|【攻防世界WEB】难度三星9分入门题(下)(shrine、lottery)