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

安全 数据安全
为了保护SSH服务,除了基本的强密码和双因素认证外,还有一种名为“端口敲门”的技术可以显著提高SSH的安全性。

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

什么是端口敲门?

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

端口敲门的工作原理

  • 预定义端口序列:管理员设定一组特定的端口序列,例如,访问端口1111、2222和3333,顺序和时间间隔都非常重要。
  • 防火墙配置:防火墙初始配置为拒绝所有进入的SSH连接请求。
  • 敲门事件:用户在尝试SSH连接之前,必须按照正确的顺序和时间间隔访问预定义的端口序列。
  • 防火墙规则更新:当防火墙检测到正确的端口敲门序列时,它会暂时开放SSH端口(如22端口),允许该用户的IP地址连接SSH服务。
  • 连接和关闭:用户成功连接SSH后,防火墙可以设置为在一段时间后自动关闭SSH端口,以恢复安全状态。

端口敲门的优点

  • 隐藏性:由于服务端口关闭,因此对外部观察者来说,系统上可能存在的服务是不可见的。
  • 安全性:不会直接暴露真实的服务端口,只有在正确的端口敲击序列被触发后才会打开相应的端口,这增加了系统的安全性。
  • 防止扫描攻击:由于服务端口一直处于关闭状态,因此对端口的扫描攻击几乎没有意义。

实现端口敲门

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

1.安装 knockd

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

sudo apt-get install knockd

2.配置 knockd

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

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

[closeSSH]
    sequence = 9012,5678,1234
    seq_timeout = 15
    command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = 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 addr或 ifconfig命令。

3.启动 knockd

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

sudo systemctl start knockd
sudo systemctl enable knockd

启动成功如下图:

4.使用端口敲门

要使用端口敲门,可以使用 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服务被攻击的概率,从而保护你的网络资源和数据安全。

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2010-09-02 12:55:30

2009-01-18 09:16:00

2010-03-31 10:03:52

2009-09-10 09:56:03

2010-05-18 17:13:11

IIS服务器

2020-09-14 08:48:57

HTTPS安全互联网

2009-01-15 09:58:00

2011-04-20 11:00:47

数据库审计安全审计规则遵从

2011-04-27 11:04:37

2011-04-27 11:12:07

2011-04-27 21:41:37

2011-04-28 19:46:34

安全审计数据库审计DML

2015-11-16 23:49:39

2016-07-18 08:19:58

2009-10-30 10:57:33

2023-09-27 22:40:45

2014-06-19 09:59:48

2018-10-13 06:42:58

2010-07-15 15:20:09

2019-04-03 10:03:23

点赞
收藏

51CTO技术栈公众号