Joyber 发布的文章

内网穿透 100IP免费
https://www.zerotier.com/

FRP实现(需要绑定映射端口)
https://github.com/fatedier/frp

第一种方案是云服务器+Frp,但是需要单独做端口转发;第二种方案是云服务器+ZeroTier One组件局域网(100节点免费),但是有个问题是ZeroTier One本身的服务器都在国外访问速度很慢。可以通过搭建国内Moon服务加速解决连接慢的问题。

两种方案都需要有固定外网IP的服务器

下面是配置Moon的步骤(Linux):

1、安装 moon,zerotier官方提供了比较方便的安装方式,一条命令即可完成:

curl -s https://install.zerotier.com/ | sudo bash

2.生成moon配置文件

cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
  1. 修改配置文件moon.json,主要是添加公网IP,修改内容如下, 9993是默认端口

    vim moon.json #找到对应行修改内容
    "stableEndpoints": [ "23.23.23.23/9993" ]

    注:23.23.23.23为公网ip, 一定要配置正确,Zerotier依靠此配置去连接moon.后面的端口若没有改变则默认都是9993端口, 且是UDP协议的, 此处在防火墙上需要开放UDP,否则是连接不上Moon

4.生成moon文件

sudo zerotier-idtool genmoon moon.json

执行该命令后,会在在/var/lib/zerotier-one目录下生成一个类似000000xxxxx.moon的文件

5.使moon配置文件生效:

在/var/lib/zerotier-one目录下,新建一个 moons.d 文件夹,并将刚生成的moon配置文件放到该文件夹下

mv 00000018fasd2319.moon moons.d/
  1. 重新启动moon服务器,由于使用命令安装时会自动注册为服务,所以可以依靠以下命令完成启动或重启

    service zerotier-one restart #服务重启命令

    经过以上配置,服务器上的moon即配置并应用完闭.

  2. 客户端连接并使用服务器上的Moon

直接在zerotier目录下,创建moons.d文件夹,并且将生成的000000xxxxxxxx.moon文件拷入,并重启服务即可

环境 centos8,编译方式安装的nginx/1.20.1, php 是dnf安装的php/7.2.24

nginx 执行用户、php 执行用户、文件权限都检查了,确定没有问题

nginx 的php配置也确定没有问题,但就是访问php页面出现 File not found

查看nginx报错内容,看到如下错误:"Primary script unknown"

2021/07/07 20:40:02 [error] 8853#0: *164 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.95, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "192.168.1.69"

最终解决的方法:

#/www/wwwroot/phpwebdir/是我的网站根目录
chcon -R -t httpd_sys_content_t /www/wwwroot/phpwebdir/
chcon -R -t httpd_sys_content_t /www/server/nginx/sbin/nginx 
/www/server/nginx/sbin/nginx -s reload

原因是selinux 在作祟,如上命令是配置 网站目录和nginx执行文件的 selinux 上下文
具体selinux这个安全机制至今还没有搞明白咋玩
用以下命令可以查看文件或目录的上下文

ll -dZ /www/wwwroot/phpwebdir/

修改之前是

drwxrw-rw-. 7 www www unconfined_u:object_r:admin_home_t:s0 4096 Jul  7 20:28 /www/wwwroot/phpwebdir/

修改之后是

drwxrw-rw-. 7 www www unconfined_u:object_r:httpd_sys_content_t:s0 4096 Jul  7 20:28 /www/wwwroot/phpwebdir/

或者干脆关闭selinux(需要重启服务器)
/etc/selinux/config :

SELINUX=disabled

本文环境:centos8
安装包下载:

wget https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.4/modsecurity-2.9.4.tar.gz
wget https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v1.0.2/modsecurity-nginx-v1.0.2.tar.gz
wget https://github.com/libgd/libgd/releases/download/gd-2.3.2/libgd-2.3.2.tar.gz
wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/refs/tags/v3.2.0.tar.gz

如果要使用代理的话可以加这个参数:
wget -e use_proxy=yes -e https_proxy=192.168.1.100:7890 downurl

依赖项安装

yum install libtool
yum install zlib zlib-devel openssl openssl-devel  pcre pcre-devel
yum install httpd-devel apr apr-util-devel apr-devel  pcre pcre-devel  libxml2 libxml2-devel

安装:
#modsecurity安装

tar zxvf modsecurity-2.9.4.tar.gz
cd modsecurity-2.9.4
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make && make install

#gd库安装

tar zxvf libgd-2.3.2.tar.gz
cd libgd-2.3.2
./configure
mask && make install

