---
layout: post
title: 从宝塔面板中学习运维知识
tags: [宝塔, 运维]
---

  用Python代码的程序就等着被抄吧！<!--more-->    

# 起因
  之前我[用旧电脑拼了一堆服务器](/2024/04/06/old-pc.html)，但是上面装的东西其实试完之后就没什么兴趣了，主要是它们实际上没有解决什么问题。后来我觉得还是更应该向更有意义的地方靠，于是我就在每个机器上安装了不同的运维面板，打算分别测试一下效果。   
  我安装的面板有[1Panel](https://github.com/1Panel-dev/1Panel)，[小皮面板公测版](https://beta.xp.cn/)，[宝塔面板破解版](https://baota.sbs/)。1Panel很不错，但是除了网站管理之外功能全是Docker带来的，另外代码是Go写的我现在还看不懂。小皮面板重构之后很令我失望，功能比旧版小皮面板还少，安装的时候居然还会收集服务器信息并上传？运行环境版本少，PHP连扩展安装的功能都没有，而且现在直接摆烂全放的是配置文件，要是都自己改配置文件了还要面板干啥？另外重构之后也变成Go写的了，就这样拿什么和别的面板打？   
  宝塔面板破解版之前我在[测试Koyeb](/2022/11/29/free-server.html)的时候试过一个，不过后来看到了一个新的，主要是之前那个界面上改的全是的广告，新找的这个破解版不仅界面没有做什么修改，而且[后端开源](https://github.com/flucont/btcloud)，也不用担心有什么后门。   
  虽然我不信任宝塔面板，毕竟漏洞出的多，各种收费项目，还各种收集用户信息，强制登录啥的，但是有一个好处就是它是Python写的，而且大多数代码并没有混淆（代码倒是[开源](https://github.com/aaPanel)了，就是没更新）。作为一款算是比较成熟的面板，有些功能还是比较有意思的，而且我也能看懂Python代码，所以有些有意思的功能就可以看看它的代码是如何实现的。   

# 功能探索与解析
  对于免费版有的功能，其实我不太关心，一是那些大多数并不复杂，自己装也没什么难度，二是大多功能其实我并不感兴趣🤣。对于付费功能不得不说有的还挺离谱的，有些非常简单的功能价格居然很贵，比如服务器网络加速BBR，这个功能是内核提供的，自己一个命令就能打开，和宝塔半毛钱关系都没有，价格居然是4.93元/天？不过我没用过官网下的宝塔，不知道是破解版乱标还是真是这个价格。   
  另外还有一些是纯粹解析类的也没什么意思，比如网站监控报表还有WAF啥的，那些没什么技巧，就只是只要肯写这个功能就会有的东西。我的话更关心一些看起来实现还算难，值得收钱，但是实现其实很简单的东西😁。   
## 宝塔防入侵
  其实对于这个功能，我觉得实现应该不复杂，用SELinux或者AppArmor然后进行合理的配置应该就可以了，但是离谱的是开了这个功能我安装Redis等软件的时候各种报错，用宝塔安装Redis是通过编译安装的，正常来说不应该报错才对的啊，而且就算用了SELinux或者AppArmor也不应该有问题，另外它的报错是Segmentation fault，什么情况编译会报这种错误啊……所以我看了看它的代码，原来他们的实现根本没有用SELinux或者AppArmor，可能一是配置复杂，他们的程序员驾驭不了，二是Ubuntu和红帽系不一定都有安SELinux或者AppArmor，适配起来比较麻烦。他们用的居然是一个不知名的开源软件：[Snoopy](https://github.com/a2o/snoopy)，原理也很简单，就是在环境变量里配置在运行任意软件的时候把Snoopy先加载进去，然后它就能记录程序运行时的行为了，但显然这个程序并不怎么成熟，运行某些软件的时候居然会报Segmentation fault的错误，这样的东西也好意思收钱？  
## 宝塔系统加固
  其实这个功能没啥特别的，但是我看它有好多关于等保的功能，因为我维护的服务器中也有需要符合等保要求的，所以这个功能对我来说还挺有用，至少可以做个参考。不过里面有些比如对文件或者文件夹的保护这个实现我还挺感兴趣的，正常来说就算拿权限限制也限制不了root，可是这个功能打开之后居然连root都没有权限操作，还是挺神奇的，之后我看了一下代码，原来有一个叫做chattr的东西，用这个可以加扩展权限，比如`chattr +i <file>`就可以让任何人都没有权限操作这个文件，想要操作的话必须执行`chattr -i <file>`解除才行。因为一般都是拿普通权限限制的，从来没考虑过扩展权限，这下学到新知识了😆。
## 文件监控
  这个功能其实也不复杂，之前我写过一个[定时调度器](/2022/09/21/cron.html)，其中的热载功能用的是watchdog，而wathcdog在Linux下其实用的就是inotify特性，宝塔在实现这个东西的时候用的是pyinotify库，其实它俩倒是没什么特别大的区别，只是watchdog能跨平台而已，虽然宝塔面板也有Windows版，不过估计应该是没有这个插件吧。
## 堡塔企业级防篡改
  这个和刚才那个用chattr的从功能上来看倒是挺像的，不过这个写的是内核级，看了一下确实有个内核模块，叫做tempercore，虽然编译是在本地进行的但是代码加了密，编译还得用它文件夹里一个叫jm的程序进行编译😅，我猜它的实现应该是在内核里hook了操作文件的API，操作完之后会进行记录，不过试了一下根本没有起效果😅，不知道是我破解版的问题还是不支持Ubuntu……   
## 堡塔运维平台
  从功能上来看挺像Ansible的，看了一下代码是用paramiko直接在远程服务器上执行命令的。不过Ansible也是Python写的，倒是没差。功能有点太简单了，自己用脚本也能实现，不过提供了个面板可能相对适合小白吧，就是这个价格恐怕只有脑子进水的人才会买了。  

# 总结
  总的看来宝塔确实有些有意思的功能，实现有些挺有意思的，看了他们的代码之后感觉也能学到点东西，也许以后有机会可以用得上。但是完全不值那个价，这点东西也敢卖钱也真是挺厉害的，不过可能对于政府项目来说这些安全功能还是挺有意义的，毕竟没什么运维会去当公务员，而且企业版的价格对他们来说都已经算相当便宜了🤣。   