前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云主机上部署端口敲门Knock服务

腾讯云主机上部署端口敲门Knock服务

作者头像
yuanfan2012
修改2021-06-22 09:23:55
5K0
修改2021-06-22 09:23:55
举报
文章被收录于专栏:WalkingCloudWalkingCloud

端口敲门简单介绍

knock: A port-knocking implementation

端口敲门(knock):个人觉得叫芝麻开门更形象,指的是自己的客户端设备向服务器IP发送一系列实现预定好的暗号,而服务器上需要安装相对应接收暗号的服务knockd,服务器在接收到正确的暗号后,会临时性的为敲门者(客户端)开一段时间的门并随后关上,敲门者(客户端)要在这段时间内登录成功并且保持连接,如果断了连接就要重新敲门。

客户端相当于访客,服务端knockd相当于门童,暗号对上后门童临时开门给访客放行,待访客进入后又关上门

这种方法可以作为一种安全隐藏手段

  • 项目官网地址
代码语言:javascript
复制
http://www.zeroflux.org/projects/knock
  • GitHub地址
代码语言:javascript
复制
https://github.com/jvinet/knock

(图片可放大查看)

具体原理可以参考 《鳥哥的 Linux 私房菜》中的链接

代码语言:javascript
复制
http://linux.vbird.org/linux_security/knockd.php

下面介绍在腾讯云主机上部署端口敲门Knock服务

1、服务端安装knock-server

CentOS7操作系统的腾讯云轻量服务器一台用于本文的演示

(图片可放大查看)

配置EPEL源,可以在EPEL源中查找到knock

代码语言:javascript
复制
yum search knock

yum安装

代码语言:javascript
复制
yum  -y install knock-server

(图片可放大查看)

代码语言:javascript
复制
man knockd

查看配置样例说明及语法手册

(图片可放大查看)

2、配置sshd监听端口

为了演示方便,我这里设置SSHD服务监听端口5522

代码语言:javascript
复制
vi /etc/ssh/sshd_config
新增如下两行
ListenAddress 0.0.0.0:22
#新增SSHD服务监听端口5522
ListenAddress 0.0.0.0:5522

(图片可放大查看)

(图片可放大查看)

3、修改/etc/knockd.conf配置文件

代码语言:javascript
复制
vi /etc/knockd.conf
[options]
        #UseSyslog
        Interface = eth0
        LogFile = /var/log/knockd.log

[opencloseSSH]
        sequence      = 1122:tcp,2233:tcp,3344:tcp
        seq_timeout   = 20
        tcpflags      = syn
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 5522 -j ACCEPT
        cmd_timeout   = 60
        stop_command  = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 5522 -j ACCEPT

(图片可放大查看)

其中sequence = 1122:tcp,2233:tcp,3344:tcp可以理解为暗号序列

[options]中Interface 指定相应的网卡名,如果不配置Interface则默认为eth0

4、启动knockd服务并设置成开机自启动

代码语言:javascript
复制
systemctl enable knockd.service 
systemctl restart knockd.service

(图片可放大查看)

查看knockd.log服务日志 tail -f /var/log/knockd.log

5、云主机安全组规则配置

我这里是腾讯云轻量服务器,操作系统为CentOS7

(图片可放大查看)

(图片可放大查看)

(图片可放大查看)

6、客户端配置及knock功能测试

比如CentOS7主机,测试主机IP 192.168.31.52

  • 1)、配置epel源后yum install方式安装knock

(图片可放大查看)

  • 2)、先敲门
代码语言:javascript
复制
knock -v HOST_IP 1122:tcp 2233:tcp 3344:tcp

这时可以在腾讯云主机上tail -f /var/log/knockd.log

(图片可放大查看)

可以看到Stage1->Stage2->Stage3阶段完成后,执行iptables命令,插入一条允许客户端IP访问5522端口的防火墙规则

iptables -nvL | grep 5522 可以知道规则生效

(图片可放大查看)

  • 3)、然后再客户端SSH登录

(图片可放大查看)

  • 4)、1分钟后自动删除防火墙规则 knockd服务在1分钟后会自动执行iptables命令,删除客户端IP访问5522端口的防火墙规则

(图片可放大查看)

可以在/var/log/knockd.log中看到,所以客户端在敲门成功后,需要在这一分钟内登录成功 SSH登录成功后连接不断开就行,如果断了连接就要重新敲门knock

(图片可放大查看)

当然1分钟(60S)你觉得太短,你可以在配置文件中调整cmd_timeout

7、/etc/knockd.conf配置文件改用firewalld

CentOS7默认使用的firewalld防火墙服务,其实这时可以用rich-rule来做 修改成如下配置文件

代码语言:javascript
复制
vi /etc/knockd.conf
 [options]
        #UseSyslog
        Interface = eth0
        LogFile = /var/log/knockd.log

[opencloseSSH]
        sequence      = 1122:tcp,2233:tcp,3344:tcp
        seq_timeout   = 20
        tcpflags      = syn
        start_command = /usr/bin/firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="%IP%" port port="5522" protocol="tcp" accept';/usr/bin/firewall-cmd --reload
        cmd_timeout   = 60
        stop_command  = /usr/bin/firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="%IP%" port port="5522" protocol="tcp" accept';/usr/bin/firewall-cmd --reload

(图片可放大查看)

同样1分钟后自动删除防火墙规则

(图片可放大查看)

8、Tips

1)、客户端可以使用&&命令

代码语言:javascript
复制
knock -v HOST_IP:tcp 2233:tcp 3344:tcp && ssh [-p sshd_port] root@HOST_IP 

2)、Windows版本的knock客户端程序

knock也提供了Windows版本的knock客户端程序

(图片可放大查看)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下面介绍在腾讯云主机上部署端口敲门Knock服务
    • 1、服务端安装knock-server
      • 2、配置sshd监听端口
        • 3、修改/etc/knockd.conf配置文件
          • 4、启动knockd服务并设置成开机自启动
            • 5、云主机安全组规则配置
              • 6、客户端配置及knock功能测试
                • 7、/etc/knockd.conf配置文件改用firewalld
                  • 8、Tips
                  相关产品与服务
                  轻量应用服务器
                  轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档