如何将服务器应用程序配置为仅绑定到给定接口?

如何将服务器应用程序配置为仅绑定到给定接口?

我有一个 IP 为 10.0.0.2 的防火墙,它有一个 NTP 服务器。我只想内部网络10.0.0.0/24访问NTP服务器。我不想允许任何外部网络访问 NTP 服务器。请注意,我想在防火墙上设置这些权限,并且必须使用 iptables。有人可以帮我吗?

答案1

如何将服务器应用程序配置为仅绑定到给定接口?

这因应用程序而异;检查文档。在ntpd您可以使用的具体示例中

# excerpt from ntp.conf
interface ignore wildcard
interface listen 127.0.0.1
interface listen 10.0.0.2

在你的配置文件中。这应该是第一选择,因为无论如何您都可能会更改服务器的默认配置,并且如果防火墙以某种方式绕过(例如意外设置为允许一切),它会提供一点安全性。

如何确定服务器应用程序使用哪个端口?

许多(如果不是全部)系统都包括/etc/services.例如,在 Arch Linux 中,该文件由程序包提供,该程序包是系统运行所需的“基本文件”iana-etc的依赖项。filesystem您可以搜索您的协议:

$ awk ' $1 == "ntp" ' /etc/services
ntp        123/tcp
ntp        123/udp

这告诉您 NTP 协议在 TCP 和 UDP 中都使用端口 123。例如,您还可以执行 SSH

$ awk ' $1 == "ssh" ' /etc/services
ssh        22/tcp
ssh        22/udp
ssh        22/sctp

查看 SSH 是否位于端口 22 上。这不一定像检查服务器文档那样可靠,但它通常可以工作。

如何让 iptables 丢弃来自特定接口的流量?

如果这是你的目标,那你就是在倒退。默认情况下丢弃所有内容,并允许所需的流量。

在这里,你会得到类似的东西(过于简单化):

# modified excerpt from iptables.rules
# to be sourced by
#    iptables-restore < iptables.rules
*filter
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Allow inputs on non-privileged ports
-A INPUT -p tcp ! --dport 0:1023 -j ACCEPT
-A INPUT -p udp ! --dport 0:1023 -j ACCEPT

# Allow anything on the loopback interface
-A INPUT -i lo -j ACCEPT

# Allow NTP access from the LAN
# you could use
#    -i internal-interface-name
# instead of (or in addition to)
#    -s 10.0.0.0/24
# to filter by interface rather than source address
-A INPUT -p tcp -s 10.0.0.0/24 --dport 123 -j ACCEPT
-A INPUT -p udp -s 10.0.0.0/24 --dport 123 -j ACCEPT

# Allow HTTP from anywhere
-A INPUT -p tcp --dport 80 -j ACCEPT

# Allow SSH from the external interface
# replace external-interface-name with the actual name
-A INPUT -p tcp -i external-interface-name --dport 22 -j ACCEPT

# Maybe explicitly reject and log:
# -A INPUT -j LOG --log-level warning --log-prefix "Rejected input: "
# -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
# -A INPUT -p tcp -j REJECT --reject-with tcp-reset
# -A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT

“允许从 LAN 进行 NTP 访问”块是您指定的特定服务器和源地址范围的示例。我还提供了一些其他示例来构建。

在此配置中,您必须小心地在启用服务时明确允许访问服务。

相关内容