第十章 系统安全及应用【☆】

2024-04-30 07:36

本文主要是介绍第十章 系统安全及应用【☆】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

​​​​​一、账号安全管理

1.禁止用户登录

2.锁定并且禁用长期不使用的用户

3.删除无效用户 

4.禁止账号和密码的修改

5.密码安全

6.历史命令限制

7. 终端自动注销

二、用户切换与提权

1. su用户切换

限制普通用户使用su切换用户

2. 使用sudo机制提升权限【☆】

三、系统安全控制

1.开关机安全控制

2.终端安全控制

①限制root只在安全终端登录

​编辑

②禁止所有普通用户登录

③禁止单个普通用户登录

3.系统弱口令检测

1)网络端口扫描NMAP

如何查看某个进程是否已经开启?

如何通过端口号查看进程号?

2)密码工具破解密码

①john密码工具(官网www.openwall.com/john下载源码软件包)

​编辑

②hydra密码工具(可yum安装)

四、服务器初始化操作

1. 对服务器做过哪些初始化操作?

2. 对服务器初始化后做过哪些安全加固?

五、故障案例以及处理方法

1.CPU使用率一直处于高峰值,怎么排查?

2.硬盘读写慢,如何排查?

3.如何搭建堡垒机——jumpserver

4.15秒修复系统启动故障


​​​​​一、账号安全管理

1.禁止用户登录

usermod -s /sbin/nologin 用户名

2.锁定并且禁用长期不使用的用户

passwd -l 用户名    #锁定用户
usermod -L 用户名   #锁定用户
passwd -s 用户名    #查看锁定状态

3.删除无效用户 

userdel -r 用户名

4.禁止账号和密码的修改

chattr +i /etc/passwd /etc/shadow    #锁定文件
chattr -i /etc/passwd /etc/shadow    #解锁文件
lsattr 文件名                        #查看文件锁定状态

5.密码安全

chage -M 天数 用户名                    #针对已存在的用户设置密码有效期
chage -d 0 用户名                       #强制用户下一次登录修改密码
echo xxxxxx | passwd --stadin 用户名    #无交互修改密码
vim /etc/login.defs ---> 修改文件中PASS_MAX_DAYS 天数   #针对新建用户设置密码有效期

天数为99999表示永不过期,程序用户可以设为永不过期。

补充:结合pam模块做ssh安全加固,远程登录时输入3次密码错误则锁定用户600秒,可以防止暴力破解密码(root用户同样限制)。在服务端服务器操作:vim /etc/pam.d/sshd

第二行添加:

auth  required  pam_tally2.so  deny=3  unlock_time=600  even_deny_root  root_unlock_time=600

补充:设置密码最小长度为8位,密码必须包含大小写字符与数字的策略

vim /etc/pam.d/system-auth

6.历史命令限制

history                  #查看历史命令
history -c               #临时清空当前环境的历史命令

①Linux系统默认1000条历史命令,如何修改历史命令数量?

第一步:vim /etc/profile --->改写原来HISTSIZE的值,或写入export HISTSIZE=n  #export表示全局变量,在所有shell环境中都有效

第二步:source /etc/profile 等于. /etc/profile       #加载,立即生效

echo $HISTSIZE                                                      #可查看历史命令数量

②如何设置所有用户登录时清空所有历史命令?

vim /etc/profile ---> 写入echo >  ~/.bash.history           #echo省略效果一样          

或vim ~/.bashrc  ---> 写入echo >  ~/.bash_history

7. 终端自动注销

第一步:vim /etc/profile ---> 写入export TMOUT=n   #表示n秒钟没有操作,窗口自动退出。

第二步:​​​​​source /etc/profile 等于./etc/profile                #立即生效

二、用户切换与提权

1. su用户切换

限制普通用户使用su切换用户

1.将允许使用su命令的用户加入wheel组:gpasswd wheel -a 用户名,表示为把信任的用户加入wheel组(wheel组是系统默认存在的一个组);

