当前位置: 首页 > news >正文

系统安全及应用

一回顾

建立用户:useradd  mg

账户锁定:   passwd  -l   用户名           usermod  -l   用户名

账户解锁:passwd  -u    用户名        usermod  -u   用户名

删除用户:userdel 用户

查看:cat  /etc/passwd

切换用户:su

非登录用户设置为不能登录

usermod   -s   nologin  用户名

chatter  锁定重要账户文件

-i

-a


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

 

清除历史记录
查看历史输入指令       history history记录存放过文件  ~/.bash_history临时清空               history   -c永久清空             echo " ">~/.bash_history退出后清除            vim .bash_logout    开机后清除            vim .bashrc    

使用su   切换用户

①即 switch user,切换用户身份,并且以指定用户的身份执行命令

su 目标用户:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - 目标用户:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换


②密码验证


root ->任意用户,不验证密码
普通用户->其他用户,验证目标用户密码
su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

③限制使用su命令的用户
将允许使用su命令的用户加入wheel组
 

Linux中的PAM安全认证

1、su命令的安全隐患
  • 默认情况下,任何用户都允许使用 su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险

  • 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2 PAM可插拔式认证模块
  • 是一种高效而且灵活的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式
3 PAM的文件
  • /usr/lib64/security :存放功能模块
  • /etc/pam.d/ :配置文件
  • /etc/security :复杂的配置文件
3 PAM认证原理


当用户来访问某一程序的时候,如果这个程序启用了pam模块,会先去读取配置文件,然后按照配置文件调用模块,进行操作。

PAM认证一般遵循的顺序:Service(服务)–>PAM(配置文件)–>pam_*.so
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块是不同


4 PAM认证的构成


查看某个程序是否支持PAM认证,可以用ls命令
格式:ls   /etc/pam.d | grep su
查看su的PAM配置文件:cat   /etc/pam.d/su


二 PAM安全认证流程


控制类型用于PAM验证类型的返回结果

required:一票否决,如果失败,最后一定会失败,但是会继续验证
requisite:一票否决,如果失败,会立即结束验证,反馈失败
sufficient:验证成功则立即返回,不再继续,否则忽略结果并继续
optional:不用于验证,只显示信息

6  limit

可打开的文件数量,可运行的进程数量,可用内存空间

7  ulimit

(修改限制的实现方式)
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ab -c1025 -n 2000 http://192.168.10.11/    #使用压力测试工具进行测试  打开的文件数vim /etc/security/limits.conf   #永久修改不用重启(软硬一起设置可以直接使用-)

1 sudo 命令的特性


①sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
②sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
③sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
④sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440


2、配置sudo授权


visudo或vi /etc/sudoers #此文件的默认权限为440,保存退出时必须执行“wq!”,强制保存退出

3 sudo指令格式

用户

主机名

命令程序列表

可使用通配符“ * ”表示所有,取反符号“!”表示排除

