文章851
标签121
分类10

Linux 主机安全加固指南

📌 目的

本文档旨在提供一套适用于常见 Linux 服务器(如 Ubuntu、CentOS)的主机安全加固方案,用于防止入侵、控制权限、保障生产环境稳定性。


🧱 基础安全配置

1. 禁用 Root 登录

# 编辑 SSH 配置文件
sudo vim /etc/ssh/sshd_config

# 设置
PermitRootLogin no
PasswordAuthentication no

启用仅限密钥认证,并重启 SSH 服务:

sudo systemctl restart sshd

2. 创建普通用户并授予 sudo 权限

adduser deploy
usermod -aG sudo deploy

3. 配置 SSH 公钥登录

mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
vim /home/deploy/.ssh/authorized_keys
chmod 600 /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh

🔥 防火墙设置

Ubuntu (UFW)

sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

CentOS (firewalld)

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

🔒 文件与权限保护

锁定关键系统文件

chattr +i /etc/passwd
chattr +i /etc/shadow

设置目录权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

🧠 系统更新与补丁

Ubuntu

sudo apt update && sudo apt upgrade -y

CentOS

sudo yum update -y

可选安装自动更新服务:

sudo apt install unattended-upgrades

🧪 入侵检测与日志审计

启用 auditd 审计

sudo apt install auditd
sudo systemctl enable --now auditd

登录失败自动封禁(fail2ban)

sudo apt install fail2ban
sudo systemctl enable --now fail2ban

🔍 日志审计命令

# 查看登录历史
last

# 查看最近使用 sudo 的记录
grep 'sudo' /var/log/auth.log

# 查监听端口
ss -tulnp

# 查关键目录改动
find /etc -type f -mtime -1

☁ 云服务建议

云平台建议操作
阿里云启用安骑士、安全组严格控制端口
腾讯云启用云镜、设置访问白名单
AWS配置 VPC、使用 GuardDuty

✅ 总结

维度措施建议
用户权限禁用 root,使用 sudo 普通用户
网络控制防火墙设置、安全组最小开放
文件安全chattr 加锁、目录限权
系统更新启用定期补丁更新
审计与日志配置 auditd,启用 fail2ban
入侵防御安装 AIDE、OSSEC 或其他 HIDS 工具

📎 参考资料

CentOS 上使用 `yum` 安装 Node.js

在 CentOS 上使用 yum 安装 Node.js 非常简单。可以按照以下步骤进行:

1. 添加 NodeSource 仓库

NodeSource 提供了 Node.js 的官方仓库。首先,添加你需要的 Node.js 版本仓库,例如 Node.js 16.x:

curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -

2025-05-14T01:12:03.png

2. 安装 Node.js

接下来,使用 yum 安装 Node.js:

sudo yum install -y nodejs

2025-05-14T01:13:09.png

3. 验证安装

安装完成后,检查 Node.js 和 npm 版本以确认安装成功:

# node -v
v16.20.2

# npm -v
8.19.4

4. 更新 npm(可选)

如果需要更新 npm 到最新版本,可以使用以下命令:

sudo npm install -g npm@latest

Arch Linux 为何如此迷人?

2024-10-30T11:55:42.png
Arch Linux 是众多 Linux 操作系统中的一种,面向有 Linux 指令操作经验的「进阶用户」,旨在打造更适合自己的环境,例如不同的桌面、窗口环境等,体验最新的软件包。

1. 纯文本界面,完全自定义

Arch Linux 只有文本界面,不包含图形界面。这意味着,当你安装完 Arch Linux 后,屏幕上将一片黑暗,电脑期待着你用键盘输入命令。Arch Linux 只提供最基本的功能,其他软件包都需要自己安装。

2. 成为掌握一切的设计师

Arch Linux 不会自动安装你用不到的东西,你将亲自打造完全属于自己的电脑。不会有程序自动启动,也不会强迫你进行更新。你可以将你的电脑改造成任何样子,同时你也为电脑的易用性和安全性负责。

3. 集全天下知识的维基

既然要自己打造电脑,当然需要大量知识。Arch Linux 培养了活跃的社区,撰写了几乎全世界最完整的 Linux 知识。想要安装什么软件,可以去 Arch Linux Wiki 查找详细的安装说明与疑难解答。Arch Linux Forums 更是活跃,各种琐碎问题都有近期的回应。在搜索引擎中搜索 “arch” 加上相关内容,通常都能找到答案,甚至其他 Linux 发行版也可以参考。

