Skip to content

Simple port knocking implementation using web requests. 使用 web 请求的简单 port knocking 实现。

License

Notifications You must be signed in to change notification settings

yitong-ovo/web-port-knocking

Repository files navigation

web port knocking

简单的 port knocking 实现,使用 web requests 请求来让 iptables 开启端口。

推荐设置反向代理以使用 https 进行请求。

用起来很简单:

$ curl http://localhost:5000/shadowsocks/knocking | jq
{
  "expire_date": "Sun, 15 Mar 2020 14:34:22 GMT",
  "message": "Door opened. Port 4892 of service shadowsocks will be opened for 10.0.0.247 to 2020-03-15 14:34:22.685407",
  "message_zh": "门开了, shadowsocks 服务的 4892 端口将会为 10.0.0.247 打开到 2020-03-15 14:34:22.685407。",
  "service_name": "shadowsocks",
  "service_port": 4892,
  "service_timeout": 1800,
  "status": 200
}

上述的 URL 中,shadowsocks 是服务名。进行请求之后,程序会调用 iptables 允许发出请求的 IP 访问请求相应服务的端口。

在过期时间之前使用相同 IP 再次对 URL 进行请求,程序会延长过期时间。

$ curl http://localhost:5000/shadowsocks/knocking | jq
{
  "expire_date": "Sun, 15 Mar 2020 14:41:46 GMT",
  "message": "Closing time will be delayed 2020-03-15 14:41:46.389120.",
  "message_zh": "关门时间将会被延后到 2020-03-15 14:41:46.389120。",
  "service_name": "shadowsocks",
  "service_port": 4892,
  "service_timeout": 1800,
  "status": 200
}

配置

config.py 进行配置。目前有两个配置项: services, protocol

可以参考预置的配置作为示例。

About

Simple port knocking implementation using web requests. 使用 web 请求的简单 port knocking 实现。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages