Linux系统安全加固工具-Narsil
2023-10-07 10:08:45 阿炯

Narsil是一款针对Linux系统安全加固Shell工具,主要运行于Rocky Linux,采用GPLv3协议授权。


特性:
限制密码使用期限为 30 天
密码过期 30 天后,该账户将被禁用
设置两次修改密码的时间间隔为 1 天
在密码过期前 7 天将发出警告
将系统默认加密算法设置为 SHA512
将会话超时策略设置为 180 秒
为新建的用户创建并加入一个同名的组
将新建用户的 home 目录权限设置为 0750
将存量用户的 home 目录权限设置为 0750
强化 OpenSSH 配置(有些配置需要手动配置)
禁止没有 home 目录的用户登录
禁止新建的用户使用 SHELL 登录
禁止上传和用户信息的功能
禁止删除用户时同步删除该用户的组

还有很多特性没有被列举出来,可以参考 scripts 目录下的文件了解更多信息。


使用说明

第1步:克隆仓库
确保服务器安装了 Git,否则需要先用 sudo dnf install -y git 命令安装软件:
git clone https://github.com/seatonjiang/narsil.git

如果因为网络问题无法连接,可以使用 Gitee 镜像仓库,但是镜像仓库会有 30 分钟的延迟:
git clone https://gitee.com/seatonjiang/narsil.git

第2步:编辑配置
进入项目文件夹:
cd narsil

核对配置文件中的配置信息(配置文件说明在下文):
vi narsil.conf

第3步:运行脚本
如果是 root 账号,可以直接运行,如果是普通账号,需要使用 sudo 运行,而且必须用 bash 运行该脚本:
bash narsil.sh

配置文件

# 每一项操作完成后进行验证
VERIFY='Y'
# 云服务器使用 Metadata 覆盖默认配置
METADATA='Y'
# 在 banner 中添加生产环境的提示
PROD_TIPS='Y'
# SSH 端口配置
SSH_PORT='22'
# 时区配置
TIME_ZONE='Asia/Shanghai'
# 主机名称配置(当 METADATA 为 Y 时会自动拉取元数据)
HOSTNAME='rockylinux'
# DNS 服务器配置(当 METADATA 为 Y 时会自动拉取元数据)
DNS_SERVER='119.29.29.29 119.28.28.28'
# NTP 服务器配置(当 METADATA 为 Y 时会自动拉取元数据)
NTP_SERVER='ntp.tencent.com'

独立功能

Narsil 中包含了一些独立的功能,这些功能并不在自动执行的脚本中,需要使用参数单独使用,可以使用 sudo bash narsil.sh -h 命令查看所有独立功能。

清理垃圾
清理所有的系统日志文件。

某些云服务商提供的镜像由于制作的过程不规范,导致打包了一些垃圾文件到镜像中,建议在初始化系统之前先进行清理。
bash narsil.sh -c

安装 Docker
Docker 服务并设置镜像加速(腾讯云会自动使用内网加速地址)。安装完成后,可以使用 docker run hello-world 测试 Docker 的相关功能是否正常。
bash narsil.sh -d

挂载硬盘
交互式挂载数据盘(腾讯云会使用弹性云硬盘的软链接方式挂载),数据无价,操作过程切记小心!如果所选的硬盘已经被挂载,会提示解除挂载及格式化操作。
bash narsil.sh -f

修改主机名称
配置文件的参数如果没有变化,那么将优先获取元数据。
bash narsil.sh -h

修改端口
交互式修改 SSH 端口,端口范围需要在 10000 到 65535 之间。
bash narsil.sh -p

卸载监控
卸载云服务商安装到服务器中的各种监控组件。目前已经支持腾讯云监控组件的卸载。
bash narsil.sh -r

添加交换空间
如果物理内存太小,建议添加交换空间。
bash narsil.sh -s

目录结构

下面是整个项目的文件夹结构,config 及 scripts 文件夹中的文件省略显示。
narsil
├── narsil.sh
├── narsil.conf
├── config
│   └── (some config files)
└── scripts
    └── (some script files)


最新版本:


项目主页:https://github.com/seatonjiang/narsil