99%运维人员都忽略的服务器安全问题

人员,忽略,服务器,安全,问题 · 浏览次数 : 84

小编点评

**服务器安全提升方法** **1. 用户和用户组管理** - 删除不必要的用户和用户组。 - 使用 sudo 命令限制超级用户的登录权限。 **2. 权限控制** - 使用 su 或 sudo 命令分配权限。 - 使用密钥认证作为远程登录的认证方式。 **3. 服务关闭** - 关闭系统不需要的服务。 - 使用 chkconfig 命令来关闭服务自启动。 **4. 文件权限检查** - 确保所有用户都具有正确的文件权限。 - 及时修改不正确的权限设置。 **5. 查找可疑文件和程序** - 查找系统中所有用户都具有写权限的文件或目录。 - 查找系统中具有 s 权限的程序。 **6. suid 和 sgid 文件检查** - 检查系统中所有 suid 和 sgid 文件。 - 删除没有属主的文件。 **7. 黑客工具检测** - 使用工具检查系统中是否存在黑客工具。 **8. 安全配置** - 确保所有服务器都使用强密码。 - 设置安全软件,例如防火墙和入侵检测系统 (IPS)。 - 监控系统日志和异常事件。

正文

公众号:咸鱼爱搞机

服务器安全是 IT 行业一个老生常谈的问题了,每年的护网行动,企业内部的安全培训都在提醒每个程序员处理好服务器安全问题已变得刻不容缓

 

如果在安全方面有疏忽,极易造成数据泄露、隐私泄露等重大安全事故

 

  • 2022年美医疗中心数据泄露,超130万人受影响;

  • 去年一月,勒索软件攻击引发墨西哥州监狱越狱危机;

  • 同样是2022年,红十字国际委员会遭网络攻击,超51万人信息被黑。

 

作为一名运维人员,必须要了解一些安全运维守则,通过一些手段来保护自己的服务器不受入侵和攻击,再进一步保护自己所负责的业务不受影响

 

下面我将给大家介绍一些提高服务器安全性的方法论

 

用户(组)安全

删除特殊的用户和用户组

 

Linux 系统提供了各种不同角色的系统账号,在系统安装完成之后,默认会安装很多不必要的用户和用户组

 

如果你用不上这些用户和用户组,应该删除他们,因为账户越多,系统就越不安全,这些你不会注意到的用户很有可能会被黑客给利用,从而威胁服务器的安全

 

像:adm、sync、shutdown、lp、halt、news、uucp、games 等系统默认用户

 

以及 adm、news、uucp、dip、popusers 等系统默认用户组

 

如果你用不上它们,删除掉

 

删除的方法很简单

 

 

 

禁止某些用户登录系统的功能

 

有些情况下,某些用户仅仅用作进程调用或者用户组调用,并不需要登录功能

 

比如说 mail 用户,很多情况下,我们的邮件服务器只需要进行收取邮件的功能,不需要登录到系统上

 

所以给它的 shell 设置成 nologin 就行了

 

 

 

总结一下

 

关于用户和用户组的删除,其实不是千篇一律的,可以根据服务器的主要用途来决定:如果服务器是 web 应用,那么 apache 用户或 nginx 用户就无需删除;而跟数据库相关的默认用户,例如 mysql 用户就可以删除

 

 

合理使用 su、sudo 命令

 

su 命令是一个切换用户的工具,用于将普通用户切换到超级用户下,也可以将超级用户切换到普通用户

 

为了保证服务器安全,很多情况都是直接禁止超级用户直接登录系统,而是先通过普通用户登录,再通过 su 命令切换到超级用户

 

但是 su 命令会导致一些安全问题:普通用户想要使用 su 命令切换到超级用户,就首先要知道超级用户的密码,如果有多个普通用户,那么这多个普通用户都知道超级用户的密码,这在一定程度上会对系统的安全造成威胁

 

超级用户的密码应该掌握在少数人手里

 

这时候 sudo 命令登场了

 

sudo 命令允许管理员分配给普通用户一些合理的“权利”,并且不需要普通用户知道超级用户的密码,就能让普通用户执行一些只有超级用户或其他特权用户才能完成的任务,比如服务重启,修改配置文件等

 

