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

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

端口敲门简单介绍


knock: A port-knocking implementation


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


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


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


640.png


  • 项目官网地址


http://www.zeroflux.org/projects/knock
  • GitHub地址


https://github.com/jvinet/knock


640.jpg


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


http://linux.vbird.org/linux_security/knockd.php


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


1、服务端安装knock-server


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

640.jpg

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


yum search knock


yum安装


yum  -y install knock-server



640.jpg


man knockd


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


640.jpg


2、配置sshd监听端口


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


vi /etc/ssh/sshd_config
新增如下两行
ListenAddress 0.0.0.0:22
#新增SSHD服务监听端口5522
ListenAddress 0.0.0.0:5522

640.jpg

640.jpg


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


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


640.jpg

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

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


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


systemctl enable knockd.service 
systemctl restart knockd.service

640.jpg


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


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


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

640.jpg

640.jpg

640.jpg

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


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

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

640.jpg


  • 2)、先敲门
knock -v HOST_IP 1122:tcp 2233:tcp 3344:tcp


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


640.jpg


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


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

640.jpg


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

640.jpg


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

640.jpg

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


640.jpg


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


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


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


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


640.jpg


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

640.jpg


8、Tips


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


knock -v HOST_IP:tcp 2233:tcp 3344:tcp && ssh [-p sshd_port] root@HOST_IP


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

640.jpg

相关文章
|
4月前
|
JSON 网络协议 数据安全/隐私保护
nps npc docker 部署 解决端口报错问题
nps npc docker 部署 解决端口报错问题
162 0
|
4月前
|
Shell 数据库 OceanBase
OceanBase数据库是不是部署 oms 不能修改端口
OceanBase数据库是不是部署 oms 不能修改端口【1月更文挑战第12天】【1月更文挑战第58篇】
35 1
|
5月前
|
数据安全/隐私保护 时序数据库
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
167 0
|
13天前
|
分布式计算 DataWorks 监控
DataWorks产品使用合集之在 DataWorks 中, FTP 主机和端口信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
20 1
|
14天前
|
弹性计算 运维 Shell
|
14天前
|
安全 Linux 网络安全
【专栏】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患,教你一招找出所有开放的端口,然后直接干掉!
【4月更文挑战第28天】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患。要找出开放端口,可使用 `netstat -anp`、`lsof -i` 或 `nmap` 命令。关闭端口可通过停止相关服务、修改防火墙规则或禁用网络接口。注意不要随意关闭重要端口,操作前备份数据。保持端口安全对系统安全至关重要。
|
19天前
|
机器学习/深度学习 网络协议 数据安全/隐私保护
远程访问本地jupyter notebook服务 - 无公网IP端口映射
远程访问本地jupyter notebook服务 - 无公网IP端口映射
|
4月前
|
Java Linux
linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口
linux一键启动和停止多个端口服务脚本:springboot项目打jar包指定多个端口
|
5月前
|
安全 Linux 网络安全
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
192 1
|
5月前
|
分布式计算 Hadoop Java
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
95 0

热门文章

最新文章