IPTables仅允许本地主机访问


58

这些年来,我一直在努力以获得对iptables的深入了解。每当我尝试阅读手册页时,我的眼睛就会开始发呆。

我有一个服务,我只想允许本地主机访问。

Google应该使用什么术语(或配置,如果有人感到慷慨)仅允许localhost主机访问给定端口?


2
此服务在哪个端口上运行?
Bart De Vos

44344,它是一项内部编写的服务
iptablessuck

1
我想暂时更改“ iptablesrules”的昵称,但不能这样做
Art Shayderov 2011年

@Art,它们只会吸,因为我不理解它们:)
iptablessuck

@iptablessuck实际上看起来像我可以。但是我不会因为我不确定是否可以将其改回:)
Art Shayderov 2011年

Answers:


65

如果通过服务表示特定端口,则以下两行应该起作用。将“ 25”更改为您要限制的端口。

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

1
“任何从本地主机到端口25的内容,都接受”,第二条规则为“将任何内容丢弃到端口25”。第一行首先处理,允许本地主机,其他任何内容将被第二行删除。是?
iptablessuck

没错!
2011年

4
@Hyppy,您将如何“撤消”此操作?
测试人员

10
@tester再次键入这些命令,但替换-A-D
pepoluan 2013年

1
@宇航员键入“ sudo service iptables save”以保存更改。然后重启。您可以通过键入“ sudo iptables -L”来检查是否保存了更改
Vinayak

30

我建议:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

因为自寻址数据包不一定以127.0.0.1作为源,但是它们都从lo接口“输入” 。

现在,如果您真的想了解iptables第一件事,则应该下载并打印说明netfilter表关系的好的图表。这是两个很棒的:

最后,阅读许多iptablesHOWTO的内容。实际示例将帮助您快速掌握最新信息:)


ty! lo在将这些命令与该链接的最后一个命令一起使用后为我显示了cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers

2
@Gracchus我发现它更容易使用iptables-save,将输出保存到文件,使用vim或编辑emacs,以及使用iptables-apply
pepoluan

我认为,根据用例,第二条规则应明确拒绝而不是默默放弃。最佳做法是默默丢弃吗?REJECT使用安全吗?
Doomsbuster先生,2015年

1
@ tech-pro是的,REJECT可以安全使用。这取决于您要完成的工作,以及您是否想对尝试使用该端口的人保持礼貌。REJECT将发回TCP RST数据包,告诉客户端计算机已启动,但端口已关闭。如果要关闭人们可能合理使用的端口,则REJECT很好。如果您只希望端口扫描程序,那么DROP会更好。
Law29 2016年

1
@ x-yuri例如,我unbound作为DNS缓存运行在的前面dnscrypt-proxyunbound绑定到127.0.53.1:53dnscrypt-proxy绑定到127.0.53.2:53。当应用程序请求unbound或dnscrypt-proxy解析FQDN时,请猜测unbound / dnscrypt-proxy将响应哪个源地址?
pepoluan '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.