宝塔Linux面板简易调教


前言

宝塔面板是一款支持Linux和Windows系统的服务器运维管理工具,可以一键安装LNMP/LAMP网站环境,提供资源监控、文件管理、软件安装等功能。
免费版安装后首页会有推荐广告,这里记录一下自己的调教方案


一、环境

  • 系统:CentOS 7.x 未部署任何环境
  • 宝塔面板:8.2.0 Linux正式版
  • VPS远程交互:Win11 自带 Terminal

二、安装宝塔

1. 安装命令

点击官方安装链接 , 这里使用脚本安装
脚本安装

2. 登录 VPS

ssh root@[ip]
# 升级一下软件包(可选)
yum update -y
# 刚刚复制的脚本命令
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

提示输入 y/n 直接输入 y 回车即可,然后等待脚本安装完成

3. 完成安装

安装完成后终端会显示面板地址和登录用户名密码
面板初始信息

注意终端关闭后,可以连接 VPS 再输入 bt 14 获取登录信息,但是不能获取初始密码,只能输入 bt 5 重置密码


三、调教宝塔

浏览器输入刚才的宝塔面板地址,进入宝塔页面

默认是没有部署环境的,所以宝塔会推荐你部署需要的环境,生产环境建议用编译安装(需要耐心等待)。
安装环境

1. 按需关闭功能

关闭客服

左侧栏付费功能


!!Docker 不是付费功能,只是个人没用到

回收站

个人不喜欢回收站功能
在这里插入图片描述

2. 修复风险

写了个自用的脚本,可以搞定大部分宝塔推荐修复的风险,
!仅在 CentOS 7.9 下测试通过,按需修改。

#!/bin/bash

# 更新软件包
echo "正在更新软件包..."
sudo yum update -y

# 安装 bash-completion
echo "正在安装 bash-completion..."
sudo yum install -y bash-completion

# 确认安装完成
if [ $? -eq 0 ]; then
    echo "bash-completion 安装成功"
else
    echo "bash-completion 安装失败"
fi

# 修改 SSH 配置文件
SSHD_CONFIG="/etc/ssh/sshd_config"

echo "正在修改 $SSHD_CONFIG 文件..."

# 备份原始的sshd_config文件
sudo cp $SSHD_CONFIG ${SSHD_CONFIG}.bak

# 设置 TCPKeepAlive、ClientAliveInterval、ClientAliveCountMax 和 Protocol
sudo sed -i '/^#*TCPKeepAlive/c\TCPKeepAlive yes' $SSHD_CONFIG
sudo sed -i '/^#*ClientAliveInterval/c\ClientAliveInterval 600' $SSHD_CONFIG
sudo sed -i '/^#*ClientAliveCountMax/c\ClientAliveCountMax 36' $SSHD_CONFIG

# 如果 Protocol 2 不存在,则添加
if ! grep -q "^Protocol 2" $SSHD_CONFIG; then
    echo "Protocol 2" | sudo tee -a $SSHD_CONFIG
fi

# 检查配置是否成功写入
grep -q "^TCPKeepAlive yes" $SSHD_CONFIG && echo "TCPKeepAlive 修改成功" || echo "TCPKeepAlive 修改失败"
grep -q "^ClientAliveInterval 600" $SSHD_CONFIG && echo "ClientAliveInterval 修改成功" || echo "ClientAliveInterval 修改失败"
grep -q "^ClientAliveCountMax 36" $SSHD_CONFIG && echo "ClientAliveCountMax 修改成功" || echo "ClientAliveCountMax 修改失败"
grep -q "^Protocol 2" $SSHD_CONFIG && echo "Protocol 修改成功" || echo "Protocol 修改失败"

# 修改 /etc/security/pwquality.conf 文件
echo "正在修改 /etc/security/pwquality.conf 文件..."
sudo sed -i '/^#\s*minclass\s*=\s*/c\minclass = 3' /etc/security/pwquality.conf

# 修改 /etc/login.defs 文件并设置 root 密码失效时间
echo "正在修改 /etc/login.defs 文件..."
sudo sed -i '/^#*PASS_MIN_DAYS/c\PASS_MIN_DAYS 7' /etc/login.defs
sudo chage --mindays 7 root

# 备份并修改 /etc/pam.d/system-auth 文件
echo "正在备份并修改 /etc/pam.d/system-auth 文件..."
sudo cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
sudo sed -i '/^password\s\+sufficient\s\+pam_unix.so/ s/$/ remember=3/' /etc/pam.d/system-auth

# 去除 suid 权限
echo "正在去除 suid 权限..."
for file in /usr/bin/chage /usr/bin/gpasswd /usr/bin/chfn /usr/bin/chsh /usr/bin/newgrp /usr/sbin/usernetctl /bin/mount /bin/umount; do
    sudo chmod u-s $file