sudo 命令也叫受限制的 su

 

sudo 命令的执行流程是:将当前用户切换到超级用户下(或切换到指定用户),然后以超级用户(指定用户)身份执行命令,执行完成后,直接退回到当前用户

 

举个例子:普通用户是无法访问 /etc/shadow 文件的

 

 

 

如果要让 user1 能够访问这个文件,可以在 /etc/sudoers.d/ 添加下面内容:

 

 

 

添加之后我们用 user1 执行一下

 

 

输入 user1 的密码之后就可以查看文件了

 

如果普通用户没有在 /etc/sudoers.d/ 或/etc/sudoers 中配置,同样无法查看

 

 

sudo 使用时间戳文件来完成类似“检票”的功能:当用户输入密码之后就获得了一张默认存活期为5分钟的入场券,超时以后,用户必须重新输入密码才能获得相应的权限

 

这样会导致一个问题:如果超时就要重新输入密码,像一些自动调用超级权限的程序就会出现问题

 

我们可以通过下面的设置让普通用户无需输入密码也可执行具有超级权限的程序,例如需要 user1 用户 可以自动重启 network 的权限

 

 

 

这样 user1 用户就可以执行重启 network 的脚本而无需输入密码了

 

如果要让 user1 具有超级用户的所有权限,又不想输入超级用户的密码,只需要添加如下内容即可

 

 

 

 

密码安全

使用强密码而非弱密码

 

这个准则想必大家都听过了,一个强大健壮的密码,能让你的系统安全性翻倍提高

 

什么是强密码:

  • 至少 12 个字符长,但 14 个或 14 个字符以上更好

  • 大写字母、小写字母、数字和符号的组合

  • 不是可以在词典或人员、角色、产品或组织名称中找到的单词

 

使用密钥认证作为远程登录系统的认证方式

 

Linux 中,远程登录系统有两种认证方式:

  1. 密码认证

  2. 密钥认证

 

关于密码认证,虽然设置一个密码对系统安全能够起到一定作用,但是当遇到像密码暴力破解、密码泄露、密码丢失等问题时,我们往往就会束手无策,而且强密码也会对我们的工作造成一定负担

 

而密钥认证是一种新型的认证方式,公用密钥存储在远程服务器上,专用密钥保存在本地,当需要登录系统时,通过本地专用密钥和远程服务器的公用密钥进行配对认证,如果认证成功就能登陆

 

这种认证方式避免了被暴力破解的风险,同时只要保存在本地的专用密码不被黑客盗用,是一般无法通过密钥认证的方式进入系统的

 

系统安全

关闭系统不需要的服务

 

Linux 绑定了很多没用的服务,这些服务默认都是自动启动的

 

对于服务器来说,运行的服务越多,系统就越不安全,因此关闭一些不需要的服务,对系统安全有很大的帮助

 

但具体要关闭那些服务,需要根据服务器的用途而定,一般情况下,只要系统本身用不到的服务都认为是不必要的服务

 

例如某台 Linux 服务提供 web 服务,那么除了 httpd 服务或者 nginx 服务和系统运行时必需的服务外,其他服务都可以关闭

 

下面列出一下不常用的服务,大家可以自行选择关闭

 

 

关闭服务自启动的方法可以通过 chkconfig 命令实现

 

 

对所有需要关闭的服务都执行上面的操作之后,重启服务器即可

 

而为了系统能够安全稳定的运行,就不得不运行一些服务,如下所示

  • acpid:用于电源管理

  • apmd:高级电源能源管理服务,用于监控电池性能

  • kudzu:检测硬件是否变化的服务

  • crond:为 Linux 下自动安排的进程提供运行服务

  • atd:类似于 crond,提供计划任务功能

  • keytables:用于装载镜像键盘

  • iptables:Linux 内置防火墙软件

  • xinetd:支持多种网络服务的核心守护进程

  • network:Linux 网络服务

  • sshd:提供远程登录 Linux 的服务

  • syslog:记录系统日志的服务

 

 

文件权限检查和修改

 

不正确的文件权限设置会直接威胁系统的安全,因此运维人员应该能及时发些这些不正确的权限设置,并立即修改

 

