Linux操作系统基础学习笔记(12~13)
前言
本期主要学习安全加固思路
从 身份鉴别(删除多余无用账号、增加密码复杂度、设置密码有效期、设置失败重试次数)
访问控制(设置黑白名单IP、端口、root权限控制)
安全审计(添加日志)
漏洞补丁(安装更新)
安全产品
加固清单 等方面考虑安全
另外对Windows 命令进行了解
12、Linux安全加固
(1)安全加固的概述
(2)身份鉴别加固
主要针对ssh密码暴力破解
命令 cat /etc/passwd
用于显示 Linux 或 Unix 系统中 /etc/passwd 文件的内容。这个文件包含了系统上所有用户账户的基本信息。
命令 cat /etc/shadow
用于显示 Linux 或 Unix 系统中 /etc/shadow 文件的内容。这个文件包含了系统用户的密码信息和其他安全相关的数据。
-
安全性:
- 这个文件只有 root 用户可以读取和修改
- 普通用户无法访问此文件
-
文件内容:每行代表一个用户账户,包含以下字段(用冒号分隔):
username:password:lastchange:min:max:warn:inactive:expire:
- username:用户名
- password:加密后的密码
- lastchange:上次修改密码的日期(从1970年1月1日起的天数)
- min:两次修改密码之间的最小天数
- max:密码有效的最大天数
- warn:密码过期前的警告天数
- inactive:密码过期后账号被禁用前的天数
- expire:账号过期的日期
awk -F: ‘(¥2==“”){print$1}’/etc/shadow
这个命令是用来在 /etc/shadow 文件中查找没有设置密码的用户账户
-
awk`: 这是一个强大的文本处理工具,用于对结构化文本进行操作。
-
-F:
: 这个选项设置字段分隔符为冒号(:)。因为 /etc/shadow 文件中的每个字段都是用冒号分隔的。 -
‘($2==“”)’: 这是 awk 的条件语句。
- $2 表示第二个字段,也就是密码字段。
- == 是比较操作符。
- “” 表示空字符串。
- 整个条件的意思是:如果第二个字段(密码字段)为空。
-
‘{print $1}’: 这是 awk 的动作语句。
- 如果条件为真,就执行这个动作。
- $1 表示第一个字段,也就是用户名。
- print 表示打印出来。
-
‘/etc/shadow’: 这是要处理的文件路径。
注意:
- 这个命令需要 root 权限才能执行,因为普通用户无法读取 /etc/shadow 文件。
- 在实际的 Linux 系统中,没有设置密码的账户通常会在密码字段显示为 “!” 或 “*”,而不是完全为空。因此,这个命令可能不会找到任何结果。
- 如果要查找被锁定或禁用的账户,可能需要修改条件,比如 ‘($2==“!” || $2==“*”)’ 。
pwmake 56
生成一个复杂度为56的值
操作系统自带的密码评估工具
(3)访问控制加固
限制用户越权访问
设置允许的IP访问(白名单):
配置完成后,重启ssh服务
service sshd restart
设置拒绝的ip访问(黑名单):
- 禁止root用户远程登录。不能远程登录就只有直接登录,比如系统终端的登录界面登录。因为root用户权限太高,非常敏感,如果让所有人都可以远程登陆就非常危险,所以要将root用户设置成不允许远程登录。以centos为例,默认是root用户允许远程登录,kali操作系统默认禁止root用户远程登录,在学习实验中,反而我们要特地去配置开放,实现远程连接。在生产环节中,要在这个配置文件里vim /etc/ssh/sshd_config 设置为PermitRootLogin no不允许root用户以远程SSH的这种方式连接登录,只能在这个登录界面去登陆。Centos、Kali两个操作系统都有这个配置文件。
禁止其他用户su(switch user)切换用户 - Linux操作系统设计su的意义,普通用户在自己的当前状态可以通过su或sudo切换用户,如果获得管理员密码,或得到管理员授权后,可以通过su或sudo进行root切换,实现提升权限。但如果所有用户对root都可以通过su或sudo对root切换实现提升权限,对安全而言是有危险的,所以需要通过vim
/etc/pam.d/su修改配置文件。
只允许wheel组用户
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel
有两个敏感权限。
- Sudo 常被用于有Linux操作系统普通用户的提权的一个入口。Sudo就是方便某些普通用户以root身份去做某一些操作。 配置文件是 /etc/sudoers但编辑使用visudo 去编辑。在这个里面就可以配置什么样的用户可以在做什么样的操作时使用root身份执行这个命令。
- SUID提权。操作系统s权限命令,当普通用户需要修改密码,怎样调用/usr/bin/passwd程序?就是给/usr/bin/passwd程序加上s权限,有了s权限后,其他用户执行这个程序会自动使用临时root身份去执行,执行完后还是普通用户权限。
s权限的授权要慎重,如果随便对本身不具有s权限的命令授权S权限,可能让其成为其他用户执行某一个命令将自己提升到root权限的入口
查找有s权限的程序
find / -user root -perm -4000 -print 2 >/dev/null
- 搜索整个文件系统,找出所有属于 root 用户且设置了 SUID
位的文件,并将结果打印到标准输出。同时,它会忽略所有因权限不足等原因产生的错误消息。
这个命令通常用于系统安全审计,因为 SUID
权限可能会被用来提升普通用户的权限,如果使用不当可能会带来安全风险。系统管理员经常使用这个命令来检查系统中可能存在的安全隐患。
(4)安全审计加固
自带的审计工具
我想要关注那个文件的变化就将这个文件添加到auditd规则中,只要这个文件发生了变化就会记录到日志中,我们就可以通过直接查看日志看看有哪些事件
具有审计控制实用程序的规则
使用auditctl程序控制行为、获取状态以及添加或删除规则。
添加一一个审计规则,记录任何读取或修改/etc/ssh/sshd_ config 文件的尝试。
sudo auditctl -W /etc/ssh/sshd_ config -p rwxa -k sshd_ config
其中:
●-w:在给定路径创建监视。
●-p:设置触发监视的权限[读取,写入,执行,属性]。
●-k:设置用于唯一 标识规则生成的审计记录的密钥筛选器。
显示规则。
sudo auditctl -1
新规则将添加到列表底部,但也可以将其添加到顶部。
检查是否已将新规则添加到/etc/ audit/ audit . rules文件中。
sudo cat /etc/audit/audit. rules
(5)漏洞补丁加固
https://www.cvedetails.com/
这个网站,查看Linux系统统计的漏洞数,漏洞范围
(6)安全产品
(7)加固清单和脚本
总结:安全加固思路
13、Windows命令
dos命令大全
https://www.uc23.net/command/msdos
https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/windows-commands
- cmder.net官网下载,就可以在DOS的command命令行执行Linux命令。因为cmder已经将Linux的执行命令转化为dos执行命令,输出执行结果;command命令无大、小写
- windows的PowerShell与cmd不一样,PowerShell可以说是cmd的升级版,但两者的设计思路已发生改变,PowerShell基于Microsoft的.net接口设计,所以不仅能执行cmd命令,还能执行代码、脚本。对于电脑的配置管理PowerShell比较少用,能在cmd操作的命令尽量不在PowerShell中执行。
网卡重启脚本