面试题  Jerry localhost=/sbin/*,!/sbin/poweroff

表示jerry用户操作localhost主机可使用sbin目录下的除poweroff以外的所有命令

要点:Jerry仍可使用init、shutdown等命令执行关机操作,因此限制命令需做到全面无漏,否则限制影响十分有限。


设置别名

格式:大写,数字可以使用但是不能使用

使用关键字User_Alias(用户)、Runas_Alias(代表用户)、Host_Alias(登录主机)、Cmds_Alias(命令)来进行设置别名

User_Alias USERS=Tom,Jerry,MikeHost_Alias HOSTS=localhost,bogonCmnd_Alias CMDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdelUSERS HOST=CMDSroot  ALL=(ALL)  ALL
用户   主机名ip=    命令
密码验证


①正常情况下,第一次使用sudo命令需输入密码验证,有效期为五分钟,过期后使用sudo需再次输入密码验证。

②可以设置特定用户无需密码验证

Mike ALL=(ROOT)NOPASSWD:/bin/kill,/usr/bin/killall

③也可设置组用户无需密码验证

%wheel ALL=NOPASSWD:ALL

④以及所有用户无需密码验证

USERS HOSTS=NOPASSWD:CMDS

6、查看sudo操作记录:需启用Defaults logfile配置

/var/log/sudo    #默认日志文件visudo            #进入sudo配置文件Defaults logfile="/var/log/sudo"     #启动Defaults logfiletail /var/log/sudo                    #查看sudo末尾10行记录

三  开/关机安全控制


① 调整BIOS引导设置


将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码


② GRUB限制


通常情况下,在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,也可进入急救模式修改用户密码,这对服务器是一个极大的安全威胁。为此,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。


③在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下

使用grub2-mkpasswd-pbkdf2生成密钥

修改/etc/grub.d/00_header文件,添加密码记录

生成新的grub.cfg配置文件

grub2-mkpasswd-pbkdf2  #根据提示设置GRUB菜单的密码PBKDF2 hash of your password is grub.pbkdf2……        # 省略部分内容为加密生成的密码字符串cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak      # 制作备份cp /etc/grub.d/00_header /etc/grub.d/00_header.bak    # 制作备份vim /etc/grub.d/00_headercat << EOFset superusers="root"                   #设置登录用户为 rootpassword_pbkdf2 root grub.pbkdf2……      # 设置密码,省略部分内容为经过加密生成的密码字符串EOFgrub2-mkconfig -o /boot/grub2/grub.cfg        # 生成新的grub.cfg配置文件完成配置修改工作,重启后进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。grub2-setpassword            #直接设置密码

1  限制root只在安全终端登录:


①安全终端配置      /etc/securetty         vi /etc/securetty

②将tty5,tty6前加 “#” 将其注释,表示禁止root用户从终端tty5,tty6登录

 2  禁止普通用户登录

①touch /etc/nologin

②删除nologin文件或重启后即恢复正常(rm -rf /etc/nologin)

五 弱口令检测


1 暴力破解工具-JR
John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过对shadow文件的口令分析,可以检测密码强度。
官方网站:http://www.openwall.com/john/
2 安装JR工具
安装方法:make clean 系统类型
主程序文件为john
3 检测弱口令账号
获得Linux/Unix服务器的shadow文件
执行john程序,将shadow文件作为参数
4 密码文件的暴力破解
准备好密码子弹文件,默认为password.lst
执行john程序,结合–wordlist=字典文件
5 模拟暴破步骤

cd /opt
tar zxf john-1.8.0.tar.gz    #解压工具包yum install -y gcc gcc-c++ make    #安装软件编译工具cd /opt/john-1.8.0/src             #切换到src子目录make clean linux-x86-64            #进行编译安装cp /etc/shadow /opt/shadow.txt     #准备待暴破的密码文件cd /opt/john-1.8.0/run
./john /opt/shadow.txt              #执行暴力破解./john --show /opt/shadow.txt       #查看已破解出的账户列表> john.pot    #使用密码字典文件,清空已破解出的账户列表以便重新分析./john --wordlist=./password.list /opt/shadow.txt #使用指定的字典文件进行破解
网络扫描工具-NMAP
  • NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术。
安装NMAP软件包
rpm -qa | grep nmap   #检查是否已安装yum install -y namp   #若未安装,进行yum安装

相关文章:

  • 【Maven】下载及配置
  • Vagrant使用教程
  • 机器学习--ROC AUC
  • Axure骚操作:【制作可暂停与不可暂停进度加载条】
  • git 常用命令 提交commit
  • Python 工具 | pip 基本命令
  • leetcode算法题之递归--综合练习(二)
  • Go中interface != nil不一定不是nil
  • 【MySQL】MySQL 8+版本使用窗口函数可以减少一次连表操作(额外Avg函数和Using函数使用,Using关键字参考里自行了解)
  • ChatGPT在金融财务领域的10种应用方法
  • 柯桥学韩语【韩语网络用语】听说最近的年轻人都重视슬세권,역세권....吗?
  • vite4项目中,vant兼容750适配
  • C++中几个常用的类型选择模板函数
  • 【Java】java -jar 读取jar包之外的yml
  • 28 C++ 对象移动,移动构造函数,移动赋值运算符
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • CSS 提示工具(Tooltip)
  • CSS盒模型深入
  • ES6--对象的扩展
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Mybatis初体验
  • node.js
  • PHP 7 修改了什么呢 -- 2
  • Python_网络编程
  • VuePress 静态网站生成
  • 闭包,sync使用细节
  • 大快搜索数据爬虫技术实例安装教学篇
  • 飞驰在Mesos的涡轮引擎上
  • 配置 PM2 实现代码自动发布
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何用vue打造一个移动端音乐播放器
  • 进程与线程(三)——进程/线程间通信
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (2)nginx 安装、启停
  • (ibm)Java 语言的 XPath API
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (七)Java对象在Hibernate持久化层的状态
  • (一)Linux+Windows下安装ffmpeg
  • .gitignore
  • .NET gRPC 和RESTful简单对比
  • .NET是什么
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android Pro] Notification的使用
  • [Android]创建TabBar
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [BZOJ2850]巧克力王国
  • [C/C++] -- 二叉树
  • [C++]类和对象(中)
  • [CISCN 2023 初赛]go_session
  • [Django ]Django 的数据库操作
  • [HDU5685]Problem A
  • [IDF]聪明的小羊