Rootop 服务器运维与web架构

2023-02-14
发表者 Venus
通过nginx拦截带时间戳的恶意访问已关闭评论

通过nginx拦截带时间戳的恶意访问

日志中出现 /?_=1676277219011 的请求,后面13位数是时间戳,大量的请求导致后端php资源池耗尽从而报502错误。
现通过nginx拦截这些恶意请求。

开始用location拦截,过滤参数,发现这样是错误的。

原因是 location 不能拦截参数,因为location是根据uri处理的,uri不包含参数部分。

先看下 $request_uri 和 $args 两个内置变量的值

location /
{
    return 200 $request_uri;
}

访问结果:/test.html?id=1&time=1676277219011

location /
{
    return 200 $args;
}

访问结果:id=1&time=1676277219050

2种拦截思路:

# 这个是拦截请求参数中以13位数字结尾的

if ($args ~ "[0-9]{13}$")
{
   return 403;
}

# 这个是拦截请求路径为 /?_=带13位数字结尾的

if ($request_uri ~* "^/\?_=[0-9]{13}$")
{
    return 403;
}

2023-02-11
发表者 Venus
nginx自定义error_page 403页面与deny ip冲突已关闭评论

nginx自定义error_page 403页面与deny ip冲突

nginx中可以通过error_page指令自定义403状态码(包括其他错误状态码)错误页面
当与deny ip共存时,则仍会返回nginx内置的403提示页面,自定义的页面并没有生效。
403.html在网站根目录下。
nginx配置:

allow 116.179.37.0/24;
allow 116.179.32.0/24;
allow 111.206.198.0/24;
deny all;

error_page 403 /403.html;

这样配置的话,自定义页面无效。

原因:
deny指令把所有的访问给deny了,所以需要用location拦截这个页面,允许所有访问。

有效配置:

allow 116.179.37.0/24;
allow 116.179.32.0/24;
allow 111.206.198.0/24;
deny all;

error_page 403 /403.html;
location /403.html
{
	allow all;
}

2022-12-13
发表者 Venus
网卡配置文件参数解析已关闭评论

网卡配置文件参数解析

来源:http://bbs.chinaunix.net/thread-4185395-1-1.html

DEVICE=name      这里name是物理设备的名字(动态分配的PPP设备应当除外,它的名字是“逻辑名”。
IPADDR=addr      这里addr是IP地址。
NETMASK=mask     这里mask是网络掩码。
NETWORK=addr     这里addr是网络地址。
BROADCAST=addr   这里addr是广播地址。
GATEWAY=addr     这里addr是网关地址。
ONBOOT=answer    这里answer取下列值之一:
yes              该设备将在boot时被激活。
no               该设备不在boot时激活。
USERCTL=answer   这里answer取下列值之一:
yes              非root用户可以控制该设备。
no               非root用户不允许控制该设备。
BOOTPROTO=proto  这里proto取下列值之一:
none             不使用boot时协议。
bootp            使用bootp协议。
dhcp             使用dhcp协议。
PEERDNS=no       不使用dhcp分配的dns,否则自动获取的dns会覆盖/etc/resolv.conf
DNS1=8.8.8.8         自定义dns
DNS2=114.114.114.114 自定义dns
NM_CONTROLLED=no     NetworkMamager的参数,使配置实时生效,不需要重启网络服务。

以下是所有PPP和SLIP文件所使用的数值:
PERSIST=answer   这里answer取下列值之一:
yes              该设备将一直维持激活态,即便是modem被挂断而导致非激活态。
no               该设备不一直维持激活态。
MODEMPORT=port   这里port是modem端口的设备名称(如“/dev/modem”)。
LINESPEED=baud   baud是modem的线速率(例如,"115200")。
DEFABORT=answer  这里answer取下列值之一:
yes              在创建或编辑该接口的脚本时插入默认的终止字符串。
no               在创建或编辑该接口的脚本时不要插入默认的终止字符串。


以下数值适用于所有的PPP文件:
DEFROUTE=answer    这里answer取下列值之一:
yes                将该接口设置为默认路由。
no                 不要将该接口设置为默认路由。
ESCAPECHARS=answer 这里answer取下列值之一:
yes                使用预定义的asyncmap。
no                 不要使用预定义的asyncmap。
(这里代表了一种简化的接口;它不让用户指定使用escape字符。然而,几乎任何情况下都可以使用一个00000000的asyncmap  而且如果需要的话,可以通过设置 PPPOPTIONS来使用任意的asyncmap.)

HARDFLOWCTL=answer 这里answer取下列值之一:
yes                使用硬件流控制。
no                 不使用硬件流控制。
PPPOPTIONS=options 这里options是任意的选项字符串。它被放置在命令行的末尾,以覆盖前面的选项(如asyncmap)。
PAPNAME=name       这里name是pppd命令行中“name $PAPNAME”的一部分。
注意选项“remotename”总是指定为逻辑ppp设备名,如“ppp0”(如果先前有其它ppp设备被激活的话,这就可能是物理设备ppp1)这样做便于管理pap/chap 文件--name/passwd对与逻辑ppp设备名关联,因此它们可以被一起管理。理论上说,为逻辑PPP设备起除“ppp0”--“pppN”之外的如“worldnet”或”myISP“ 的名字是可行的。

REMIP=addr        这里addr设置为远端的ip地址(通常不加以指定)
MTU=value         这里value是MTU的数值。
MRU=value         这里value设置为MRU的值。
DISCONNECTTIMEOUT=value  这里value表示当一个成功的连接被终止后要等多少秒后再进行连接。
RETRYTIMEOUT=value       这里value指企图连接失败后要等多少秒之后以进行下一次连接。

2022-11-22
发表者 Venus
scp: realpath ./xxx: No such file已关闭评论

scp: realpath ./xxx: No such file

在mac下往centos8中scp拷贝文件报错
scp -r xxx root@IP:/root
scp: realpath ./xxx: No such file
scp: upload “./xxx”: path canonicalization failed
scp: failed to upload directory xxx to .

原因可能是因为本地的openssh版本高于服务器上的openssh版本,版本跨度过大导致不兼容。
可以使用 -O 参数传输,表示使用传统SCP协议进行文件传输,而不是SFTP协议。
scp -r -O xxx root@IP:/root

2022-11-04
发表者 Venus
Please login as the user “centos” rather than the user “root”.已关闭评论

Please login as the user “centos” rather than the user “root”.

就想用root登陆系统!
普通用户登陆以后,执行 sudo -i ,然后编辑 /root/.ssh/authorized_keys 文件,找到
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command=”echo ‘Please login as the user \”centos\” rather than the user \”root\”.’;echo;sleep 10″
删掉它!
当然ssh服务里也要设置允许root登陆。