分类 Web服务器 下的文章

近几天,我一台服务器上的带宽总是被跑满,导致网站速度奇慢无比,检查发现服务器有大量入站流量,这很不正常。

于是用抓包工具,发现服务器频繁访问另一个网站。再结合IIS日志,发现了很多的异常请求,请求的路径都是不存在的。我直接用电脑访问,也是不存在,但是,404页面很奇怪,并不是我自己设定的404页面,修改也没用。

我模拟手机访问,发现这些页面,都会加载一些非法内容,典型的网页404劫持,于是打开IIS,进去模块,跟另一台正常的服务器进行对比,看多出什么模块,果然很快找到一个异常的模块:

IISResetModult 指向:C:\inetpub\wwwroot\Cachfle.dll

删除模块,删除那个dll,重启IIS,搞定。

因为之前服务器很多人用过,然后就清理用户,修改密码。。。。

root@mail:~# whereis caddy
caddy: /etc/caddy /usr/local/bin/caddy

Thank you. So the apt pkg installs the binary in /usr/bin, but you have the old caddy placed in /usr/local/bin/caddy.
If you run echo $PATH you'll see /usr/local/bin somewhere to the left of /usr/bin.
This means when you run the command caddy, the OS will search for the executable through the directories listed in $PATH from left to right, and will find it in /usr/local/bin (which is v1) before it finds the one in /usr/bin (which is v2).

If your “installation” of v1 was using getcaddy.com or manually placing the executable in /usr/local/bin, then resolving this should be as simple as removing the /usr/local/bin/caddy executable.

v1中文文档:https://www.bookstack.cn/read/caddy-cn-doc/README.MD
v2中文文档:https://caddy2.dengxiaolong.com/docs/
官方:https://caddyserver.com/docs/

卸载
kill 进程
systemctl disable caddy.service
rm /usr/local/bin/caddy

二进制安装:
先下载,如果需要模块的,可下载带模块的(注意选择正确的平台,arch 命令查看)
https://github.com/caddyserver/caddy/releases
https://caddyserver.com/download

下载deb安装:
wget https://github.com/caddyserver/caddy/releases/download/v2.4.6/caddy_2.4.6_linux_amd64.deb
dpkg -i caddy_2.4.6_linux_amd64.deb

直接下载程序包:
mv caddy /usr/bin/
chmod -R 777 /usr/bin/caddy
caddy version
vim /etc/systemd/system/caddy.service
内容在:https://github.com/caddyserver/dist/blob/master/init/caddy.service
groupadd --system caddy
useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server" caddy
systemctl daemon-reload
systemctl enable --now caddy
systemctl status caddy

直接安装:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

源码安装(其它模块):
git clone "https://github.com/caddyserver/caddy.git"
cd caddy/cmd/caddy/

安装 xcaddy----------------------------------------------------------------------
直接安装方式:
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-xcaddy.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-xcaddy.list
apt update
apt install xcaddy

Go 安装方式:先安装 go (https://go.dev/doc/install):
wget https://go.dev/dl/go1.18.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version

再安装 xcaddy

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

安装带 replace-response 模块的 Caddy
xcaddy build --with github.com/caddyserver/replace-response

安装请Caddy请参考 Ubuntu 安装最新版本 Caddy

add-apt-repository ppa:ondrej/php
apt install php-cli php-fpm php-mysql
php --version

php配置文件路径 /etc/php/8.1/fpm/pool.d/www.conf

cd /var/www
从这里找到下载地址 https://cn.wordpress.org/download/
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar –xvzf latest.tar.gz

vim /etc/caddy/Caddyfile
blog.domain.com {

root * /var/www/wordpress
php_fastcgi unix//run/php/php8.1-fpm.sock    
file_server

}

systemctl restart php8.1-fpm
systemctl restart caddy

echo '<?php phpinfo() ?>' > /var/www/wordpress/info.php
https://blog.domain.com/info.php 应该可以访问了

chown -R www-data:www-data /var/www/wordpress
:set paste

删除MySql某个库的所有表:
select concat('drop table ',table_name,';') as sql from information_schema.TABLES where table_schema='myblog';
复制出来的信息执行即可

两台服务器进行配合,假设两台服务器如下:
(1)Web应用服务器 192.168.12.226 ,IIS7.0+
(2)文件服务器192.168.12.66,WindowsXP/7/Server系统

  1. 建立共享账户
    两台服务器上,创建项目相同用户名、密码的用户。具体的使用权根据需要灵活配配置。
  2. 建立共享目录
    在文件服务器上(192.168.12.66)创建一个目录,并指定为共享目录。目录设置权限,允许“共享账户”读写权限
  3. IIS中配置“虚拟目录”
    在IIS中新建网站,并正常配置。重点说一下“远程共享目录”部分。首先右键项目网站节点->添加虚拟目录->录入目录名称、网络路径->连接为->特定用户。设置“共享用户”访问,填入用户名和密码。
  4. 系统安全策略配置
    应用服务器(192.168.12.226)找到本地安全策略-本地策略->安全选项->网络安全:LAN管理器身份验证级别,默认是“没有定义”,更改为“发送LM和NTLM响应”。设置该项后,则IIS中网站下“虚拟目录”将允许读取文件服务器(共享目录)上的文件。
  5. Web.config配置
    经过之前的步骤,项目已经可以引入虚拟目录,拥有读取权限,但是没有写入操作权限。通过配置项目中Web.config的配置,来赋予操作权限。

<system.web>

</system.web>

最终, ASP.Net 通过该“共享账号”执行和访问 文件服务器上共享目录的资源。同时考虑安全性,ASP.NET提供了对用户名和密码的加密,以及内嵌机制。这里不再详细说,百度一下吧。大致的过程就是上述5步。

补充:
IIS6中对该过程的配置比较简单,主要却别在于Windows、IIS不同版本安全机制的区别。IIS6中在“添加虚拟目录”过程中,写入“共享用户”,并赋予“写入”权限即可(共享用户创建还是需要,不需要4、5步骤)