分类: BT/AMH/1Panel/OneStack/AAPanel

宝塔,AMH,1panel,OneStack,aapanel,cyberpanel等国内外一键环境脚本讨论

  • AMH, BT , 1Panel , CyberPanel 等等,常用面板怎么选

    AMH, BT , 1Panel , CyberPanel 等等,常用面板怎么选

    经常会有人问,应该选哪个面板这样的问题。比如说

    • 只想搭建一个博客,面板选哪个
    • 想放个探针,用什么面板?
    • 想做个小说站,电影站,漫画站,用什么面板
    • 想做个x站,用什么面板?

    今天,抽时间写一篇文章,来从几个角度分析一下面板应该怎么选。

    做站的方向

    毫无疑问,你做站的方向,最大程度决定了你用什么面板。

    你是做一个正规的博客站,想图个方便。

    那么推荐 BT ,宝塔在使用简易这方便,没有其它面板可以相比。

    但是你又不想认证手机号,不想把服务器信息上报给别人。

    那么推荐 amh,1panel。上手快,不用实名。

    国产面板还是不放心?

    那试试CyberPanel吧。也不错。

    做站的语言

    如果是跑的PHP,那么 AMH,BT,1Panel,CyberPanel 都是可以的。

    可是,如果源码是 NodeJS,Python,Java,Go什么的呢?

    很多新手觉得BT好像后台都支持哦? 其实不然。 NodeJS,Go 基本都是一个脚本,所以就算你用的 AMH,1Panel,CyberPanel,只需要通过反代到相应的端口就可以了。

    操作上BT方便的无非是宝塔给你安装一个Go,Python,NodeJS环境而已,但关键是宝塔安装的这些环境问题多多,用还不如不用。 面板上搞上这些语言环境的支持,更多是个噱头。

    所以,如果你是因为宝塔支持的语言环境多,而使用宝塔,大可不必。

    资源的占用

    BT

    宝塔为了小白用户的易用性,作出了很多性能上的牺牲,而且会定期向bt.cn上报你的信息,收集信息也是资源占用的一部分。所以,如果考虑性能,不建议使用宝塔。

    AMH

    AMH虽然使用起来不是很方便,但是性能上来说还是不错的,占用较低。

    1Panel

    1Panel大量使用Docker,包括提供了很多Docker的预装程序,这样,有利也有弊。如果,安装一个Flarum,1Panel可以很快的安装 ,但是,安装完,你是打不开的。因为config.php文件是有问题的。但是很多人不知道怎么改。然后,备份 ,文件的修改。等等,都是很麻烦的事情。 属于那种上手容易,后期头大的东西。 但是,如果你只是测试应用等,1panel还是不错的。

    CyberPanel

    CyberPanel是一个国外的多用户的面板,其实是开空间的。类似于 cpanel 什么的。但是CyberPanel是免费的,而且默认还是结合 OpenLiteSpeed 使用。OpenLitSpeed 是一款高性能的 web 应用服务器,类似于 nginx ,apche。当OLS结果 LSC(litespeedcache)使用时,会让wordpress达到一个非常非常高的提供,参考(https://www.wucuoym.com 使用了 LSC),所以大量的wordpress玩家使用OLS促进了 OLS的飞速发展。
    说这么多,还是说CyberPanel的效率相对来说是非常不错的。

    安全

    这应该是重中之重。BT俗称bug塔。本身代码质量不高,又因为使用简单导致用户基数比较高,用户基数高导致研究bt的黑客也比较多。所以BT相对来说是最危险的。
    AMH是一个完全开源的产品,虽然官方的开源代码不知道藏在哪个犄角旮沓,但这也导致AMH暴露出来的漏洞比较少。
    1Panel目前来说用户基数不大,所以暴露出来的问题也不多。
    CyberPanel国外基数较大,所以也会经常爆出来一些漏洞,但总的来说没有致命问题。

    总结

    我想,综上所述。
    如果只图简单,不怕监控,那就宝塔吧,但要及时更新补丁。
    如果想使用OLS,那么使用 CyberPanel吧。
    如果用Docker比较多,那么使用 1Panel吧。
    如果以上都不是,可以试试 AMH,虽然繁琐一点,但谁没事天天上面板呢?要记住面板仅是辅助工具。

    最后一个建议,不管使用什么面板。使用完后,把面板完全关闭。只保留 nginx,php,mysql等服务即可。
    这样,即使面板有漏洞,也影响不到你。

    各面板关闭面板命令

    宝塔

    bt 2

    AMH

    amh stop

    1Panel

    1pctl stop

    CyberPanel

    systemctl stop lscpd

    完结。 

  • 使用Certbot申请免费 HTTPS 证书及自动续期

    使用Certbot申请免费 HTTPS 证书及自动续期

    随着各个脚本的安全性越来越差,越来越多的我倾向于自行编译lnmp环境。但自行编译环境申请SSL证书一直是个问题,今天给大家介绍一个好用的工具:CertBot来实现证书的申请及自动续期。

    以下所有操作均运行在 Debian服务器。本机环境是Debian12

    首先,我们要安装 Snapd

    su root
    apt update
    apt install snapd

    安装Snapd-core

    sudo snap install core

    安装CertBot

    sudo snap install --classic certbot

    链接CertBot到/usr/bin目录

    sudo ln -s /snap/bin/certbot /usr/bin/certbot

    给nginx环境安装证书,指定nginx的conf目录和nginx的执行目录,配置证书是自动完成的。

    certbot --nginx --nginx-server-root=/usr/local/nginx/conf --nginx-ctl=/usr/local/nginx/sbin/nginx

    以下是自动申请证书的输出结果,中间需要输入邮箱及一些确认。

    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Enter email address (used for urgent renewal and security notices)
     (Enter 'c' to cancel): admin@1stcache.com
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please read the Terms of Service at
    https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
    agree in order to register with the ACME server. Do you agree?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (Y)es/(N)o: y    
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Would you be willing, once your first certificate is successfully issued, to
    share your email address with the Electronic Frontier Foundation, a founding
    partner of the Let's Encrypt project and the non-profit organization that
    develops Certbot? We'd like to send you email about our work encrypting the web,
    EFF news, campaigns, and ways to support digital freedom.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (Y)es/(N)o: y
    Account registered.
    
    Which names would you like to activate HTTPS for?
    We recommend selecting either all domains, or all domains in a VirtualHost/server block.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: oss.1stcache.com
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate numbers separated by commas and/or spaces, or leave input
    blank to select all options shown (Enter 'c' to cancel): 1
    Requesting a certificate for oss.1stcache.com
    
    Successfully received certificate.
    Certificate is saved at: /etc/letsencrypt/live/oss.1stcache.com/fullchain.pem
    Key is saved at:         /etc/letsencrypt/live/oss.1stcache.com/privkey.pem
    This certificate expires on 2024-02-14.
    These files will be updated when the certificate renews.
    Certbot has set up a scheduled task to automatically renew this certificate in the background.
    
    Deploying certificate
    Successfully deployed certificate for oss.1stcache.com to /usr/local/nginx/conf/nginx.conf
    Congratulations! You have successfully enabled HTTPS on https://oss.1stcache.com
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    If you like Certbot, please consider supporting our work by:
     * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
     * Donating to EFF:                    https://eff.org/donate-le
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    root@sweaty-balance:/usr/local/nginx# 

    现在再使用https来访问我们的网站,发现已经大功告成了。

    别急,我们需要全自动续期呢。

    sudo certbot renew --dry-run

    这个命令会帮我们自动续期,现在才算ok了。

    /etc/crontab/
    /etc/cron.*/*
    systemctl list-timers

    查看以上目录确认续期ok。

    整个流程其实非常简单。脱离面板其实也没有那么难。

  • 宝塔强化WAF防护-开启5秒盾-轻松防CC攻击!

    宝塔强化WAF防护-开启5秒盾-轻松防CC攻击!

    众所周知,宝塔面板有商用的Nginx防火墙插件(要钱),具有丰富的WAF(Web Application Firewall)功能,但是其防CC能力在面对攻击时形同虚设,使用简单的CC工具就可以轻松实现503 Page。而较老的httpguard、ngx_lua_waf等均已年久失修。偶然间在Github上发现了ngx_waf后折腾了一下发现确实不错。

    NGX_WAF简介

    方便且高性能的 Nginx 防火墙模块。(以下内容来自原项目介绍)

    为什么选择 ngx_waf

    功能齐全:「网络应用防火墙」的基本功能都有。

    安装方便:大多数情况下你可以直接下载使用预构建的模块,而不是编译代码。

    使用方便:配置指令简单易懂,不用看文档都能猜到大概是什么意思。

    规则灵活:提供高级规则,将动作(如拦截或放行)和多个条件表达式组合起来。

    高性能:经过较为极限的测试,启动本模块后 RPS(每秒请求数) 降低约 4%。测试说明和结果见使用文档。

    功能

    SQL 注入防护(Powered By libinjection)。

    XSS 攻击防护(Powered By libinjection)。

    支持 IPV4 和 IPV6。

    CC 防御,超出限制后自动拉黑对应 IP 一段时间。

    IP 黑白名单,同时支持类似 192.168.0.0/16 和 fe80::/10,即支持点分十进制和冒号十六进制表示法和网段划分。

    POST 黑名单。

    URL 黑白名单

    查询字符串(Query String)黑名单。

    UserAgent 黑名单。

    Cookie 黑名单。

    Referer 黑白名单。

    高级规则,将动作(如拦截或放行)和多个条件表达式组合起来。

    相关链接

    使用文档:https://docs.addesp.com/ngx_waf/zh-cn/
    GitHub:https://github.com/ADD-SP/ngx_waf

    总结

    一个用C构建的高效率Nginx防火墙,开发者积极维护(在写稿的时候就更新了3个版本导致不得不反复修改),并且支持开启5秒盾,实测抗CC性能优秀!

    安装

    以下内容源于官方文档和自己的折腾记录,仅供参考!

    环境

    CentOS 7

    Nginx 1.21.0

    宝塔 7.6.0

    ngx_waf v7.0.0 Current

    如果您的环境与我相同,以下安装指令可以照抄,反之请自行检查相关指令。

    安装过程

    首先创建临时的工作目录,并将项目拷贝到本地。

    mkdir /root/nginx #临时工作目录,这个在后面会用到

    cd /root/nginx
    git clone https://github.com/ADD-SP/ngx_waf.git #获取最新版本的ngx_waf,也可以直接去Release找以往的版本
    cd ngx_waf
    git clone https://github.com/libinjection/libinjection.git inc/libinjection

    nginx 提供两种安装模块的方式,即「静态链接」和「动态加载」,通过两种方式安装的模块也分别称为「静态模块」和「动态模块」。

    你可以通过运行脚本 assets/guide.sh 来选择使用静态模块还是动态模块。

    sh assets/guide.sh

    # It is recommended that you use dynamic modules.

    # 如果输出上面这行则建议使用动态模块。

    # It is recommended that you use static modules.

    # 如果输出上面这行则建议使用静态模块。

    在宝塔环境下得到的推荐是静态模块,实际在折腾过文章介绍的动态模块后均会出现奇怪的错误,于是在后文介绍的是静态模块安装。

    到这一步我们需要开始进行编译,这里可能会涉及各种依赖问题如gcc等,由于不同环境的依赖问题不一样,这里就不再赘述,请自行通过搜索引擎解决。

    在搞定依赖问题后需要获取当前nginx的configure 脚本的参数,在宝塔环境下输入以下指令即可获得。

    /www/server/nginx/sbin/nginx -V

    得到以下内容,这里将configure arguments: 后面的内容记录下来,并在结尾加上–add-module=/usr/local/src/ngx_waf即可得到编译参数。如果您使用的编译器是 GCC,请在 –with-cc-opt 中追加 -fstack-protector-strong, 例如 –with-cc-opt=’-Werror -g’ —> –with-cc-opt=’-Werror -g -fstack-protector-strong’。

    nginx version: nginx/1.21.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
    built with OpenSSL 1.1.1k 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-cc-opt=-std=gnu99

    接下来开始编译ngx_waf模块与nginx,以下代码会用到上述处理好的编译参数。

    cd /root/nginx/ngx_waf

    make

    cd /www/server/nginx/src

    ./configure –user=www –group=www –prefix=/www/server/nginx –add-module=/www/server/nginx/src/ngx_devel_kit –add-module=/www/server/nginx/src/lua_nginx_module –add-module=/www/server/nginx/src/ngx_cache_purge –add-module=/www/server/nginx/src/nginx-sticky-module –with-openssl=/www/server/nginx/src/openssl –with-pcre=pcre-8.43 –with-http_v2_module –with-stream –with-stream_ssl_module –with-stream_ssl_preread_module –with-http_stub_status_module –with-http_ssl_module –with-http_image_filter_module –with-http_gzip_static_module –with-http_gunzip_module –with-ipv6 –with-http_sub_module –with-http_flv_module –with-http_addition_module –with-http_realip_module –with-http_mp4_module –with-ld-opt=-Wl,-E –with-cc-opt=-Wno-error –with-ld-opt=-ljemalloc –with-http_dav_module –add-module=/www/server/nginx/src/nginx-dav-ext-module –add-module=/root/nginx/ngx_waf –with-cc-opt=’-std=gnu99′

    make

    mv ../sbin/nginx ../sbin/nginx.bak

    cp ./objs/nginx ../sbin/nginx

    chmod +x /www/server/nginx/sbin/nginx

    到这里就已经替换原有的Nginx程序,接下来在宝塔中启动Nginx即可!

    若您出现如下报错:

    nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok

    nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

    则需要先卸载宝塔的Nginx防火墙再重新安装!
    到此为止,安装与编译结束。

    配置

    在安装完成后我们可以将配置文件加入单个站点的配置文件中以实现未不同网站定制不同的规则,配置填写位置如图:

    图片[1]-宝塔强化WAF防护-开启5秒盾-轻松防CC攻击!

    以下介绍我的配置,内容并不完善,各参数与各模块具体功能请详见参考文档!

    waf on; # 是否启用模块

    waf_rule_path /root/nginx/ngx_waf/assets/rules/; # 模块规则

    waf_mode DYNAMIC; # 启用动态网站模式

    waf_cache capacity=100; # 设置缓存规则检查结果相关的参数,过小会导致频繁地淘汰缓存,增加内存碎片,降低性能

    waf_under_attack on file=/www/wwwroot/defence.html; # 对所有访问的用户开启5秒盾,file需要填写单个html的绝对路径!请仅在网站遭受大量攻击的时候打开!其中该html的作用为5秒之后刷新页面!

    waf_cc_deny rate=300r/m duration=10m size=20m; #每分钟请求大于300次则封禁10分钟,最多缓存20M大小的请求记录

    如果使用CDN或负载均衡等反向代理程序,为获取真实的客户IP地址,需要用到http_realip_module,宝塔的Nginx已经默认编译该模块。此时我们需要在配置文件中加入:

    set_real_ip_from 0.0.0.0/0; #CDN节点的IP段,此项可多次申明,请根据实际情况填写,照抄危险!

    real_ip_header X-Forwarded-For;

    以上提到了用于5秒盾跳转的HTML页面,以下是我自己的一个版本,仅供参考。

    图片[2]-宝塔强化WAF防护-开启5秒盾-轻松防CC攻击!

    <!DOCTYPE html>

    <head>

    <meta charset=”utf-8″>

    <meta name=”viewport” content=”width=device-width, initial-scale=1″>

    <title>正在检查您的浏览器…</title>

    <link href=”https://www.afxw5.com/666666/meihua/css?family=Kanit:200″ rel=”stylesheet”>

    <style type=”text/css”>

    *{-webkit-box-sizing:border-box;box-sizing:border-box}body{padding:0;margin:0}#defence{position:relative;height:100vh}#defence .defence{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.defence{max-width:767px;width:100%;line-height:1.4;text-align:center;padding:15px}.defence .defence-404{position:relative;height:220px}.defence .defence-404 h1{font-family:Kanit,sans-serif;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:186px;font-weight:200;margin:0;background:linear-gradient(130deg,#ffa34f,#ff6f68);color:transparent;-webkit-background-clip:text;background-clip:text;text-transform:uppercase}.defence h2{font-family:Kanit,sans-serif;font-size:33px;font-weight:200;text-transform:uppercase;margin-top:0;margin-bottom:25px;letter-spacing:3px}.defence p{font-family:Kanit,sans-serif;font-size:16px;font-weight:200;margin-top:0;margin-bottom:25px}.defence a{font-family:Kanit,sans-serif;color:#ff6f68;font-weight:200;text-decoration:none;border-bottom:1px dashed #ff6f68;border-radius:2px}.defence-social>a{display:inline-block;height:40px;line-height:40px;width:40px;font-size:14px;color:#ff6f68;border:1px solid #efefef;border-radius:50%;margin:3px;-webkit-transition:.2s all;transition:.2s all}.defence-social>a:hover{color:#fff;background-color:#ff6f68;border-color:#ff6f68}@media only screen and (max-width:480px){.defence .defence-404{position:relative;height:168px}.defence .defence-404 h1{font-size:142px}.defence h2{font-size:22px}}

    </style>

    <script type=”text/javascript”>

    setTimeout(“window.location.reload();”,”6000″);

    </script>

    </head>

    <body>

    <div id=”defence”>

    <div class=”defence”>

    <div class=”defence-404″>

    <h1>OOPS!</h1>

    </div>

    <h2>站点正在被攻击!您的请求正在接受检查…</h2>

    <p>请给我们一些时间,您马上就会回到站点,这会很快~</p>

    </div>

    </div>

    </body>

    </html>

    将以上内容保存到/www/wwwroot/defence.html即可。

    测试

    访问 /www.bak,如果返回 403 状态码则表示模块成功启动。

    结语

    至此ngx_waf模块安装结束,在配置好一定的防御策略之后可以获得不错的防御能力。其实跟云锁的部署差不多。

  • 宝塔8.01离线版 本地版 全功能版 下载

    基于https://github.com/flucont/btcloud/releases/tag/1.9

    只有运行环境本地化,收费插件本地化自己弄,而且只有编译安装本地化,极速安装本地化也没弄,自己去public/install/1和public/install/4弄

    public/install/0和public/install/4 已经好了

    收费插件怎么下载直接看https://github.com/flucont/btcloud/releases/tag/1.9,只能提示到这里了,然后自己本地化

    ,解压到public ,全部替换public文件下的文件,再替换966333.xyz为你自己的域名,包括压缩包panel6.zip。

    Centos安装脚本:yum install -y wget && wget -O install.sh https://域名/install/install_6.0.sh && sh install.sh

    Ubuntu/Deepin安装脚本 wget -O install.sh https://域名/install/install-ubuntu_6.0.sh && sudo bash install.sh

    万能安装脚本 if [ -f /usr/bin/curl ];then curl -sSO https://域名/install/install_panel.sh;else wget -O install_panel.sh https://域名/install/install_panel.sh;fi;bash install_panel.sh

  • 通过宝塔面板实现多端口建站与SG11解密

    通过宝塔面板实现多端口建站与SG11解密

    实践过程

    通过宝塔面板搭建网站

    说明 

    因为篇幅原因,在这里只写几个主要的小问题,也是我在之前第一次搭建过程中遇到的问题,具体搭建教程网上都有。

    • 在安装宝塔面板之前,请注意将云服务器的操作系统更换为 CentOS操作系统,因为我在初始配置中选的默认系统,结果不知何种原因,在安装宝塔面板后,无法安装Web服务器(Nginx)。3
    • 记得一定要在安全组配置里开放宝塔面板的端口(8888),否则打不开,也可以把其他常用端口打开。4
    • 小技巧:如何在没有域名及二级域名的情况下,通过不同的IP端口来实现访问不同的网站内容?
      1. 添加站点,随便输入一个域名(例:aliyun.com),创建数据库,提交。5
      2. 在设置-域名管理,添加域名(格式:IP:端口号)(ps:端口号尽量避开常用端口),然后添加,如下图。6添加成功,可以把之前的那个删掉。7
      3. 在安全组/防火墙中,开放上一步添加的端口号,只有配置了端口号,我们才能打开网站。8
      4. 在浏览器输入地址,网站创建成功。按照这样的步骤,我们就可以创建不同的IP端口地址进入不同的网站了。9

    SG11解密

    What?

    • Source Guardian,一种PHP加密器,可以说是目前最好的加密方式了,多用于保护源代码不被盗取倒卖。
    • 它的代码特征是文件中包含:sg_load(
    • 搜索后,发现这类SG11解密方面的教程非常少,几乎没有。但也能看到有一些Decoder提供解密服务,价格基本在100-200元/文件。价格之贵,足以说明它的保密性了。

    Why?

    因为最近买了一个源码,部分文件就是用SG11加密的,很想尝试给它破解了。(仅用于学习)

    How?

    结果国内SG11解密教程非常少,找了许久,才找到一个只有四小节的视频课程,这里就不放视频了,还有在外国网站上看到的 SG11解密教程,之后都会在无错源码上单独发出来。

    那么具体是怎么做的呢?

    1. 首先需要下载vld(PHP的扩展),然后把它上传到ECS服务器中,并解压。说明 什么是vld?是一个PHP扩展,它可以查看PHP程序的opcode,也就是操作码。10
    2. 通过一系列配置(配置较多,就不放在这了),安装成功。11
    3. 简单操作:将一个简单加密文件解密。
      1. 先写一个php文件,例如:Helloworld!12
      2. 输入命令php -dvld.avtive=1 index.php,然后就能看到它的操作码op。13
      3. 再来给index.php文件进行SG11加密。结果如下图。14
      4. 再次输入命令php -dvld.avtive=1 index.php ,如下图。15

    以上是我使用vld对SG11加密文件解码的一个基本操作,具体解密还需要一定的操作码知识和PHP知识,利用操作码对PHP文件进行逆向解密。

  • 宝塔7.9开心版安装

    安装

    wget -O install.sh http://download.bt.sy/ltd/install/install-ubuntu_6.0.sh && sudo bash install.sh
    ShellScript

    升级到7.9

    curl https://io.bt.sy/install/update_panel.sh|bash
    ShellScript

    如果遇到不能安装请手动制定hosts

    206.119.73.11  io.bt.sy  download.bt.sy  api.bt.sy  cloud.bt.sy  auth.bt.sy  poi.bt.sy  io.bt.sy
    ShellScript