Linux服务器系统配置初始化脚本

服务器系统配置初始化脚本

#!/bin/bash
set -euo pipefail  # 安全设置:遇错退出、未定义变量报错、管道错误处理# 设置时区并同步时间
timedatectl set-timezone Asia/Shanghai >/dev/null || ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 安装chrony并配置时间同步
if ! command -v chronyc &>/dev/null; thenyum install -y chrony >/dev/null
fi
systemctl enable chronyd --now >/dev/null# 禁用selinux
sed -i '/SELINUX/{s/enforcing\|permissive/disabled/}' /etc/selinux/config
setenforce 0 &>/dev/null# 关闭防火墙(兼容6.x/7.x/CentOS Stream)
if grep -E '7\.|8\.|9\.|Stream' /etc/redhat-release &>/dev/null; thensystemctl disable --now firewalld &>/dev/null
elif grep '6\.' /etc/redhat-release &>/dev/null; thenservice iptables stop &>/dev/nullchkconfig iptables off &>/dev/null
fi# 历史命令显示操作时间
grep -q HISTTIMEFORMAT /etc/bashrc || echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc# SSH超时和配置优化
grep -q TMOUT /etc/profile || echo "export TMOUT=600" >> /etc/profilesed -i '
s/#PermitRootLogin.*/PermitRootLogin no/
s/#ClientAliveInterval.*/ClientAliveInterval 300/
s/#ClientAliveCountMax.*/ClientAliveCountMax 0/
' /etc/ssh/sshd_config# 禁止定时任务邮件通知
sed -i 's/^MAILTO=.*/MAILTO=""/' /etc/crontab# 设置最大打开文件数
if ! grep -q "nofile 65535" /etc/security/limits.conf; thencat <<EOF >> /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
EOF
fi# 系统内核优化
grep -q tcp_max_syn_backlog /etc/sysctl.conf || cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_max_tw_buckets = 20480
net.core.somaxconn = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
vm.swappiness = 5
EOF
sysctl -p &>/dev/null# 安装基础工具
yum install -y epel-release >/dev/null
yum install -y gcc make autoconf vim sysstat net-tools bind-utils >/dev/null# 应用SSH配置(避免立即断开连接)
echo "配置完成!请手动执行以下命令:"
echo "systemctl restart sshd && source /etc/profile"
echo "注意部分设置需要重启服务器才能完全生效"