查找系统中任何用户都具有写权限的文件或目录

 

 

查找系统中具有 s 权限的程序

 

 

 

含有 s 权限的程序对系统安全威胁很大,上面的命令可以把某些不必要的 s 权限的程序去掉,防止用户滥用权限或者提升权限

 

检查系统中所有 suid 和 sgid 文件

 

 

检查系统中没有属主的文件

 

 

 

没有属主的孤儿文件往往容易成为黑客利用的工具,因此再找到这些文件之后,要么删除要么修改文件的属主

 


感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力

与99%运维人员都忽略的服务器安全问题相似的内容:

99%运维人员都忽略的服务器安全问题

公众号:咸鱼爱搞机 服务器安全是 IT 行业一个老生常谈的问题了,每年的护网行动,企业内部的安全培训都在提醒每个程序员处理好服务器安全问题已变得刻不容缓 如果在安全方面有疏忽,极易造成数据泄露、隐私泄露等重大安全事故 2022年美医疗中心数据泄露,超130万人受影响; 去年一月,勒索软件攻击引发墨西

4.go语言复合类型简述

[TOC] # 1. 本章前瞻 很好,经过很长的时间,你终于来到go语言的复合类型中,这里会介绍go语言的3种复合结构:切片(slice,可变数组),映射(map)和字符串(string)。 有些老手可能会问: 1.那结构体(struct)呢,你怎么不介绍? 答:现在还没法完整地介绍结构体(stru

Rancher 系列文章-K3s Traefik MiddleWare 报错-Failed to create middleware keys

概述 书接上回:《Rancher 系列文章-K3S 集群升级》, 我们提到:通过一键脚本升级 K3S 集群有报错。 接下来开始进行 Traefik 报错的分析和修复, 问题是: 所有 Traefik 的 IngressRoute 访问报错 404 问题描述 报错如下: time="2022-05-0

Cilium系列-11-启用带宽管理器

## 系列文章 * [Cilium 系列文章](https://ewhisper.cn/tags/Cilium/) ## 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提

Kubernetes——构建平台工程的利器

> 作者|Loft Team > 翻译|Seal软件 > 链接|https://loft.sh/blog/why-platform-engineering-teams-should-standardize-on-kubernetes/ 在当今快节奏、不断变化的技术环境中,平台工程团队一直面临着交付新

《系列二》-- 1、BeanFactory.getBean 总览

[TOC] > 阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证。全系列文章基于 spring 源码 5.x 版本。 写在开始前的话: 阅读spring 源码实在是一件庞大的工作,不说全部内容,单就最基本核心部分包含的东西就需要很长时间去消化了

我找回了我喜欢的Github Old Feed

前言 这周Github更新了个人主页Feed(指的是用户的活动源或动态源),作为GitHub重度爱好者而言New Feed完全不是我之前所喜欢的效果。虽然说New Feed添加了允许用户可以自定义配置过滤器,但是无论我添加多少过滤器,我都找不到我感兴趣的信息。我个人只关心我关注的人的star、com

汽车行业:充分借力数据价值,推动数字化营销链路闭环

当下,汽车行业已慢慢由曾经的增量市场逐步转变为存量市场。更年轻的消费群体偏好、更精准智能的营销投放策略和强势入局的新能源汽车等因素都在推动着汽车行业的不断发展。对于汽车厂商和垂域媒体来说,进行丰富的人群洞察与用户分层,能挖掘更多用户生命周期内的价值。 联合建模,精准拉新 随着电商与短视频的快速发展,

Kubernetes(K8S) Controller - StatefulSet、DaemonSet 介绍

无状态和有状态 无状态 Deployment 认为Pod 都是一样的。javademo1-6fb64c4664-dj4dh、javademo1-6fb64c4664-dj54s 它们的内容是一样的。 没有顺序要求,先启第一个还是启第二个无所谓 不用考虑在哪个 node 上运行 随意进行伸缩和扩展 有

PPT 动画-多层旋转(圆角三角形)

多层旋转动画 插入若干个三解形 然后将页面切换成【平滑】(Office 2019~ 365 才有这功能,或者 iSlide 平滑过渡)