搭建了一個小的ElasticSearch集群來提供快速的索引服務。在調(diào)試完后,準備進入正式環(huán)境。因為ElasticSearch在集群中暴露了9200和9300端口,有心人很容易通過9200端口把你辛辛苦苦丟進去的索引數(shù)據(jù)刪除掉。因為需要對訪問進行控制。
官網(wǎng)推薦的方法就是使用它家的sheild工具,免費試用30天,之后開始收費。很明顯這種小應用是掏不起這個價錢了,只能考慮通過iptables來進行控制。
stackoverflow上有現(xiàn)成的解答方法,
iptables -I INPUT 1 -p tcp --dport 9200:9400 -s IP_ADRRESS_1,IP_ADRRESS_2,IP_ADRRESS_3 -j ACCEPT
iptables -I INPUT 4 -p tcp --dport 9200:9400 -j REJECT
sudo sh -c "iptables-save > /etc/iptables.rules"
集群的每臺機器同時有一個內(nèi)網(wǎng)地址和外網(wǎng)地址,內(nèi)網(wǎng)地址的端口地址提供給elasticsearch的節(jié)點進行通信,外網(wǎng)地址直接封掉對應的端口。
但是實際操作中一加上配置集群立刻就找不到節(jié)點了,自己也是剛開始玩iptables,不明所以。后來試了很多方法,才找到一個配置:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A OUTPUT -o eht1 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9200:9400 -s 192.168.0.1/18 -j ACCEPT
iptables -A INPUT -p tcp --dport 9200 -j REJECT
iptables -A INPUT -p tcp --dport 9300 -j REJECT