墨风如雪博客

  • 源码小店
  • 导航站
  • 登录
  • java
  • 资源分享
让AI使用变得如此简单
  1. 首页
  2. Linux
  3. 正文

一台新到手的VPS服务器必做的配置

2025年 1月 29日 151点热度 0人点赞 0条评论

好的,以下是将您的服务器配置记录转换为标准 Markdown 格式的版本:

服务器重装及配置记录

一、更新组件与包管理

更新 Ubuntu 系统上的软件包:

  • 不推荐(耗时较长):
apt update && apt upgrade -y
  • 推荐:
sudo apt update      # 更新软件包列表
sudo apt upgrade --only-upgrade # 安装可用的软件包更新

或者合并为一行:

sudo apt update && sudo apt upgrade --only-upgrade

二、常用工具

  1. VIM 编辑器 检查是否安装 VIM:
    vim --version
    如果没有安装,则安装:
    apt install vim
    将 VIM 配置为默认系统编辑器:
    sudo update-alternatives --config editor
  2. 安装 command-not-found 安装 command-not-found 工具,在命令输入错误时提供相应的软件包安装提示:
    #!/bin/bash
    
    # 更新软件包列表并升级系统
    sudo apt update && sudo apt upgrade -y
    
    # 安装常用工具
    sudo apt install -y 
        curl 
        wget 
        git 
        vim 
        htop 
        tree 
        net-tools 
        build-essential 
        zip 
        unzip 
        ufw 
        tmux
    
    # 可选:安装其他实用工具
    # sudo apt install -y 
    #     python3-pip 
    #     openvpn 
    #     jq 
    #     neofetch
    
    echo "常用工具安装完成。"
  3. 修改时区与默认语言
    sudo update-locale LANG=en_US.UTF-8
    sudo timedatectl set-timezone Asia/Shanghai
    
    reboot  # 重启

三、添加普通用户

  1. 添加新用户:
    adduser {your-username}
  2. 授予 sudo 权限:
    visudo
    在 User Privilege Specification 下添加一行:
    {your-username} ALL=(ALL) NOPASSWD: ALL
  3. 验证是否添加成功:
    su - newuser   # 切换到新用户
    ls /root       # 列出 /root 目录下的文件(没有 root 权限是无法查看的)
    sudo ls /root  # 使用 sudo 命令授予普通用户 root 权限(这样就可以查看了,只要没有报错即成功,因为 /root 目录下可能没有东西)
    exit           # 退出

四、防火墙配置 (ufw)

  1. 检查 ufw 是否安装:
    sudo apt install ufw
  2. 开启端口:
    sudo ufw allow 22
    sudo ufw allow 80
    sudo ufw allow 443
  3. 启用防火墙:
    sudo ufw enable
  4. 检查配置:
    sudo ufw status

五、配置 SSH 登录及 SSH Server 安全设定

注意: 如果要禁用 root 密码登录并使用普通用户 {your-username} 通过 SSH 登录服务器,则 SSH 登录配置部分必须使用普通用户 {your-username} 进行配置,否则配置文件的权限和所有者将不正确,SSH 将无法正确读取公钥!

  1. 在 Windows 端生成 SSH 公私钥对:
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx
  2. 在用户目录下创建 authorized_keys 文件,并将公钥(以 .pub 结尾)的内容粘贴到 authorized_keys 文件中:
    su - {your-username}  # 不要在 root 身份下配置
    
    mkdir -p ~/.ssh
    touch ~/.ssh/authorized_keys
    # 将公钥(以 .pub 结尾)的内容粘贴到 <code>authorized_keys 文件中
    vim ~/.ssh/authorized_keys
    
    chmod 600 ~/.ssh/authorized_keys
    ~ 指的是当前用户的主目录(如果是 root 用户,则在 /root/ 下;如果是 {your-username},则在 /home/{your-username}/ 下)。 如果配置在 root 目录下,则使用 SSH 密钥对登录时需要选择 root 用户登录!
  3. 禁用 root 身份登录:
    sudo vim /etc/ssh/sshd_config
    修改以下配置:
    PermitRootLogin no
    # 开启 SSH 密钥对登录
    PubkeyAuthentication yes
    # 禁止密码登录
    PasswordAuthentication no
    # 修改 SSH 端口号(建议使用 10000 以上的端口)
    Port {SSH 端口号,最好在 10000 以上}
  4. 重启 SSH 服务生效:
    sudo systemctl restart sshd.service

六、自定义 Shell 界面

安装 oh-my-zsh:

sh -c &quot;$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;

其他主题、插件等配置参考:https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh

七、Docker 配置

  1. 安装 Docker 和 docker-compose: 官方地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/
    # 国内一键安装
    sudo curl -sSL https://get.daocloud.io/docker | sh
    
    # 国外一键安装
    sudo curl -sSL get.docker.com | sh
    
    # docker-compose
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    安装好 Docker 后,将当前用户添加到 docker 用户组(如果不想每次都使用 sudo 运行 Docker 命令):
    sudo gpasswd docker -a username
  2. Docker 日志管理:
    • 全局配置日志大小限制: 创建或修改文件 /etc/docker/daemon.json,并添加以下配置(3 份日志,每份 10MB):
      {
          "log-driver": "json-file",
          "log-opts": {
              "max-file": "3",
              "max-size": "10m"
          }
      }
      然后重启 Docker 服务:
      sudo systemctl daemon-reload
      sudo systemctl restart docker
      注意:已存在的容器不会生效,需要重建容器才能生效!
    • 单个容器日志大小限制: 在 docker-compose 文件中添加以下配置:
      logging:
        driver: json-file
        options:
          max-size: "100m"
          max-file: "3"