4. 全宇宙最新的软件包库

要打造理想的电脑,就需要最新的材料!Arch Linux 的包管理器 pacman 是所有 Linux 发行版中更新最快的,新版本的软件通常第一时间出现在 Arch Linux 上。如果官方库中没有你需要的软件,可以在 AUR(Arch Linux User Repository)用 yaourt 安装,体现了海纳百川的姿态。Arch Linux 没有版本之分,采用滚动更新(Rolling Release),所有软件包各自更新,也就是说你永远无需进行系统更新、被迫重启,之后又不能使用电脑。不过,缺点是当软件包发生冲突时,你需要亲自解决。

5. 开始你的 Arch Linux 之旅

想尝试 Arch Linux 的用户通常都比较挑剔,建议先查看官方 Wiki 的 Arch Linux 介绍,了解其信仰精神。如果决定安装,务必认真按照 Installation Guide 进行操作,预留几小时来理解这些内容,肯定会收获颇丰。

Kali Linux默认账号密码

在 Kali Linux 中,默认的用户名和密码取决于您使用的版本。以下是一些常见情况:
2024-11-01T06:50:51.png

  1. Kali Linux 2020.4 及以前版本

    • 默认用户名:root
    • 默认密码:toor
  2. Kali Linux 2020.4 及以后版本

    • 默认用户名:kali
    • 默认密码:kali

如果您在安装时自定义了用户名和密码,请使用您设置的凭据进行登录。

注意事项

  • 如果您忘记了密码,可以通过单用户模式重置密码,具体步骤取决于您的安装方式。
  • 建议在安装后立即更改默认密码,以提高系统安全性。

DNF 和 Yum 的区别,为什么 Yum 会被 DNF 取代?

2024-09-28T08:52:24.png

DNFYum 的区别,为什么 Yum 会被 DNF 取代?

作者: Magesh Maruthamuthu 译者: LCTT Xingyu.Wang

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。

DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。

Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。

Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。

为什么他们要建立一个新的工具,而不是修复现有的问题呢?

Ales Kozamblak 解释说,这个修复在技术上是不可行的,而且 Yum 团队还没有准备好立即接受修改。

另外,最大的挑战是,Yum 有 56000 行代码,但 DNF 只有 29000 行代码。

所以除了分叉,没有办法解决。

不过 Yum 的运行情况还算可以。

|< 如显示不全,请左右滑动 >|

编号DNF(Dandified YUM)YUM(Yellowdog Updater, Modified)
1DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护YUM 使用公开的 API 来解析依赖关系
2API 有完整的文档API 没有完整的文档
3由 C、C++、Python 编写的只用 Python 编写
4DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用
5DNF 支持各种扩展Yum 只支持基于 Python 的扩展
6API 有良好的文档,因此很容易创建新的功能因为 API 没有正确的文档化,所以创建新功能非常困难
7DNF 在同步存储库的元数据时,使用的内存较少在同步存储库的元数据时,YUM 使用了过多的内存
8DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息)由于使用公开 API 的原因,Yum 依赖性解析变得迟钝
9从内存使用量和版本库元数据的依赖性解析来看,性能都不错总的来说,在很多因素的影响下,表现不佳
10DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新YUM 将在没有验证的情况下更新软件包
11如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务如果有存储库不可用,YUM 会立即停止
12dnf update 和 dnf upgrade 是等价的在 Yum 中则不同
13安装包的依赖关系不更新Yum 为这种行为提供了一个选项
14清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包Yum 不会这样做
15存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。这个动作由系统定时器单元 dnf-makecache.timer 控制Yum 也会这样做
16内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包 Yum不允许你删除运行中的内核
17libsolv:用于解包和读取资源库。hawkey: 为 libsolv 提供简化的 C 和 Python API 库。librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。Yum 不使用单独的库来执行这些功能
18DNF 包含 29000 行代码Yum 包含 56000 行代码
19DNF 由 Ales Kozumplik 开发YUM 由 Zdenek Pavlas、Jan Silhan 和团队成员开发

via: https://www.2daygeek.com/comparison-difference-between-dnf-vs-yum/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:wxy 校对:wxy

">