别让黑客轻易入侵:端口敲门,让你的SSH固若金汤!

devtools/2024/9/24 5:25:10/

在网络安全领域,SSH(Secure Shell)是一种常用的加密协议,用于在不安全的网络上进行安全的远程登录和其他安全网络服务。然而,SSH服务默认监听的22端口常常成为攻击者的目标,他们会使用各种方法尝试破解SSH密码,从而获得系统的控制权。为了保护SSH服务,除了基本的强密码和双因素认证外,还有一种名为“端口敲门”的技术可以显著提高SSH的安全性。

什么是端口敲门

端口敲门(Port Knocking)是一种安全措施,它通过在防火墙上动态打开端口来允许合法用户访问受保护的服务。具体来说,端口敲门技术要求用户在尝试连接到SSH服务之前,按照预定义的顺序访问一系列隐藏端口。这种技术通过在网络层添加额外的验证步骤,有效地隐藏了实际的服务端口,并减少了被暴力破解的风险。

端口敲门的工作原理

  1. 预定义端口序列:管理员设定一组特定的端口序列,例如,访问端口1111、2222和3333,顺序和时间间隔都非常重要。

  2. 防火墙配置:防火墙初始配置为拒绝所有进入的SSH连接请求。

  3. 敲门事件:用户在尝试SSH连接之前,必须按照正确的顺序和时间间隔访问预定义的端口序列。

  4. 防火墙规则更新:当防火墙检测到正确的端口敲门序列时,它会暂时开放SSH端口(如22端口),允许该用户的IP地址连接SSH服务。

  5. 连接和关闭:用户成功连接SSH后,防火墙可以设置为在一段时间后自动关闭SSH端口,以恢复安全状态。

端口敲门的优点

  1. 隐藏性

由于服务端口关闭,因此对外部观察者来说,系统上可能存在的服务是不可见的。

  1. 安全性

不会直接暴露真实的服务端口,只有在正确的端口敲击序列被触发后才会打开相应的端口,这增加了系统的安全性。

  1. 防止扫描攻击

由于服务端口一直处于关闭状态,因此对端口的扫描攻击几乎没有意义。

实现端口敲门

实现端口敲门的方法有很多种,下面介绍使用 knockd 工具实现端口敲门的基本步骤:

安装 knockd

在大多数Linux发行版上,你可以通过包管理器安装 knockd

sudo apt-get install knockd

配置 knockd

安装完成后,编辑 knockd 的配置文件,通常位于/etc/knockd.conf,添加你的敲门序列和相应的动作,例如:

[options]logfile = /var/log/knockd.log
[openSSH]sequence = 1234,5678,9012seq_timeout = 15command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPTtcpflags = syn[closeSSH]sequence = 9012,5678,1234seq_timeout = 15command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPTtcpflags = syn

我们需要修改的另一个配置是 /etc/default/knockd,例如:

# control if we start knockd at init or not
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1# command line options
KNOCKD_OPTS="-i eth0"

找到行START_KNOCKD=0 。取消注释,并将值设置为 1。接下来,转到取消KNOCKD_OPTS="-i eth1"注释行,并将默认值替换为系统的活动网络接口,要检查您的网络接口,只需运行 ip addrifconfig命令。

启动 knockd

配置完成后,启动 knockd 服务,并设置开机启动。

sudo systemctl start knockd
sudo systemctl enable knockd

启动成功如下图:

使用端口敲门

要使用端口敲门,可以使用 knock 命令行工具或其他类似工具:

knock your.server.com 1234 5678 9012

完成敲门后,你的IP地址将被允许访问SSH服务。

现在通过关闭端口进行测试,先通过192.168.31.103 9999 8888 7777关闭SSH端口。如下图所示:

现在要登录已经被完美阻击了,如下图:

要想登录就要先**敲门,**输入正确的敲门端口序列,如下:

knock  192.168.31.103  7777 8888 9999

成功敲门后,SSH端口就处于开放中,这时,我们就可以通过SSH登录到服务器,如下图所示:

其他服务器服务器想登录该服务器,要先进行敲门才能正常访问SSH端口。当客户端正确敲门后,服务端会再防火墙插入一条策略。如下图:

结论

端口敲门技术通过增加一个额外的验证步骤,有效地提高了SSH服务的安全性。它不仅隐藏了实际的服务端口,还减少了被暴力攻击的风险。虽然端口敲门并不能替代强密码和双因素认证等其他安全措施,但它作为一种额外的保护层,可以显著增强系统的安全性。通过合理配置和使用端口敲门,你可以大大降低SSH服务被攻击的概率,从而保护你的网络资源和数据安全。


http://www.ppmy.cn/devtools/56070.html

相关文章

使用Python进行Socket接口测试

大家好,在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色…

Python基础-连接Mysql数据库

一、pymysql pymsql 是 Python 中操作 MySQL 的原生模块,其使用方法和 MySQL 的SQL语句几乎相同 1、下载安装 pip3 install pymysql2、执行SQL 执行 SQL 语句的基本语法: 需要注意的是:创建链接后,都由游标来进行与数据库的操…

C语言经典例题-7

1.计算三角形的周长和面积 题目描述&#xff1a; 根据给出的三角形3条边a, b, c&#xff08;0 < a, b, c < 100,000&#xff09;&#xff0c;计算三角形的周长和面积。 输入描述: 一行&#xff0c;三角形3条边&#xff08;能构成三角形&#xff09;&#xff0c;中间用…

力扣随机一题 位运算/滑动窗口/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 3191.使二进制数组全部等于1的最少操作次数I【中等】 题目&#xff1a; 给…

【python入门】数组、元组、字典

文章目录 数组&#xff08;List&#xff09;元组&#xff08;Tuple&#xff09;字典&#xff08;Dictionary&#xff09; Python 是一种非常灵活的编程语言&#xff0c;它提供了多种数据结构来存储和操作数据。下面是 Python 中数组、元组和字典的详细说明&#xff0c;以及一些…

java实现分类下拉树,点击时对应搜索---后端逻辑

一直想做分类下拉&#xff0c;然后选择后搜索的页面&#xff0c;正好做项目有了明确的需求&#xff0c;查找后发现el-tree的构件可满足需求&#xff0c;数据要求为&#xff1a;{ id:1, label:name, childer:[……] }形式的&#xff0c;于是乎&#xff0c;开搞&#xff01; 一…

iOS Swift5 视频播放 能播放各种编码格式的视频的第三方库

1.VLC for ios: MobileVLCKit VLC for ios - github 2.IJKPlayer: IJKMediaFramework 基于 FFmpeg IJKPlayer - github

边缘计算设备有哪些

边缘设备是指那些位于数据源附近&#xff0c;能够执行数据处理、分析和决策的计算设备。这些设备通常具有一定的计算能力、存储能力和网络连接能力&#xff0c;能够减少数据传输到云端的需要&#xff0c;从而降低延迟、节省带宽并提高数据处理的效率。以下是一些常见的边缘设备…