八、Swap 配置

sudo swapoff -a   # 删除原分区
sudo dd if=/dev/zero of=/root/swapfile bs=1M count=1024  # 配置新分区大小
sudo mkswap /root/swapfile
sudo swapon /root/swapfile
sudo vim /etc/fstab
# 最后设置开机启动:可以编辑 /etc/fstab 文件,把最后一行改成:&#x60;/root/swapfile swap swap defaults 0 0&#x60;

参考文章:https://skywt.cn/blog/changeswap/

九、Logrotate 日志大小限制

sudo apt install logrotate
sudo apt install cron

配置文件目录:/etc/logrotate.d/

/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
    weekly  
    rotate 3
    maxsize 100M
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

查看服务状态:

sudo systemctl status logrotate.service
sudo systemctl status logrotate.timer

十、Fail2ban 封禁 IP

一、正常安装

sudo apt-get install fail2ban

二、Debian 12 安装失败

解决 Ubuntu 20.04 上 Fail2Ban 启动失败问题:指定 systemd 后端

Fail2ban - 1Panel 文档

sudo apt-get install rsyslog
sudo apt install python3-systemd

1panel 配置参考

#DEFAULT-START
[DEFAULT]
bantime = 600
findtime = 300
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
#DEFAULT-END

[sshd]
ignoreip = 127.0.0.1/8 
backend=systemd
enabled = true
filter = sshd
port = 22      
maxretry = 2      
findtime = 300       
bantime = 600        
action = %(action_mwl)s
banaction = iptables-multiport  
logpath = /var/log/secure     

十一、面板安装——1panel

#apt install curl
sudo curl -sSL [https://resource.fit2cloud.com/1panel/package/quick_start.sh](https://resource.fit2cloud.com/1panel/package/quick_start.sh) -o quick_start.sh &amp;&amp; sudo bash quick_start.sh

#sudo apt autoremove docker-compose

参考文章:https://blog.pppfz.com/posts/5.html

十二、常规安全更新

安装 unattended-upgrades 来自动更新 security upgrade

通过 unattended-upgrades,可以使 Ubuntu 系统自动进行常规的安全相关更新,使系统一直保持 security。

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

参考资料:

  • https://leonis.cc/sui-sui-nian/2023-11-11-necessary-config-of-new-server.html#ji-ben-she-zhi
  • https://spenserj.com/posts/2013-07-15-securing-a-linux-server/
  • https://www.ruanyifeng.com/blog/2014/03/server_setup.html
  • https://blog.laoda.de/archives/vps-basic-configuration
  • https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh
  • https://xtls.github.io/document/level-0/ch04-security.html

十三、其他

  • 服务器被撑爆的可能原因:
    • 日志文件过大
    • 数据库文件过大
    • 备份文件过大
    • 程序产生大量临时文件
    • 恶意攻击导致磁盘空间被占用
  • 解决磁盘空间不足问题的方法:
    • 清理日志文件
    • 清理临时文件
    • 压缩备份文件
    • 优化数据库
    • 扩容磁盘
    • 使用云存储
    • 分析磁盘空间使用情况,找出占用空间较大的文件或目录
    • 定期清理不必要的文件
  • 服务器安全加固建议:
    • 定期更新系统及软件
    • 使用强密码
    • 禁用不必要的服务
    • 配置防火墙
    • 安装入侵检测系统
    • 定期备份数据
    • 监控服务器状态
    • 关注安全漏洞信息
    • 使用安全审计工具
    • 限制用户权限
    • 配置日志审计
    • 及时处理安全事件
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Linux 教程
最后更新:2025年 1月 29日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
告别机械感!OpenAudio S1让AI声音活起来 Sora触手可及!微软必应AI视频生成器,全民创作时代来临? 阿里WebAgent开源:引领自主搜索新纪元 重磅炸弹!字节跳动开源BAGEL:70亿参数,统一多模态理解与生成,AI“全能王”诞生记! 小米MiMo-VL:7B参数,怎么就成了多模态界的“越级打怪王”? 炸裂!DeepSeek 8B 量化版降临:告别显存焦虑,你的 3080 Ti 也能玩转顶级大模型了!
ComfyUI“打通任督二脉”:直接调用Veo2、GPT-4o等65大模型!一键串联你的AI工作流AI圈炸锅了!Mistral Medium 3:性能 SOTA,成本打骨折,企业玩家的新宠?字节终于开源“扣子”同款引擎了!FlowGram:AI 时代的可视化工作流利器告别“微信黑箱”!Chatlog:让你的聊天记录也能拥有“AI大脑”!字节跳动 Seed-Coder-8B:不靠人工洗数据,这80亿参数的小模型如何写出顶尖代码?85倍速的视觉革命:苹果发布 FastVLM,让你的 iPhone ‘看图说话’,快到飞起!
Java多线程编程中的ReentrantLock详解 DeepSite 深度解析:零门槛 AI 编程神器,免费打造你的专属应用与游戏 DeepSeek-V3-0324幻觉率翻倍:大模型能力跃升背后的隐忧与应对策略 常用Linux命令合集 java 分布式缓存框架Ehcache的(超详细总结) 微软开源GitHub Copilot:一场AI编程工具的革命与妥协
标签聚合
spring deepseek 算法 java 设计模式 教程 AI 动态规划

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

免责声明 - 隐私政策