linux系统安全

1. 账号安全控制

1.1 用户账号

计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。

1.2 系统账号和用户账号

除了超级用户 root 之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。

为了确保系统安全,这些用户账号的登录 Shell 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动

1.3 锁定账号和配置文件

使用 chattr 命令,分别结合"+i""-i"选项来锁定、解锁文件,使用 lsattr 命令可以查看文件锁定情况。 在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登录Shell、宿主目录等属性信息。

chattr用法:

Ø chattr [选项] [符号] [属性] 文件名

Ø -R:递归处理目录及其所有子文件。

Ø -V:显示详细信息,解释执行了哪些操作。

Ø -f:抑制错误信息,只显示成功的更改。

Ø +:添加属性。

Ø -:移除属性。

Ø =:设置属性为指定的值。

Ø a:追加模式(append only),只能向文件末尾追加数据,不能修改或删除已有内容。

Ø i:不可修改(immutable),文件不能被修改、删除、重命名或链接。

Ø d:禁止备份(no dump),在执行dump备份程序时会被忽略。

Ø s:安全删除(secure deletion),文件删除后数据会被覆盖,无法恢复。

Ø u:不可恢复删除(undeletable),删除文件时保存其内容以便恢复。

Ø c:压缩(compress),文件会在磁盘上被压缩保存。

Ø A:不更新atime(no atime updates),访问文件时不更新其访问时间。

1.4 密码有效期设置(chage)

1.4.1 默认情况下,Linux用户的密码永不过期。 当需要对新用户进行密码限制时,可以通过编辑 /etc/login.defs 文件,设置当前密码的有效期限,具 体变量如下所示:

ØPASS_MAX_DAYS:密码可以使用的最多天数

ØPASS_MIN_DAYS:密码更改之间允许的最小天数

ØPASS_MIN_LEN:可接受的最小密码长度

ØPASS_WARN_AGE:密码过期前发出警告的天数

1.4.2 chage命令

chage命令用来更改linux用户密码到期信息,包括密码 修改间隔最短、最长日期、密码失效时间等等。

1.5 命令历史

Linux 使用 history 命令记录命令历史记录并将其存储在文件**(~/.bash_history )**中。可以使用不同的方法配置和操作历史记录。

清空历史命令:

  • history -c
  • 修改编辑 .bash_history 文件
  • 为了永久禁用历史记录功能,可以在 .bashrc或 .bash_profile 文件中添加以下行:export HISTSIZE=0 # 不保存任何历史记录,export HISTFILESIZE=0 # 不保存任何历史记录
  • unset HISTFILE (使用 unset 命令来删除 HISTFILE 环境变量。这将阻止 Bash 写入 .bash_history文件)

通过修改**/etc/profile 文件中的 HISTSIZE 变量值**,可 以影响系统中的所有用户。

1.6 注销

闲置超时由变量 TMOUT 来控制,默认单位为秒(s)

当正在执行程序代码编译、修改系统配置等耗时较长的 操作时,应避免设置 TMOUT 变量。 必要时可以执行"unset TMOUT"命令取消 TMOUT变量设置

1.7 用户切换和提权(su sudo)

用户切换:使用 su 命令,可以切换为指定的另一个用户,从而具 有该用户的所有权限。

限制切换:

  • 修改sudoers文件,使用visudo命令来编辑sudoers文件,在打开的sudoers文件中,可以添加或修改规则来限制特定的用户可以使用su命令。例如mt ALL=(ALL) NOPASSWD: ALL

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

提权sudo命令

sudo 机制的配置文件为/etc/sudoers,文件的默认权 限为 440,需使用专门的 visudo工具进行编辑。

配置文件/etc/sudoers 中,授权记录的基本配置格式 ,user MACHINE=COMMANDS 授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令

用户、主机、命令部分都可以定义为别名(必须为大 写),分别通过关键字 User_Alias、Host_Alias、 Cmnd_Alias 来进行设置。
若要启用 sudo 日志记录以备管理员查看,应在/etc/sudoers 文件中增加"Defaults logfile"设置。pvisudo //查找 Defaults,添加内容。
开启sudo日志

  • 创建sudo.log文件: touch /var/log/sudo.log
  • 修改文件权限: chmod root:root /var/log/sudo.log
  • 修改rsyslog配置文件:vim /etc/rsyslog.conf,添加以下内容:local2.debug /var/log/sudo.log //※空白处用"Tab"键补齐,不可以用空格
  • 重启rsyslog服务:systemctl restart rsyslog
  • 修改sudo配置文件:visudo.添加以下内容:Defaults logfile=/var/log/sudo.log,Defaults loglinelen=0,Defaults !syslog

