[我正在(Raspbian)Debian Linux系统(4.19.75)上使用多个PHP脚本(主要是通过CLI,有些是通过nginx / php-fpm)。
我的脚本使用简单的TCP套接字以及WebSocket相互通信。由于某种原因,Linux内核认为我正在尝试对自己的计算机进行洪泛/拒绝服务。
Jan 17 02:07:26 luna kernel: [10617.487372] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Sending cookies. Check SNMP counters.
Jan 17 14:31:22 luna kernel: [55253.978408] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Sending cookies. Check SNMP counters.
Jan 17 14:31:23 luna kernel: [55254.164176] TCP: request_sock_TCP: Possible SYN flooding on port 2346. Sending cookies. Check SNMP counters.
Jan 17 17:24:09 luna kernel: [65620.070514] TCP: request_sock_TCP: Possible SYN flooding on port 1337. Dropping request. Check SNMP counters.
无论是否使用sysctl-Config,都会发生这种情况,停用SYN-Cookies会立即删除所有请求。
更改net.ipv4.tcp_max_syn_backlog = 65535也不起作用。
两年前我遇到了同样的问题,但是不记得我是如何解决的。
是否有一种方法可以将至少所有由本地主机建立的连接列入白名单?还是要停用整个系统? (我知道这使它容易受到SYN-Flood-Attacks的攻击,但是在这一点上,我希望拥有一个不安全但可以正常运行的系统...)
(问题可能是PHP的TCP /监听积压的新默认值。不知何故似乎新的默认值为零。
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($this->socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($this->socket, TCP_HOST, TCP_PORT);
socket_listen($this->socket, 128); // SETTING BACKLOG = 128
socket_set_nonblock($this->socket);