Shell脚本实战怎么编写系统初始化脚本以实现新服务器的安全加固与调优

浅晨同学_4300

浅晨同学_4300

2026-09-01

941人浏览

原创

核心目标是自动完成安全加固、基础服务配置和内核/系统调优,避免人工遗漏,提升交付一致性与安全性;聚焦首次部署后必须立即生效的关键项,如禁用root远程ssh、配置防火墙、更新系统、关闭非必要服务、设置时区/ntp/基础用户、调整内核参数与ulimit,并通过幂等性设计、安全敏感处理、版本场景适配及重启提示确保可靠执行。

shell脚本实战怎么编写系统初始化脚本以实现新服务器的安全加固与调优

编写系统初始化脚本的核心目标是:在新服务器首次启动后,自动完成安全加固、基础服务配置和内核/系统调优,避免人工遗漏,提升交付一致性与安全性。

明确初始化范围与执行时机

脚本不应覆盖所有运维工作,而是聚焦“首次部署后必须立即生效”的关键项。典型范围包括:

  • 禁用 root 远程 SSH 登录、强制使用密钥认证
  • 配置防火墙(firewalld 或 ufw),仅放行必要端口(如 22、80、443)
  • 更新系统并安装基础安全工具(fail2ban、auditd、unattended-upgrades)
  • 关闭非必要服务(telnet、rsh、rpcbind 等)
  • 设置时区、NTP 同步、基础用户(如 deploy)及 sudo 权限
  • 调整内核参数(如 net.ipv4.tcp_tw_reuse、vm.swappiness)和 ulimit 限制

推荐将脚本设为 systemd 一次性服务(Type=oneshot + RemainAfterExit=yes),确保仅执行一次且不重复触发。

用幂等性设计避免重复执行风险

生产环境常需重跑脚本验证或修复,因此每项操作都应判断是否已生效。例如:

  • 修改 SSH 配置前,先 grep "PermitRootLogin no" /etc/ssh/sshd_config
  • 启用防火墙规则前,检查是否已存在对应 rich rule
  • 添加用户前,用 id -u username >/dev/null 判断用户是否存在
  • 写入 sysctl 参数前,用 sysctl -n key 与预期值比对

可统一用标记文件(如 /var/lib/system-init-done)记录完成状态,脚本开头检测该文件直接退出。

稿定AI
稿定AI

一款融合AI图像生成与智能编辑能力的在线设计工具,可辅助完成图片重绘、线稿处理和人物视觉优化等创作任务。

下载

安全加固的关键细节不能硬编码

避免在脚本中写死密码、密钥或敏感配置。正确做法是:

  • SSH 密钥通过传参或环境变量注入(如 ./init.sh --ssh-key "$KEY"),或从可信配置中心拉取
  • 防火墙开放端口由变量控制(PORTS="22 80 443"),便于不同环境复用
  • 禁止在脚本中 echo "root:password" | chpasswd;改用 openssl rand -base64 12 生成临时密码并写入安全位置
  • 所有下载操作校验 checksum(如 curl -fsSL url | sha256sum -c -)

对 /etc/shadow、/etc/ssh/sshd_config 等关键文件修改前,自动备份(cp -a /etc/ssh/sshd_config{,.init.bak})。

调优参数要区分场景与版本兼容性

内核和系统参数不是越多越好,需结合服务器角色(Web、DB、中间件)和 OS 版本选择性启用:

  • RHEL/CentOS 7+ 默认使用 firewalld,Ubuntu 20.04+ 推荐 ufw,脚本需先检测发行版再调用对应命令
  • vm.swappiness=1 适合内存充足的服务型主机;若运行 Redis 或 Elasticsearch,建议设为 0
  • net.core.somaxconn 应 ≥ 应用层连接队列长度(如 Nginx 的 listen backlog),通常设为 65535
  • ulimit -n 建议设为 65535,但需同步写入 /etc/security/limits.d/90-nproc.conf 并重启对应服务(如 systemd-logind)

所有 sysctl 设置写入 /etc/sysctl.d/99-custom.conf 并执行 sysctl --system 生效,而非仅 sysctl -w。

不复杂但容易忽略:脚本末尾加入 reboot -f 或 systemctl reboot --no-wall 提示重启(可选),并输出初始化摘要(如“SSH 已禁用密码登录|防火墙已启用|共应用 7 项内核调优”),方便审计与交接。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2652

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

896

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2396

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4412

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.9万人学习

Linux开发视频教程
Linux开发视频教程

共18课时 | 4.6万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.2万人学习