2. 系统引导和登录控制

2.1 调整BIOS引导设置
  • 将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
  • 禁止从其他设备(如光盘、U 盘、网络等)引导系统,对应的项设为"Disabled"
  • 将 BIOS 的安全级别改为"setup",并设置好管理密码,以防止未授权的修改。
2.2 限制更改BIOS引导
  • 在Ubuntu及其衍生版本中,使用以下命令来安装:apt install grub2-common
  • 使用grub-mkpasswd-pbkdf2命令创建GRUB 菜单密码
  • 修改grub的文件vim /etc/grub.d/00_header(添加生成的密码)
  • 使用 grub-mkconfig 命令生成新的 grub.cfg 配置文件。
  • 通过上述配置,重新开机进入 GRUB 菜单时,必须根据提示输入正确的 GRUB 密码
2.3 禁止root用户登录
  • 编辑 PAM 配置文件。这个文件用于控制对系统的访问权限。 sudo vi /etc/security/access.conf
  • 如果想禁止 root 用户从 tty5 和 tty6 登录,可以添加如下规则:-:root:LOCAL,-:root:tty5,-:root:tty6,-:root:sshd(禁止sshd访问)u 这里的 -: 表示拒绝访问,root 是用户名,LOCAL 表示本地登录,tty5 和 tty6 是特定的终端。
  • 禁止普通用户登录,建立/etc/nologin 文件即可。login程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)

3. 弱口令,端口扫描

3.1 密码破解工具john

John the Ripper 是一款开源的密码破解工具,能够在已知密文的情况下快速分析出明文的密码字串,支持DES、MD5 等多种加密算法,而且允许使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过使用 John the Ripper,可以检测 Linux/UNIX 系统用户账号的密码强度

步骤:

  • 安装john

  • cp /etc/shadow /root/shadow.txt //准备待破解的密码文件

  • john /root/shadow.txt //执行暴力破解

  • john --show /root/shadow.txt / #破解出的密码信息自动保存到 john.pot 文件中,可以结合"--show"选项进行查看。

  • John the Ripper 默认提供的字典文件为 /usr/share/john/password.lst

3.2 端口扫描(lsof,nmap)

一个端口就是一个潜在的通信通道,也就是一个入侵通 道。对目标计算机进行端口扫描,能得到许多有用的信息。

nmap工具:
NMAP 是一个强大的端口扫描类安全评测工具。NMAP被设计为检测众多主机数量的巨大网络,支持ping 扫描、多端口检测、OS 识别等多种技术。

语法和类型:

语法格式:nmap [扫描类型] [选项] <扫描目标...>

其中,扫描目标可以是主机名、IP 地址或网络地址等,多个目标以空格分隔;p常用的选项有"-p""-n",分别用来指定扫描的端口、禁用反向 DNS 解析(以加快扫描速度);扫描类型决定着检测的方式,也直接影响扫描的结果。

  • -sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
  • -sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
  • -sF,TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包。许多防火墙只对SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间
  • 接检测防火墙的健壮性
  • -sU,UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢。
  • -sP,ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
  • -P0,跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。

步骤:

  • 下载nmap,apt install nmap
  • 使用语法满足需求
相关推荐
安全系统学习14 分钟前
【网络安全】Mysql注入中锁机制
安全·web安全·网络安全·渗透测试·xss
物联网老王44 分钟前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
一位摩羯座DBA3 小时前
Redhat&Centos挂载镜像
linux·运维·centos
学习3人组3 小时前
CentOS配置网络
linux·网络·centos
weixin_307779133 小时前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
漫步企鹅4 小时前
【蓝牙】Linux Qt4查看已经配对的蓝牙信息
linux·qt·蓝牙·配对
cui_win4 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
梦在深巷、4 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
深圳安锐科技有限公司4 小时前
深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效
运维·安全·自动化·自动化监测·人工监测·桥梁监测·索力监测
潘锦4 小时前
海量「免费」的 OPENAI KEY,你敢用吗?
安全·openai