linux - 如何只允许隧道连接到端口?

标签 linux ssh port tunnel

我想让一个 git-daemon 通过一个永久的 ssh 隧道。我完成了这个任务。如何阻止任何远程非隧道连接到 GIT_DAEMON 端口(在我的例子中是 9418)?

我已经在 iptables 中尝试了简单的规则(阻止除 localhost 之外的所有内容):

$ iptables -A INPUT -p tcp -d ! localhost --destination-port 9418 -j DROP

但它也会阻塞隧道(因为它保存了源 IP 地址)。如果我有一台用于防火墙的主机,可以通过阻止与此端口的任何远程连接来简单地完成,但我需要这台主机来完成这项工作。

隧道以两种方式之一创建:

对于 Windows:

plink.exe -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69

对于 Linux:

ssh -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69

最佳答案

你实际上可以在不使用 iptables 的情况下实现这一点,只需将 git-daemon 绑定(bind)到环回接口(interface),例如。

git daemon --listen=127.0.0.1

这将使它只能从本地主机连接,并且不需要 root 权限来设置。

关于linux - 如何只允许隧道连接到端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320794/

相关文章:

c++ - 无法使用 cmath 编译代码

apache - 如何在现有 LAMP 服务器上添加 Tomcat 7 虚拟主机?

linux - 从 Internet 访问 Python Web 应用程序

python - 如何转置特定行并在 unix 或 python 中以以下格式显示数据

linux - 原始 makefile 编译失败

python - 从服务器通过 SSH 远程登录

linux - 在远程主机上使用非返回脚本管理进程

python - 在 Mac OSX 上安装图形工具

linux - 如何在 Linux 系统上安全地重新配置 gcc?

python - python自动关闭SSH和Telnet吗