2.修改su的PAM认证配置文件,vim /etc/pam.d/su --->第二行sufficient pam_rootok.so表示root使用su切换任何用户无密码认证,一般默认都是开启的;第六行pam_wheel认证模块取消注释 auth required pam_wheel.so use_uid 表示只有加入wheel组中其他用户才能执行su命令(#auto表示不启用,auto表示启用)

PAM认证原理(理解)

ls /etc/pam.d | grep <程序名>   

#查看某个程序是否支持PAM模块认证,配置文件为 /etc/pam.d/<程序名>

第一列表示pam认证模块的类型

  • auth为认证模块、account为账户模块,passwd为密码模块,session为会话模块;

第二列表示pam控制标记

  • required表示该模块必须认证通过整个认证才算成功,但这个模块认证失败不会立刻反馈结果,等所有模块都认证完才会提示。
  • requisite表示该模块必须认证通过整个认证才算成功,认证失败会立刻反馈失败结果。
  • sufficient表示该模块认证成功,且之前的required模块也认证成功则不需要继续验证其他模块。如果认证失败,则继续验证下面的模块,只要后面的模块认证通过也能通过。
  • include表示引用其他模块的配置

第三列表示pam模块

第四列表示pam模块参数

pam实例
用户1用户2用户3用户4
authrequired模块一passfailpasspass
authsufficient模块二passpassfailpass
authrequired模块三passpasspassfail
结果passfailpasspass

2. 使用sudo机制提升权限【☆】

用途

  • sudo命令是给普通用户做提权的

添加可以授权给普通用户的命令

  • visudo添加命令,root用户可以直接wq保存退出;
  • vim /etc/sudoers添加命令,效果与visudo一样。但此文件root没有写的权限,需要wq!强制保存)

用法

  • sudo 授权命令

vim /etc/sudoers配置格式

用户名 主机名=程序列表 或 组名 主机名=程序列表

