【Linux基线检查】

2023-11-08


前言

为保障服务器的安全性,通常需要对服务器做一些安全配置,现介绍一下Linux部分的安全配置,以下命令适用于Centos。
在这里插入图片描述


一、账户密码安全

要求 操作步骤
不应存在除root之外UID为0的用户 (1)输入命令awk -F: ‘($3 == 0) {print}’ /etc/passwd 确保只有root用户UID为0(2)如果有则运行sudo userdel –r username删除
修改默认账户的默认密码,不能存在空密码用户 (1) 修改密码:sudo passwd username(2)检查密码字段是否为空:sudo awk -F: ‘($2 == “”) {print}’ /etc/shadow
应及时删除或停用多余的、过期的账户,避免共享账户的存在,将无用账户删除 (1)查看可登录账户:sudo cat /etc/passwd 、 awk -F: ‘KaTeX parse error: Undefined control sequence: \/ at position 6: 7 ~ /\̲/̲bin\/(bash|sh|z…/ {print $1}’(2) 禁用账户:sudo usermod -L username(3) 删除账户:sudo userdel –r username
密码的生命周期最大为 90 天,密码可以被立即修改,密码的最小长度为 8 位,密码到期的提醒,一般建议 7 天 (1)查看并修改 login.defs 文件:vim /etc/login.defs(2)检查并修改如下内容:PASS_MAX_DAYS 90 #一个密码可使用的最大天数、PASS_MIN_DAYS 0 #两次密码修改之间最小的间隔天数、PASS_MIN_LEN 8 #密码最小长度、PASS_WARN_AGE 7 #密码过期前给出警告的天数
使用复杂的密码策略,应包含大小写字母,数字和特殊字符(如!@#¥&*),避免使用连续字符或重复字符,密码长度应不小于8个字符。 (1) 检查/etc/pam.d/password-auth和/etc/pam.d/system-auth,确认已包含支持pam_pwquality.so模块(2)编辑/etc/security/pwquality.conf文件,包含如下配置:retry=3 //最多允许3次重试输入密码、minlen=8 //密码最小长度为8个字符、difok=3 //密码中至少有3个字符不能与前面密码中的字符相同、ucredit=-1 //至少包含一个大写字母、lcredit=-1 //至少包含一个小写字母、dcredit=-1 //至少包含一个数字、ocredit=-1 //至少包含一个特殊字符、maxrepeat=0 //不允许字符重复、maxsequence=0 //不允许字符连续序列

二、文件和目录权限

要求 操作步骤
对于系统重要文件,为每个用户和用户组分配适当的权限,并避免过度授权。 (1)查看关键目录的用户对应权限参考命令:ls -l /etc/passwd /etc/shadow /etc/group /etc/hosts(2)参考配置操作:通过chmod命令对目录的权限进行实际设置。1、/etc/passwd /etc/group所有用户都可读,root用户可写 、配置命令:chmod 644 /etc/passwd /etc/group、2、/etc/shadow /etc/hosts只有root可读 、配置命令:chmod 600 /etc/shadow /etc/hosts、3、个别特殊环境,对文件进行锁定、chattr +i /etc/passwd、chattr +i /etc/shadow
Web等应用应设置站点文件访问权限,避免目录遍历。 管理员根据系统配置
站点配置文件仅限管理员查阅、修改。 管理员根据系统配置

三、访问控制

要求 操作步骤
确定适当的umask值,一般而言,推荐的默认值为022,它会为新创建的文件设置644权限,为新创建的目录设置755权限。 (1)编辑~/.bashrc(仅适用于当前用户)或/etc/profile(适用于系统中的所有用户)。(2)在配置文件中添加或修改umask设置,如果没有,则添加以下行:umask 022(将022替换为您希望使用的umask值。)(3)重新加载配置文件,使更改生效:source ~/.bashrc或者source /etc/profile
禁用或限制远程登录访问权限,仅允许授权用户使用。实施虚拟专用网络 (VPN) 或其他安全通道来保护远程访问连接。 (1)编辑/etc/ssh/ssh_config或者/etc/ssh/sshd_confi文件(ssh_config是客户端配置文件,sshd_config是服务器配置文件),增加如下配置内容(注释内容仅做参数解释,不需在配置文件体现):PermitRootLogin no //禁用root用户的远程登录、AllowUsers user1 user2 //允许登录的用户LogLevel INFO //记录登入登出日志、Protocol 2 //启用SSH v2、MaxAuthTries 5 //密码尝试失败最大次数为5、PermitEmptyPasswords no //禁用SSH空密码用户登录、ClientAliveInterval 1800 //30分钟空闲会话退出、ClientAliveCountMax 0 //空闲会话结束前不发送确认(2)重新启动SSH服务器,以使更改生效:sudo service ssh restart 或者sudo systemctl restart sshd
如果存在文件共享,应禁止匿名访问共享。 (1)对于Samba共享:编辑/etc/samba/smb.conf文件。对于NFS共享:编辑/etc/exports文件。(2)找到共享配置部分,共享配置通常以方括号[sharename]开始,找到或添加以下行:guest ok = no
查找未授权的SUID/SGID文件,调整非重要文件权限 命令:find / -type f –perm /6000 2>/dev/null、若存在非重要文件,可使用:chmod 644 “文件名” 命令、修改文件的权限
开启系统防火墙,并设置服务开启自启动 (1)检查防火墙状态:sudo firewall-cmd –state(2)如果防火墙当前未运行,启动防火墙:sudo systemctl start firewalld(3)设置防火墙开机启动:sudo systemctl enable firewalld

四、安全审计和日志记录

要求 操作步骤
启用日志安全审计功能,监控并记录关键事件和活动,日志至少保存180天。 (1)Centos检查是否开启系统日志:ps -aux|grep syslog 、若果没有开启,则安装并运行服务:sudo yum install rsyslog、sudo systemctl start rsyslog(2)检查syslog服务是否在启动服务器的时候开启。systemctl is-enabled rsyslog:设置开机自启:systemctl enable rsyslog(3)启动 auditd 服务: systemctl start auditd
确保日志文件的保留和定期备份,以便后续调查和审计。 管理员配置

五、开放端口和服务限制

应严格限制开放的端口及服务,仅开放必要的端口。
包括但不限于以下风险端口,不应对外开放。内部远程使用ssh(22).

风险端口清单 协议
20/21 ftp
22 ssh
23 telnet
25 smtp
53 dns
111 rpc
1433 sqlserver
3306 mysql
161/162 snmp
2049 网络文件系统(nfs)

操作步骤:

(1)查看当前系统上开放的端口和运行的服务:
sudo ss –tunlp
禁用不必要的服务:
sudo systemctl disable “服务名称”
(2)配置防火墙规则,允许必要的端口和服务,例如:
开放服务:
sudo firewall-cmd --zone=public --add-service=服务名 –permanent
关闭服务:
sudo firewall-cmd --zone=public --remove-service=服务名 –permanent
开放端口:
sudo firewall-cmd --zone=public --add-port=<端口号>/<协议类型> --permanent
关闭端口:
sudo firewall-cmd --zone=public --remove-port=<端口号>/<协议类型> --permanent
根据具体需求,添加或删除其他端口和服务
(3)重新加载防火墙规则:
sudo firewall-cmd –reload
(4)查看 firewalld 规则:
sudo firewall-cmd --list-all

总结

Ubuntu的命令和Centos差不多,可以对照要求自行修改,就没列举了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Linux基线检查】 的相关文章

  • Linux 内核中的 64 位 time_t

    我已经编译了内核 3 19 1 但仍然有问题time t 只是一个简单的程序cout lt lt sizeof time t 给出 4 个字节的大小 而不是我的意图的 8 个字节 我应该在 make menuconfig 期间打开特定选项吗
  • Linux - 查找特定文件之后和之前的文件

    我试图在我的计算机上查找特定文件创建前 1 小时和创建后 1 小时创建的文件 这是我尝试过的方法 find root newermt 2012 10 04 1800 and newermt 2012 10 04 2000 exec ls l
  • 在 Linux 上使用命令行 PHP 检查互联网连接

    我在 Linux 上使用命令行 PHP 来打开蓝牙拨号连接 并且我需要一种快速的方法来检查互联网连接是否处于活动状态 嗯 不一定要脏 但要快 使用exec运行外部命令不是问题 我正在考虑 ping 一些稳定的服务器 例如谷歌 但我想知道是否
  • Linux内核如何阻止BIOS系统调用?

    BIOS 调用在 Linux 操作系统中不可用 我想知道内核如何阻止执行包含对 BIOS 子例程的调用的指令 The BIOS http en wikipedia org wiki Basic Input Output System主要在
  • 监控(嗅探)由 FTDI USB 串行转换器创建的 /dev/ttyUSB0

    我想监视 嗅探 由 FTDI USB 串行转换器创建的 dev ttyUSB0 的流量 我已经在 Windows 中编写了自己的应用程序 现在我尝试将其移植到 Linux 并使用 dev tty USB0 我想调试实际发生的通信 软件 st
  • 简单的awk命令问题(FS、OFS相关)

    我尝试重新组织包含以下内容的文件的格式 gt Humanl chr16 86430087 86430726 element 1 positive gt Humanl chr16 85620095 85621736 element 2 neg
  • Linux 在崩溃时自动重新启动应用程序 - 守护进程

    我有一个运行嵌入式 Linux 的系统 它的持续运行至关重要 基本上 它是一个与传感器通信并将数据中继到数据库和 Web 客户端的过程 如果发生崩溃 如何自动重启应用程序 此外 还有多个线程进行轮询 例如套接字和 uart 通信 如何确保没
  • “原子”系统调用是什么意思?

    我知道atomic通常在以下上 下文中使用竞争条件意思是类似一致性 and 根据多线程 多处理环境确定结果 没关系 但最近我读到了Linux中的原子系统调用 但不明白什么是atomic实际上这里的意思是 即how this 原子性 is 实
  • 如何使用Python distutils?

    我用 python 编写了一个快速程序 将 gtk GUI 添加到 cli 程序中 我想知道如何使用 distutils 创建安装程序 因为它只是命令行应用程序的 GUI 前端 所以它只能在 nix 中工作 所以我不担心它是跨平台的 我的主
  • Linux 上共享内存的生命周期是多长

    我正在使用 ftok shmget shmat shmdt 函数在 Linux 上创建 写入和读取共享段 如果我写入一个程序中的段 然后退出 然后稍后从另一个程序中读取该段 我会惊讶地发现数据仍然存在 我预计当共享一个段的最后一个进程执行
  • 很好的 C 库集合? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个很好的 ANSI C 库集合 用于处理向量 哈希映射 二进制树 字符串处理等 Try g
  • 在詹金斯管道作业中将变量传递给bash脚本

    我有一个 Jenkins 管道作业 其中我使用名为 setup sh 的 bash 脚本配置我的环境 如下所示 bin bash export ARCH 1 echo architecture ARCH 在 Jenkins 管道脚本中 我使
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • 如何配置和采样英特尔进程内性能计数器

    简而言之 我试图在用户级基准测试进程中实现以下目标 伪代码 假设 x86 64 和 UNIX 系统 results for iteration 0 iteration lt num iterations iteration pctr sta
  • SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT

    我在用SDL http www libsdl org 用于在 Linux 上运行的 OpenGL 应用程序 我的问题是 SDL 正在捕获 SIGINT 并忽略它 这是一个痛苦 因为我正在通过屏幕会话进行开发 并且我无法使用 CTRL C 终
  • 强制 shell 在 SunGrid 引擎中使用 conda 变量中的 python [重复]

    这个问题在这里已经有答案了 我正在尝试在 SunGrid 引擎中执行 python 文件 并且从 anaconda3 环境变量中执行它 我的代码很简单 from future import print function import url
  • top命令的CPU使用率计算

    我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用率的百分比 但 top 正在使用一些 half total 来计算百分比 即在百分比上添加 0 5 在top的utils c中 以下行 在 3 8 beta1 中
  • 共享库 RPATH 和二进制 RPATH 优先级

    如果共享库链接到二进制文件 并且共享库还依赖于其他库 则共享库的 RPATH 和二进制文件的 RPATH 的优先级 链接器搜索顺序 是什么 二进制文件的 RPATH 是否可以覆盖共享库中的 RPATH 我在共享库RPATH中设置的 ORIG
  • UNIX 域 STREAM 和 DATAGRAM 套接字之间的区别?

    这个问题是NOTSTREAM 类型和 DATAGRAM 类型 INTERNET 套接字之间的区别 我知道 STREAM 套接字使用 TCP 数据报套接字使用 UDP 以及所有 TCP UDP 内容 按顺序到达的数据包 ACK NACK 等
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也

随机推荐

  • 冻结训练的理解与使用

    冻结训练的作用 当我们已有部分预训练权重 这部分预训练权重所应用的那部分网络是通用的 如骨干网络 那么我们可以先冻结这部分权重的训练 将更多的资源放在训练后面部分的网络参数 这样使得时间和资源利用都能得到很大改善 然后后面的网络参数训练一段
  • 虚拟化技术的工作原理_虚拟化技术与原理简介

    随着云计算技术的发展及其应用的普及和深入 云平台资源的高效利用成为越来越重要的问题 而服务器虚拟化技术是云计算实现资源有效利用的关键技术 云计算的云端系统 其实质上就是一个大型的分布式系统 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台 而
  • LayUI导入Excel表(Apache POI)

    LayUI导入Excel表 Apache POI 前端框架LayUI 将excel表导入到数据库 并展示在页面 首先要明白 excel表整体构造 一整个 excel表是一个工作簿 workbook 而其中又有很多工作表 sheet 然后一行
  • QT C++ 欧姆龙PLC网络通信协议FinsTcp库 通信慢的问题

    这个库移植自我自己以前的C 欧姆龙PLC网络通信协议FinsTcp库 详见以下链接 https blog csdn net panasonicsony article details 126300935 QT主界面上一个写入PLC辅助触点的
  • struts2 开发中,一些功能需要在struts.xml中的配置

    1 普通package
  • Spring Boot启动时自动执行方法

    摘要 有时启动springboot项目后需要执行一些方法初始化 如资源加载 数据准备等 首先不能放在main方法中SpringApplication run 之前 因为此时bean还未初始化 除非你不使用bean 当然也不能放其后 因为ru
  • 【MySql安装】msi版本

    提示 不是压缩版安装 是msi直装的 目录 前言 一 到官网下载msi版 二 安装 1 安装MySql数据库 2 查看服务启动 总结 前言 什么是msi呢 很多新手对此不是很清楚 mysql msi 为安装版本 安装过程中将自动配置 包含安
  • 【python】生成随机数字/字母/指定位数的字母+数字的字符串

    在利用python代码进行开发或者测试中 难免会遇到一些需要输入随机值的相关操作 这里特意总结了一下 一 随机数字的生成 1 生成0 9 或其他数字段 中的一个 串 随机数字 import random def create random
  • 内网穿透(详细且免费)部署

    内网穿透 详细且免费 100 成功 我们在做开发时 不想购买服务器 只想搭建我们本地的服务器 我们搭建的本地服务器只能供我们自己电脑的浏览器访问 或者处于同一个wifi下的手机访问平常我们访问的网站都是由具有公网ip的服务器提供的 如果想做
  • 002-实现Unity3d中触摸屏幕控制物体的旋转和缩放 代码实现

    1 直接帮到物体的身上就可以了 using UnityEngine using System Collections using System IO public class hehe MonoBehaviour private Touch
  • 日撸 Java 三百行(01-10天,基本语法)

    目录 总述 01 10天 基本语法 11 20天 线性数据结构 21 30天 树与二叉树 31 40天 图 41 50天 查找与排序 51 60天 kNN 与 NB 61 70天 决策树与集成学习 71 80天 BP 神经网络 81 90天
  • 华为手机大疆云台自动跟随_大疆Osmo Mobile 3 我的第一支手机云台

    手机逐渐取代相机 成为人们旅行的主要记录工具 视频的普及让我们的旅行记录更完美 但是手机拍的 地震 视频通常让我们觉得很糟心 于是手机云台诞生了 大疆Osmo Mobile 3 我的第一支手机云台 作为在稳定器方面十分有建树的大疆 前不久推
  • Python爬虫之bs4数据解析select方法

    select作用如其名 筛选 通过指定的类 标签 id 层级查找 1 通过类查找 from bs4 import BeautifulSoup soup select class名称 2 通过ID查找 soup select id名称 3 通
  • torch.nn.LocalResponseNorm(局部响应归一化)详解(附源码解析)

    torch nn LocalResponseNorm 局部响应归一化的理解 局部归一化的动机 在神经生物学有一个概念叫做侧抑制 lateral inhibitio 指的是被激活的神经元抑制相邻神经元 归一化的目的是 抑制 局部响应归一化就是
  • 在运行中修改unity的animator中某个状态的速度

    要在运行中修改动画播放速度的话不能用UnityEditor 只能修改animator的速度 不能修改animator里某个状态的速度 运行中修改animator的速度不会保存 但是运行中修改animator里某个状态的速度则会保存下来 这大
  • js判断是否是base64字符串

    js判断是否是base64字符串 isBase64 str if str str trim return false try return btoa atob str str catch err return false
  • 多元线性回归——梯度下降法、sklearn实现

    梯度下降法实现多元线性回归 代码实现 载入数据 data genfromtxt r Delivery csv delimiter 观察一下数据 x data为特征值 y data为标签值 所以应该设置3个参数 0 1 2 lr 0 0001
  • opencv实战—目标跟踪-KCF目标跟踪方法

    一 函数 1 vars vars 函数返回对象object的属性和属性值的字典对象 2 tracker cv2 multiTracker create 获得追踪的初始化结果 3 continue 语句跳出本次循环 而break跳出整个循环
  • HBase笔记-1.基本介绍

    HBase简介 HBase Hadoop Database 是一个提供高可靠性 高性能 列存储 可伸缩 实时读写的数据库系统 利用Hadoop HDFS作为其文件存储系统 利用Hadoop MapReduce来处理HBase中的海量数据 利
  • 【Linux基线检查】

    文章目录 前言 一 账户密码安全 二 文件和目录权限 三 访问控制 四 安全审计和日志记录 五 开放端口和服务限制 总结 前言 为保障服务器的安全性 通常需要对服务器做一些安全配置 现介绍一下Linux部分的安全配置 以下命令适用于Cent