#nginx安装,参照了bt的nginx安装参数

tar zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --user=www --group=www --prefix=/www/server/nginx --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-http_dav_module --add-module=/root/modsecurity-2.9.4/nginx/modsecurity/

#modsecurityf规则配置(owasp-modsecurity-crs)

mkdir /www/server/nginx/conf/modsecurity

tar zxvf owasp-modsecurity-crs-3.2.0.tar.gz 
cd owasp-modsecurity-crs-3.2.0/
cp crs-setup.conf.example /www/server/nginx/conf/modsecurity/crs-setup.conf
cp rules/ util/ /www/server/nginx/conf/modsecurity/ -r

cd modsecurity-2.9.4/
cp modsecurity.conf-recommended /www/server/nginx/conf/modsecurity/modsecurity.conf
cp unicode.mapping /www/server/nginx/conf/modsecurity/

cd /www/server/nginx/conf/modsecurity/

vim /www/server/nginx/conf/modsecurity/modsecurity.conf

//默认值为DetectOnly 即为观察模式,建议大家在安装时先默认使用这个模式,观察一段时间,看是否对网站、服务器有某些不可知的影响
#SecRuleEngine DetectionOnly
SecRuleEngine On
#是文件最后加入下面两行
Include crs-setup.conf
Include rules/*.conf
#虽然规则很牛B,但不一定都符合线上产生的业务,建议只引入具体最核心最重要的规则或者开始观察模式,以免业务出现问题

#测试是否可以正常使用,配置nginx.conf,在server {} 中添加配置

server {
    ...
    ModSecurityEnabled on;
    ModSecurityConfig modsecurity/modsecurity.conf;
    ...
}

访问 127.0.0.1 正常显示 nginx的欢迎使用页面
访问 127.0.0.1/?eval( 如果得到403拒绝访问,则表示请求被拦截了,符合预期

对于系统的所有用户,通过/etc/wgetrc或 仅对于具有~/.wgetrc文件的用户:

use_proxy=yes
http_proxy=127.0.0.1:8080
https_proxy=127.0.0.1:8080

或通过-e放置在 URL 之后的选项:

wget ... -e use_proxy=yes -e http_proxy=127.0.0.1:8080 ...

也可以这样:
在命令行中输入:

$ export http_proxy=http://proxy_host:proxy_port

对于经过身份验证的代理,

$ export http_proxy=http://username:password@proxy_host:proxy_port

然后运行

$ wget fileurl

对于 https,只需使用 https_proxy 而不是 http_proxy。你也可以把这些行放在你的 ~/.bashrc 文件中,这样你就不需要每次都执行它。

本文只是工作中的一些经验记录,如果你也有相关的经验补充,可以留言,稍候将更新到文章里,谢谢

查看目录的大小快捷命令(别名)

alias dirsize='du -h --max-depth=1'
#执行以上命令,然后下面命令就可以使用 dirsize 快捷查看当前目录大小了,也可以 加目录路径
#下次重启自动添加命令别名可以 把这个命令可以添加到~/.bashrc 里面

CENTOS系统:

journal 垃圾日志清理
CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal
systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。

#查看占用了多大空间
journalctl --disk-usage
#删除日志文件,一般一个文件8M左右,使用以下命令清理这些日志文件
journalctl --vacuum-size=10M

#journalctl 命令自动维护文件大小
#只保留近一周的日志
journalctl --vacuum-time=1w
#只保留500MB的日志
journalctl --vacuum-size=100M

以上只是暂时清理日志文件,可在/etc/systemd/journald.conf 下永久更改设置
配置项文档:https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html

  • SystemMaxUse=并控制磁盘空间量 日记最多可能用完
  • SystemMaxFileSize=并控制方式 大型单个日志文件最多可能会增长
  • SystemMaxFiles=并控制数量 最多保留单个日志文件
  • MaxRetentionSec=存储日记帐分录的最长时间
  • MaxFileSec=在单个 日志文件,然后再旋转到下一个文件

    SystemMaxUse=100M
    SystemMaxFileSize=10M

查看应用日志目录

cd /var/log
dirsize 

bt宝塔监控数据库文件清理
www/server/panel/data/system.db
这个是面板的监控信息,删除的话以前的数据就不在了,如果您觉得没必要的话可以删除,删除后命令行执行bt 1命令重启下面板。
或者在控制面板,左侧菜单【监控】页面,点击【清理数据】,没必要的话关闭监控功能或者定期清理数据