Linux的系统安全管理及应用
本章概述
主要讲解系统账号和密码的安全,历史命令遗留的风险及解决办法。用户之间的相互切换,并且说明如何限制一些用户进行切换功能。频繁切换用户会导致root密码泄露,如何在不
文章目录 本章概述 主要讲解系统账号和密码的安全,历史命令遗留的风险及解决办法。用户之间的相互切换,并且说明如何限制一些用户进行切换功能。频繁切换用户会导致root密码泄露,如何在不切换root用户下使用root用户的命令,并且限制使用命令的个数。终端登录安全控制进行限制root用户登录。网络端口扫描,在知道对方的主机名或ip地址、网段时,如何去判断对方主机哪个端口是否开启。简单介绍查看当前系统的网络状态以及网络故障如何去查看。 一、账号安全控制 1、系统账号清理 ①将非登录用户的Shell设为/sbin/nologin。
②锁定长期不使用的账号 锁定和解锁的方式有两种。 以下两种方式可以任意互相解锁。
③删除无用的账号
④锁定账号文件passwd、shadow
实例:将文件passwd和shadow文件都锁定,无法创建用户 实例:将passwd文件进行解锁,还是会无法创建文件,那是因为锁定了shadow文件,再创建用户时,也还需要向文件shadow里面写入密码信息,所以无法创建。 实例:只锁定passwd文件,不锁定shadow文件,可以进行修改密码,因为具体密码是存在shadow文件里面。 2、密码安全控制 ①密码信息内容修改可以使用chage命令进行修改shadow里面的信息内容来达到限制用户的情况。 ②除了以上方法还有一种可以修改配置文件的内容。 可以进入配置文件 /etc/nologin.defs 进行修改,修改之后以后创建的用户都会按照文件配置内容进行执行 实例:进入配置文件,将密码有效期改为30天 新创建的一个用户,查看用户密码的有效期 3、命令历史限制 3.1 风险 当我们在终端使用history,会查看到以前在终端输入的命令都会被记录。就算终端进行重启,命令还是会被记录。 3.2 限制历史命令的个数 在配置文件/etc/profile (环境变量配置文件)中,有可以限制历史命令的个数。
实例:修改历史命令存储为10条 刷新配置文件,然后再进行查看历史命令,发现只显示10条。 3.3 清空历史命令 3.3.1 临时清空 临时清空只是清除当前终端内存中的数据,重启之后,系统会把磁盘中的历史命令读取到内存中,所以重启终端之后,历史命令还会存在。
3.3.2 永久清空 ①手动清空 历史命令会存储在当前用户的家目录下的 .bash_history 中, 当我们要清除所有历史命令的时候,需要将内存中的命令清空,还要将文件.bash_history 文件内容删除,如果我们只删除.bash_history 文件内容,但是只要我们重启,系统会将内存中的命令加载到文件中,所以还是会存在。 这里就运用到最终一致性概念。
②退出时自动清空 这种需要在内存命令没有写入到磁盘时可以清除,相当于清除内存中的命令,因为我们的机制是最终一致性,所以使用此命令需要将磁盘中的命令删除后加这个命令。 ③登录时自动清空 或者进入到 ~/.bash_profile 文件中加入删除命令的历史命令文件的命令。 3.4 登录登出读取配置的顺序 用户登录 -----> 加载~/.bash_profile ----> .bash_profile中的配置首先是使~/.bashrc生效 用户登出 -----> .bash_logout ,运行logout配置文件
4、终端自动注销 在 /etc/profile 环境配置变量里面,可以在末尾加入一条命令。限制终端在不操作的情况下限时自动退出终端。
二、切换用户-su 1、用户之间的切换 格式:su - 目标用户 切换到目标用户的家目录 格式:su 目标用户 切换到目标用户。当前目录不变 root切换到任意用户,不需要验证密码。 普通用户之间切换,都需要验证目标用户的密码。 2、限制用户使用su命令 su命令的安全隐患 将需要限制的用户添加到 wheel 组里面,加入进去后,该用户不能被除了root用户的其它用户切换。 因为wheel组里面有su命令模块,叫做PAM认证,只要开启这个认证,别的用户就无法使用su命令切换到该用户,wheel组内的成员可以相互切换。 pam认证配置文件 上述配置文件解释
用户切换验证 查看su命令切换的日志:路径:/var/log/secure 实例: 3、PAM安全认证 PAM :可插拔式认证模块 可插拔:可以理解为可配置、可定制的一个模块。 3.1 PAM工作原理
具体步骤:PAM认证首先要确定那一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security)进行安全认证。 用户访问服务器的时候linux系统安全,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不用的。 如果想查看某个程序是否支持PAM认证,可以用ls命令进程查看/etc/pam.d 下面是否有相应的配置文件 3.2 PAM配置文件介绍 PAM的配置文件中的每一行都是一个独立的认证过程,它们从上往下的顺序依次由PAM模块调用。 每一行可以区分为三个字段: 认证类型 、 控制类型 、 PAM模块及参数 第一列代表PAM认证模块类型 第二列代表PAM控制标记 第三列代表PAM模块 第四列代表PAM模块的参数 3.3 小结 PAM简单来说就是管理系统“默认”程序/服务的权限程序 三、提升权限机制-sudo 1、sudo命令的用途及用法 2、sudo参数命令 选项作用 -l 列出用户在主机上可用的和被禁止的命令,一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的。 -v 验证用户的时间戳,如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作,可以跟踪最新的时间戳 -u 指定以用户执行特定操作 -k 删除时间戳 实例:sudo -l :查看当前用户获得哪些sudo授权。 3、sudo命令授权 配置sudo命令授权的配置文件在: 以上两个都可进入授权配置文件,第一个配置文件的权限为440,保存退出时,需要:wq! 格式
用例:
操作实例: ①给用户xiaolan提权使用useradd和usermod命令 visudo或 /etc/sudoers 中提权命令如下: 操作如下: ②给用户 baijuyi 提权使用useradd命令和usermod命令,使用useradd命令时不需要验证 baijuyi 的用户密码。使用usermod需要验证密码。 visudo 或 /etc/sudoers 提权命令如下: 具体操作如下: ③用户可临时创建网卡 visudo 或 /etc/sudoers 配置如下: 具体操作如下: 4、sudo用户别名案例 用户别名的语法格式 别名解释用法实例 User_Alias 用户别名:包含用户、用户组(用户组用%引导),还可以包含其它已经使用的别名 User_Alias OPERATORS=zhangfei,guangyu Host_Alias 主机别名:主机名、IP、网络地址、其它主机名(使用!进行取反) Host_Alias MAILSVRS=centos7,localhost Comnd_Alias 命令路径:目录(此目录所有命令),其它事先定义过的命令别名 Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum 案例: ①用户zhangfei、guangyu可使用yum命令。 visudo 或 /etc/sudoers 命令中配置 具体操作 ②设置只有weiguo组和guangyu可以使用添加用户的命令,不能使用修改用户的命令。 visudo或 /etc/sudoers 中配置 具体操作 四、开关机安全控制 调整BIOS引导设置 GRUB限制 1、限制更改GRUB引导参数 通常情况下载系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
vim /etc/grub.d/00_header里面 2、终端登录安全控制 2.1 禁止普通用户登录 禁止普通用户登录,当服务器正在备份或调试等维护工作时,可能不希望有新的用户登录系统。这时候,只需要简单的建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制) 用途:建立在服务器维护期间临时使用。 2.2 指定终端id进行登录 安全终端配置:/etc/securetty 进入/etc/secure 配置文件,可以将tty4注释掉,那root用户将无法进行登录,在非远程登录的终端上,使用ait + ctrl +[fn] + f1-f6 进行切换界面。 五、网络端口扫描-nmap 1、nmap介绍 端口取值范围: 0-65535。0是一个预留的特殊端口。 扫描目标: 主机名,IP地址,网络地址等,多个目标以空格分隔。 常用选项 选项参数 -p 分别用来指定端口扫描 -n 禁止反向DNS解析(加快扫描速度) 常用的扫描类型 扫描类型作用 -sS 半开扫描: 值向目标发送SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接,如果没收到则认为目标端口未开放 -sT 连接扫描: 这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,如果失败则认为目标端口未开放 -sF TCP FIN 扫描: 开放的端口会忽略这种数据包,关闭的端口会回应RST数据白,许多防火墙只对SYN数据包进行简单过滤,而忽略了其它形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 -sU UDP扫描: 探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢 -sP ICMP扫描: 类似于ping检测,快速判断目标主机是否存活,不做其它扫描 -P0 跳过ping检测: 这种方式认为所有的目标主机时存活的,当不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。 2、 案例 ①nmap -sT (扫描常用的TCP) 现在开另一台系统,配置好ip为:20.0.0.51 ,DNS,关闭防火墙。 在用nmap去扫描查看 ②nmap -sU (扫描常用的UDP) ③nmap -sP (ICMP扫描) 设置禁ping 六、netstat命令 查看当前操作系统的网络连接状态、路由表、接口等信息,它是了解网络状态及排除网络故障的有效工具。 常用选项 选项作用 -n 以数字的形式显示相关的主机地址,端口等信息 -r 显示路由表信息 -a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) -l 显示处于监听(Listening)状态的网络连接及端口信息 -t 查看TCP相关信息 -u 查看UDP相关信息 -p 显示与网络连接相关的进程号、进程名称信息(需要root权限) 用法: ①通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息 ②配合管道符grep过滤出特定的记录
实例: 七、总结 1、账号管理 文件/目录锁定:chattr +i 、文件/目录解锁:chattr -i 查看文件锁定:lsattr 2、密码安全 3、历史命令限制 4、su切换用户登录 5、sudo提权(暂时用root用户的权限来执行操作) 6、PAM原理 7、终端登录 8、nmap端口扫描 ①扫描指定协议(TCP/UDP)端口的目标IP、主机名、网络号是否开启 ②扫描指定网段中哪些主机是否存活/开启的 9、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 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |