Loading... ## 芝麻开门~ Port Knocking 是一种**通过在一组预先指定的关闭端口上产生连接请求,从外部打开防火墙端口的方法**。一旦收到正确的连接请求序列,防火墙规则就会被动态修改,允许发送连接请求的主机通过**特定端口**进行连接。 目的是防止攻击者通过端口扫描来扫描系统中潜在的可利用服务。除非攻击者发送正确的碰撞序列,否则受保护的端口将显示为关闭。 ## 安装 Knockd 服务端 ### 通过源码安装 https://github.com/jvinet/knock ### 通过软件包管理器安装 #### Ubuntu/Debian ```bash apt install knockd -y ``` #### CentOS ``` yum install knockd -y ``` ### 编辑配置文件 #### 说明 **配置文件位置:`/etc/knockd.conf`** **`[options]` 全局设置** `UseSyslog`:日志输出到系统syslog `LogFile`:日志输出文件路径 `PidFile`:pid文件路径 `Interface`:监听的网口名称 **`[<服务名称>]` 服务设置(可以配置多个)** `sequence`:端口序列 `port1[:tcp|udp],port2[:tcp|udp]` (如果不写协议,默认为`tcp`) `seq_timeout`:敲门队列完成的超时时间 `tcpflags`:验证 tcp 的敲门信号的 flag 标志位,可选项:`<fin|syn|rst|psh|ack|urg>` `start_command`:收到正确敲门队列的情况下,运行的命令 `cmd_timeout`: `start_command` 运行后等待的时间 `stop_command`:`start_command` 运行后,cmd_timeout等待时间结束后运行 <div class="tip inlineBlock warning"> 端口序列建议使用非连续端口,并打乱顺序 </div> #### **示例** ##### **全局配置** 日志输出到系统、监听 `ens3` 接口 ##### **SSH 配置** 在15秒内按顺序敲 `22111-23456-45678-34567-56789-10022` 端口。 成功后,会运行 `start_command` 命令:`/usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT`,允许你的 IP 到服务器 22 端口的连接 等待 600 秒(10分钟),会运行`stop_command` 命令:`/usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT`,会删除刚刚添加的防火墙规则 ```ini [options] UseSyslog interface = ens3 [SSH] sequence = 22111,23456,45678,34567,56789,10022 seq_timeout = 15 start_command = iptables -C INPUT -s %IP% -p tcp --dport 22 -m comment --comment ssh-knockd -j ACCEPT || /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 600 stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -m comment --comment ssh-knockd -j ACCEPT tcpflags = syn ``` ### 运行 启动服务并配置开机启动 ```bash service knockd start systemctl enable knockd ``` 查看日志,服务已经启动,并正在监听 ens3 接口 ```bash journalctl -u knockd -f ```  修改 iptables 规则,将 ssh 端口的公网访问关闭(**操作前请确保你有合适的备用方法连上服务器的ssh**),无需放行 knockd 配置的敲击端口 ## 客户端 客户端测试是否可以连上 ssh 端口:  客户端使用 `knock` 命令进行敲门:  服务端上显示成功开门:  客户端测试连接:  10分钟后,可以看到服务端日志提示 `command timeout` 并运行了 `stop_command`:  客户端测试端口关闭:  ## 写在最后 为啥我要用上芝麻开门?爆破服务器 SSH 的实在是太多了,Fail2ban 一周就封禁了将近 1k 的 IP。  最后修改:2024 年 03 月 22 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