zhangsan ALL=/sbin/*,/bin/*, !/sbin/reboot 

等于:zhangsan ALL=(root) /sbin/*,/bin/*, !/sbin/reboot 

都表示为zhangsan除了reboot命令,sbin和bin目录的所有命令都能以root用户身份执行。

②%XX组 ALL=/sbin/*

表示XX组中的用户能够执行sbin目录下的所有命令

③别名设置

用户别名:User_Alias 自定义=用户1,用户2...

主机别名:Host_Alias 自定义=主机名1,主机名2...

命令别名:Cmnd _Alias 自定义=命令路径1,命令路径2...

用户别名 主机别名=命令别名

三、系统安全控制

1.开关机安全控制

        还记得root密码忘记找回密码的方法中有一种在开机grub加载时按e键进入修改,意味着谁都可以更改,root密码,风险很大。想要避免可以修改gurb配置,添加密码验证。

第一步:设置进入gurb引导设置需要的密码,并生成密钥

grub-mkpasswd-pbkdf2

第二步:在/etc/grub.d/00_header中添加配置

vim /etc/gurb.d/00_header 
在最后添加以下内容:cat << EOFset superusers="admin"passwd_pbkdf2 admin [密钥]EOF

第三步:备份/boot/grub2/grub.cfg后重新生成一个配置文件

/boot/grub2/grub.cfg                      #备份
grub2-mkconfig -o /boot/grub2/grub.cfg    #重新生成配置文件

2.终端安全控制

①限制root只在安全终端登录
vim /etc/securetty           #默认开启,加#为关闭
②禁止所有普通用户登录
touch /etc/nologin         #创建后所有普通用户都无法登陆

重启或者删掉/etc/nologin文件即可取消禁止

③禁止单个普通用户登录

passwd -l 指定用户

usermod -L 指定用户

usermod -s /sbin/nologin 指定用户

pkill -9 -u 指定用户

3.系统弱口令检测

1)网络端口扫描NMAP

        nmap命令可以扫描哪些主机开启了什么端口,可以用来进行加固或攻击,使用yum本地源或在线源都可以直接安装。

nmap选项格式说明
-pnmap -p 80 192.168.170.0/24检测目标网段有哪些主机使用HTTP80端口并显示端口状态
nmap -p 1-80
nmap -p 80,3389,22,21
-sPnmap -n -sP 192.168.170.0/24快速扫描目标网段有哪些主机开启哪些端口,不做DNS反向查询

-sT

nmap -sT 127.0.0.1查看指定IP开放的TCP端口
-sUnmap -sU 127.0.0.1查看指定IP开放的UDP端口
-sFnmap -sF 127.0.0.1通过FIN探测扫描
-sSnmap -sS 127.0.0.1通过SYN半连接扫描
netstat

-natp

数字形式查看正在运行的使用TCP协议的网络状态信息,包含相关联的进程号、进程名称
-naup以数字形式查看正在运行的UDP协议的网络状态信息,包含相关联的进程号、进程名称
-r显示路由表信息
-l显示处于监听状态的网络连接及端口信息

如何查看某个进程是否已经开启?

①systemctl通过进程名查看进程状态和进程号

systemctl status httpd                                 

②ps通过进程名或端口号过滤查看进程状态信息

ps -elf | grep httpd     

ps aux | grep httpd  :80   

③netstat通过进程名或端口号过滤查看进程状态信息

netstat -lntup | grep httpd 或 :80 

④ss通过进程名或端口号过滤查看进程状态信息,用法和netstat一样,但是更详细更全面

ss -lntup | grep httpd 或 :80 

lsof -i :80  

如何通过端口号查看进程号?

netstat -lntup grep :端口号

ss -lntup | grep :端口号

lsof -i :80 #查看端口进程状态

2)密码工具破解密码
①john密码工具(官网www.openwall.com/john下载源码软件包)

第一步:上传软件包到/opt目录下并解压,切换到/opt/john-1.8.0/src/目录,在src目录下,make clean进行编译安装,我当前的系统类型为linux-x86-64,然后run目录自动生成名为john的二进制文件。make clean安装后会自动在run目录下生成程序文件和密码文件,密码文件可自己补充。

make clean linux-x86-64 

第二步:进入/opt/john-1.8.0/run目录下,复制当前系统中/etc/shadow文件到run目录下,并保存为shadow。执行JR破解并查看结果(破解密码是根据字典内容进行破解的,字典内没有的字段,破解不出来)

cp /etc/shadow /opt/john-1.8.0/run/shadow     #复制密码文件
./john shadow --wordlist=./password.list      #执行john,根据密码词典破解密码
./john shadow --show shadow                   #查看破解后的shadow密码文件(包含密码)

补充:JR破解到的密码信息保存在/opt/john-1.8.0/run/john.pot文件中

②hydra密码工具(可yum安装)

第一步:使用在线yum源安装epel扩展源、安装hydra程序

yum install -y epel-release        #安装扩展源
yum install -y hydra               #安装hydra  

第二步:准备用户文件和密码文件,准备爆破

第三步:爆破

四、服务器初始化操作

当拿到一台新的服务器,需要对度武器做初始化才能用于生产。

1. 对服务器做过哪些初始化操作?

①重装操作系统(操作系统最小化安装的好处是体积小,软件少,以为着可攻击的面小。)

②设置网络:比如网卡IP、网关、路由、DNS服务器地址、物理机会做双网卡绑定(物理机会用两张网卡绑定,或者做组备,mode做负载均衡,需要有交换机做端口聚合来支持。加载bonding模块,双网卡绑定-bond)

③设置主机名、语言、字符集:hostnamectl set-hostname主机名

④ntp时间同步   ntpd  chronyd  ntpdare

⑤防火墙selinux      设置iptables或firewalld防火墙规则,关闭selinux功能     setenforce 0  vim/etc/selinux/config

⑥设置yum仓库镜像源   /etc/yum.repos.d/

⑦磁盘使用lvm或raid做磁盘管理

⑧精简开机启动服务:systemctl enable/disable crond rsrslog network sshd

⑨升级内核到新版本:集群升级内核yum install -y kernel-lt kernel-lt-devel

2. 对服务器初始化后做过哪些安全加固?

①禁止root用户远程登录    /etc/ssh/ssh_config  --->PermitRootLogin no

②修改连接公网的ssh端口号      /etc/ssh/ssh_config  --->port

③限制普通用户限制su切换用户

④普通用户使用t通过sudo授权管理   visudo   /etc/sudoers

⑤锁定关键的系统文件 chattr +i,比如 /etc/shadow

⑥设置历史命令保存条数    /etc/profile    --->  HISTSIZE

⑦设置账户超时时间      /etc/profile    --->   TMOUT

⑧限制用户登录次数防止爆破 /etc/pam.d/sshd

⑨设置用户密码强度  /etc/pam.d/system-auth

⑩接入堡垒机或跳板机(一般服务器置于内网环境中,通过VPN做网络穿透不安全,可以搭建堡垒机一头接外网一头接内网,堡垒机多个安全审查功能 jumpserver

五、故障案例以及处理方法

1.CPU使用率一直处于高峰值,怎么排查?

①top命令或者free -m先分析CPU内存指标,第三行能看到CPU的总的使用率(或者还可以用htop查看,更直观)②确定占用高的进程ID以及执行的命令 ③perf top -p PID,分析进程里是哪些系统调用、调用共享库、哪些模块造成该进程CPU占用过高(top -H PID 查看线程CPU使用情况)④第一种情况:访问量少但占用CPU多,可能是存在一些无限循环bug、Java不停的GC,找开发解决;业务量大导致的,解决办法即增加硬件配置或组件服务器集群。

2.硬盘读写慢,如何排查?

第一步:top命令查看硬盘是否繁忙,其中第三行“wa”表示iowait,值比较大表示硬盘繁忙,硬盘正有大量读写操作(0.1、0.2、0.3这种都还在正常范围,大于1就需要关注了)

第二步:iotop命令查看是哪些占用带宽高的进程,进一步可通过lsof命令查看占用带宽高的几个进程在进行什么操作会产生这么高的磁盘IO操作

第三步:lsof -p PID指定查看该进程打开了什么文件,显示文件描述符,从而排查出该进程到底哪个文件持续在读写,大量占用磁盘的写操作。

第四步:通过badblocks命令检查硬盘是否存在坏道,如果有坏道可以尝试修复或者更换硬盘

3.如何搭建堡垒机——jumpserver

        堡垒机是一个资源集中管理的平台,相比跳板机它更加安全,且可以快速定位责任人。

第一步:官网复制安装脚本在系统中安装jumpserver

第二步:访问官网,默认账户admin,基础设置:设置密码,添加资产、添加用户、全部资产授权给admin、资产授权给其他用户、用户登录设置、命令管理。

第三步:工作台可进行文件管理、执行历史等操作,需要设置一下web终端(相当于本地终端直接登录服务器)。如果只加了website但没有在系统中维护远程应用的话,在这一步内部系统还是无法操作的。

第四步:远程应用建议使用Windowsserver2016或2019操作系统。远程应用创建应用发布机,IP选择一个Windows服务器的IP,添加账号,设置创建账号数量池,Core服务地址可以填写局域网IP或公网IP。创建成功后点击发布机部署,初始化部署。回到上一步中的内部系统,就可以访问内网地址了。

4.15秒修复系统启动故障

        根据开机报错提示,找到挂载失败的分区。vim /etc/fstab文件,不让系统在开机时自动挂载出错的分区。如果解决不了,对于一些简单的逻辑损坏那就使用修复命令,ext4文件系统可以通过fsck.ext4 -a /dev/sda2,xfs文件系统可以通过xfs_repair -v -L /dev/sda1进行修复。

这篇关于第十章 系统安全及应用【☆】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948251

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景