done

# 去除 sgid 权限
echo "正在去除 sgid 权限..."
for file in /usr/bin/wall /usr/bin/write /sbin/netreport; do
    sudo chmod g-s $file
done

# 设置 grub 配置文件权限
if [ -f /boot/grub2/grub.cfg ]; then
    echo "正在设置 /boot/grub2/grub.cfg 文件权限..."
    sudo chmod 600 /boot/grub2/grub.cfg
    sudo chown root /boot/grub2/grub.cfg
elif [ -f /boot/grub/grub.cfg ]; then
    echo "正在设置 /boot/grub/grub.cfg 文件权限..."
    sudo chmod 600 /boot/grub/grub.cfg
    sudo chown root /boot/grub/grub.cfg
else
    echo "未找到 grub 配置文件"
fi

# 修改 /etc/ssh/sshd_config 文件以设置 LoginGraceTime
echo "正在修改 /etc/ssh/sshd_config 文件以设置 LoginGraceTime..."
sudo sed -i '/^#*LoginGraceTime/c\LoginGraceTime 60' $SSHD_CONFIG

# 在 /etc/sysctl.conf 文件中添加 net.ipv4.tcp_syncookies=1
echo "正在修改 /etc/sysctl.conf 文件..."
if ! grep -q "^net.ipv4.tcp_syncookies=1" /etc/sysctl.conf; then
    echo "net.ipv4.tcp_syncookies=1" | sudo tee -a /etc/sysctl.conf
fi
sudo sysctl -p

# 在 /etc/pam.d/su 文件中取消注释并修改 auth required pam_wheel.so
echo "正在修改 /etc/pam.d/su 文件..."
sudo sed -i 's/^#auth\s\+required\s\+pam_wheel.so\s\+use_uid/auth required pam_wheel.so use_uid/' /etc/pam.d/su

# 检查 /www/server/pure-ftpd/etc/pure-ftpd.conf 文件是否存在并修改 Umask
PURE_FTPD_CONFIG="/www/server/pure-ftpd/etc/pure-ftpd.conf"

if [ -f "$PURE_FTPD_CONFIG" ]; then
    echo "正在修改 $PURE_FTPD_CONFIG 文件中的 Umask..."
    sudo sed -i '/^Umask\s*133:022/c\Umask 177:077' $PURE_FTPD_CONFIG
else
    echo "$PURE_FTPD_CONFIG 文件不存在,跳过 Umask 修改"
fi

# 检查 /etc/profile 文件是否存在并添加 TMOUT=600
PROFILE_FILE="/etc/profile"

if [ -f "$PROFILE_FILE" ]; then
    echo "在 $PROFILE_FILE 文件中添加 TMOUT=600..."
    if ! grep -q "^TMOUT=600" $PROFILE_FILE; then
        echo "TMOUT=600" | sudo tee -a $PROFILE_FILE
        source $PROFILE_FILE
    else
        echo "TMOUT=600 已存在于 $PROFILE_FILE 文件中"
    fi
else
    echo "$PROFILE_FILE 文件不存在,跳过 TMOUT=600 添加"
fi

# 重启 SSH 服务以应用更改
echo "正在重启 sshd 服务..."
sudo systemctl restart sshd

if [ $? -eq 0 ]; then
    echo "sshd 服务重启成功"
else
    echo "sshd 服务重启失败"
    exit 1
fi

echo "所有操作完成"

如果需要让终端保活则:

ClientAliveInterval 180
ClientAliveCountMax 120

然后忽略宝塔的风险提示即可。

3. 去除广告

首页推荐插件

转到文件 /www/server/panel/BTPanel/static/vite/js/index2.js,搜索 getRecommendInfo
将函数体注释然后保存。如图所示:
去除首页推荐插件

首页底部横幅广告

转到文件 /www/server/panel/BTPanel/static/vite/js/index19.js ,搜索 HOME-RECOMMEND-HIDE-TIME
v=()=>{} 函数体注释,并加上 p.value = false 然后保存,如图所示:
去除底部横幅广告

注意:文件名可能存在差异,但搜索的方法万变不离其宗。如果文件名和你的宝塔版本对应不上,可以按照以下方法进行搜索对应的关键字:
搜索
搜索结果

温馨提示:结果可以排除 legacy 结尾的文件,出现多个结果的用肉眼去对比一下上面截图里的内容即可

然后重启面板看效果
重启面板

四、插件推荐

1. Nginx免费防火墙

2. Fail2ban

五、结语

嫌麻烦可以直接开企业版,一劳永逸
Money 可以解决 99.9% 的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

buffcow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值