关键优化点及解释

  1. 安全增强

    set -euo pipefail
    
    • -e:命令失败时立即退出
    • -u:未定义变量时报错
    • -o pipefail:管道中任意命令失败则整个管道失败
  2. 时间同步优化

    timedatectl set-timezone Asia/Shanghai
    systemctl enable chronyd --now
    
    • 使用chronyd替代ntpdate(更精确的NTP实现)
    • timedatectl是官方推荐的时区设置工具
    • 系统自动维护时间同步,无需crontab
  3. SELinux禁用改进

    sed -i '/SELINUX/{s/enforcing\|permissive/disabled/}' /etc/selinux/config
    setenforce 0
    
    • 同时处理enforcingpermissive状态
    • setenforce 0立即生效无需重启
  4. 防火墙处理增强

    if grep -E '7\.|8\.|9\.|Stream' /etc/redhat-release; then
    
    • 支持CentOS 7/8/9和CentOS Stream
    • 使用disable --now同时停止并禁用服务
  5. SSH安全加固

    s/#ClientAliveInterval.*/ClientAliveInterval 300/
    s/#ClientAliveCountMax.*/ClientAliveCountMax 0/
    
    • 添加会话超时自动断开(300秒无操作断开)
    • 禁止root登录和会话保持
  6. 内核参数优化

    net.ipv4.tcp_tw_reuse = 1
    vm.swappiness = 5
    sysctl -p
    
    • 添加端口复用减少TIME_WAIT
    • 持久化swap优化(原脚本/proc设置重启失效)
    • sysctl -p立即应用配置
  7. 错误处理改进

    command -v chronyc &>/dev/null || yum install -y chrony
    grep -q ... || echo ...
    
    • 所有检查操作均先验证是否必要
    • 静默安装和配置(&>/dev/null
  8. 用户友好提示

    echo "配置完成!请手动执行以下命令:"
    echo "systemctl restart sshd && source /etc/profile"
    
    • 避免直接重启sshd导致当前连接断开
    • 提示需要重启的应用

使用建议

  1. 保存为init_server.sh
  2. 添加执行权限:chmod +x init_server.sh
  3. 测试执行:./init_server.sh
  4. 重新登录SSH(应用新SSH配置)
  5. 关键敏感操作(如防火墙关闭)应根据实际环境调整

⚠️ 注意:部分设置(如SELinux禁用、文件描述符限制)需重启服务器才能完全生效。生产环境中建议根据安全需求调整防火墙规则,而不是完全关闭防火墙。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Milvus单机模式安装和试用

1.安装ollama的package包&#xff1b; # install package pip install -U langchain-ollama2.我们直接使用ChatOllama实例化模型&#xff0c;并通过invoke进行调用&#xff1b; from langchain_ollama import ChatOllamallm ChatOllama(model"deepseek-r1") messa…

秒出PPT正式改名秒出AI,开启AI赋能新体验!

在现代办公环境中&#xff0c;借助智能工具提升工作效率已经成为趋势。秒出AI作为一款集AI PPT制作、动画、巨幕、视频、设计以及智能简历功能于一体的综合办公平台&#xff0c;为用户提供一站式智能内容生成解决方案&#xff0c;极大地简化了内容创作流程。 1. AI驱动的一键P…

Rust 学习笔记:发布一个 crate 到 crates.io

Rust 学习笔记&#xff1a;发布一个 crate 到 crates.io Rust 学习笔记&#xff1a;发布一个 crate 到 crates.io提供有用的文档注释常用标题文档注释作为测试注释所包含的项目 使用 pub use 导出一个方便的公共 API设置 crates.io 账户添加 metadata 到一个新的 crate发布到 c…

C++输入与输出技术详解

文章目录 引言一、C标准输入输出流1.1 cin与cout1.2 cerr与clog 二、C风格输入输出函数2.1 scanf与printf2.2 fgets与puts 三、输入输出优化四、总结 引言 在C编程中&#xff0c;输入与输出&#xff08;I/O&#xff09;操作是程序与用户、文件或其他系统组件交互的核心环节。C…

安全编码与AI接口权限控制

安全编码与AI接口权限控制 在AI系统中,模型服务的开放接口往往涉及敏感数据、核心算法与算力资源,如果缺乏有效的安全编码与权限控制机制,极易引发数据泄露、滥用调用或非法操作等问题。本节将从“接口安全策略”“权限验证流程”“Token管控机制”“多租户身份隔离”四个方…

redis五种数据结构详解(java实现对应的案例)

一、简述 Redis是一款高性能的键值对存储数据库&#xff0c;它支持五种基本数据类型&#xff0c;分别是字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。 二、五种基本数据类型 2.1 字符串(String) String是Redis最基本的类型&#xff0c;一个key对…

大数据-273 Spark MLib - 基础介绍 机器学习算法 决策树 分类原则 分类原理 基尼系数 熵

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大模型篇章已经开始&#xff01; 目前已经更新到了第 22 篇&#xff1a;大语言模型 22 - MCP 自动操作 FigmaCursor 自动设计原型 Java篇开…

第十一章 Java基础-继承

文章目录 1.继承来源2.继承特点3.子类能继承父类中哪些内容1.继承来源 是为了解决代码的重复冗余。

Axure项目实战:驾驶舱(数据一张图)制作教程

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 视频展示(本文第三部分含所有echarts示例JS代码,可复制使用): Axure项目实战:驾驶舱(数据一张图…

针对Python开发的工具推荐及分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等)

以下是针对Python开发的工具推荐及全面分析&#xff0c;涵盖集成开发环境&#xff08;IDE&#xff09;、轻量级工具、在线开发平台、代码管理工具等&#xff0c;结合不同场景和需求进行分类说明&#xff1a; 目录 一、集成开发环境&#xff08;IDE&#xff09; 1. PyCharm 2…

不使用绑定的方法

public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 初始设置 A 控件的宽度 ControlA.Width ControlB.Width / 2; // 监听 B 控件的 SizeChanged 事件 ControlB.SizeChanged (sender, e) > { ControlA.Width ControlB.Actual…

DDR5 ECC详细原理介绍与基于协议讲解

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。 背景原理介绍 上图参考:DDR 内存中的 ECC 写入操作时,On-die ECC的工作过程如下: SoC将需要写入到Memory中的数据发送给控制器控制器将需要写入的数据直接发送给DRAM芯片在DDR5 DR…

基于springboot的益智游戏系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

STM32软件spi和硬件spi

核心观点 本文主要介绍了SPI通信的两种实现方式&#xff1a;软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时&#xff0c;对W25Q64模块进行了详细介绍&#xff0c;包括其硬件电路、框图以及操作注意事…

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)

在自然语言处理&#xff08;NLP&#xff09;的浩瀚宇宙中&#xff0c;TF-IDF&#xff08;词频-逆文档频率&#xff09; 犹如一颗恒星&#xff0c;虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时&#xff0c;TF-IDF作为传统方法的代表&#xff0c;其简洁性、高效性与可解…

爱其实很简单

初春时&#xff0c;元元买来两只芙蓉鸟。一只白色的&#xff0c;是雄鸟&#xff1b;另一只黄色的&#xff0c;是雌鸟。 每天清晨日出之前&#xff0c;雄鸟便开始“啁啾——啁啾”地啼鸣&#xff0c;鸣声清脆婉转&#xff0c;充满喜悦&#xff0c;仿佛在迎接日出&#xff0c;又…

CentOS 7 环境下部署 LAMP

在 CentOS 7 环境下部署 LAMP&#xff08;Linux Apache MySQL 5.7 PHP 7.4&#xff09; 环境的详细步骤如下&#xff1a; 1. 系统准备 1.1 更新系统 sudo yum update -y 1.2 安装依赖 sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel e…

如何查看电脑电池性能

检查电脑电池性能的方法如下&#xff1a; 按下winR键&#xff0c;输入cmd回车&#xff0c;进入命令行窗口 在命令行窗口输入powercfg /batteryreport 桌面双击此电脑&#xff0c;把刚刚复制的路径粘贴到文件路径栏&#xff0c;然后回车 回车后会自动用浏览器打开该报告 红…

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本&#xff0c;队列的返回元素是由是由插入顺序决定的&#xff0c;先进先出嘛&#xff0c;但是有时我们可能想要返回优先级较高的元素&#xff0c;比如最大值&#xff1f;这种场景下就由优先级队列登场。 优先级队列底层是由堆实…

在Windows本地部署Dify详细操作

Dify官网文档&#xff1a;产品简介 - Dify Docs 1.硬件要求 2.部署方式选择 本次我选择Docker Compose 部署&#xff0c;接下来我将根据官方文档指引&#xff0c;在windows电脑上完成dify本地部署 3.DockerCompose本地部署Dify 3.1 安装WSL2 官方安装WSL2的操作说明入口&…