ElasticSearch使用IP表限制访问

时间:2014-02-11 08:28:48

标签: linux security elasticsearch iptables

我已经看过像这样的几个死线程

IP Address Restriction in Bonsai ElasticSearch as a Heroku Addon

和这个

https://stackoverflow.com/questions/16121531/tomcat-restrict-ip-access-ip-range-format

这是我第一次将ElasticSearch服务器托管到linux机器上。我们假设我的ES服务器位于http://161.241.117.47:9200,我的应用服务器位于161.241.117.41

问题是如何处理我的ip表,以便只有来自161.241.117.41的http请求才能满足161.241.117.47:9200

另外,是否有可能根据以太网地址在iptable中创建规则?所以我可以使用HTTP连接我的latptop?

我知道我可以使用类似下面的内容

sudo iptables -A INPUT -p tcp --dport 9200 -j ACCEPT

但是这将允许所有传入的连接。

当我使用以下答案中的建议时,它可以正确使用一个IP,但不是两个! 我的iptable目前看起来像这样,无法过滤多个IP

 INPUT ACCEPT [554:135189]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3207:497908]
-A INPUT -s 182.72.29.250/32 -p tcp -m tcp --dport 9200:9400 -j ACCEPT
-A INPUT -s 162.243.225.24/32 -p tcp -m tcp --dport 9200:9400 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9200:9400 -j REJECT --reject-with icmp-port-unreachable
COMMIT

1 个答案:

答案 0 :(得分:27)

首先,您需要设置可以到达计算机的IP

iptables -I INPUT 1 -p tcp --dport 9200:9400 -s IP_ADRRESS_1,IP_ADRRESS_2,IP_ADRRESS_3 -j ACCEPT

然后,你需要限制任何ip,除了指定的ip可以到达你的端口。

iptables -I INPUT 4 -p tcp --dport 9200:9400 -j REJECT

最后将您的设置保存到文件中。

sudo sh -c "iptables-save > /etc/iptables.rules"

如果您希望这些更改在重新启动时仍然存在,请执行sudo vi /etc/network/interfaces并添加以下pre-up iptables-restore < /etc/iptables.rules

要记住的事情很少:

  1. 您可以为第一个命令添加更多ips。
  2. 如果添加额外的ips,则应在第二个命令中设置值(4)。这是规则顺序,因此必须是最新规则。因此,为您添加的每个ip添加1。