gpt4 book ai didi

ruby-on-rails - 目录 : Securing a Closed API

转载 作者:数据小太阳 更新时间:2023-10-29 07:58:09 25 4
gpt4 key购买 nike

我在不同的虚拟服务器上有两个 Rails 应用程序,但在同一个设施中。这两个应用程序都可以通过本地 IP 地址进行通信。

这是一个两部分的问题:

1) 如何检查请求的来源并将请求限制为仅来自该位置的请求?

2) 你认为这足够安全吗?

我的直觉告诉我,由于 IP 欺骗,这不够安全,但我认为 OAuth 或类似工具对我的需求来说有点太硬核了。虽然,也许不是。

这是我第一次接触这样的事情,我正在寻找任何可以将我推向正确方向的人。

谢谢。

最佳答案

根据托管您的主机,本地网络(您的本地地址所属)可能是仅供您的实例访问的专用网络,或者更有可能与其他虚拟机共享那不属于你。您不会对直接的外部攻击持开放态度,但任何与您共享同一本地网络的受感染虚拟机都可能成为攻击的跳板,因此您的担忧是绝对有道理的。

按顺序回答您的两个问题:

  1. 为本地接口(interface)配置 iptables 以仅接受来自特定本地 IP 的特定端口的请求(阅读 a tutorial 以更好地理解 iptables 配置。)本地网络上的所有其他虚拟机应该无法探测到您,尽管它们可能能够拦截您的流量(在下面解决。)
  2. 没有;您应该在所有节点内连接上使用 SSL。这将以两种方式保护您:首先,它将保护您免受欺骗(如果攻击者没有您的证书,他将被拒绝,即使他通过欺骗他的地址绕过 iptables,或者因为您的 iptables 配置被管理员覆盖),其次它会保护你的数据不被窥视(例如,攻击者将无法窥探你的密码流量。)一些应用程序(例如大多数数据库引擎,网络-snmpd 设置为 v3 模式等) native 支持 SSL。或者,建立并使用 ssh 隧道,或使用 stunnel

示例基础 iptables 配置允许公共(public)(互联网)接口(interface)上的基本服务(HTTP、SSH 等),以及允许 www1www2eth0 接口(interface)(www1www2 定义在 /etc/hosts 以便它们解析为适当的 IP 地址。):

# * raw
#
# Allows internal traffic without loading conntrack
# -A PREROUTING -i lo -d 127.0.0.0/8 -j NOTRACK

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j DROP

# Accepts all established inbound connections (TCP, UDP, ICMP incl. "network unreachable" etc.)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level debug

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

# Allows MySQL within our cluster ONLY
-A INPUT -p tcp -s www1 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p udp -s www1 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p tcp -s www2 -i eth0 --dport 3306 -j ACCEPT
-A INPUT -p udp -s www2 -i eth0 --dport 3306 -j ACCEPT

COMMIT

关于ruby-on-rails - 目录 : Securing a Closed API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com