サーバーのポート6379へのアクセスをブロックしたいのですが、それでも内部的に接続したいと思います。 redis-serverアプリケーションはそのポートで実行されており、ローカル(127.0.0.1)にのみ接続したいと思います。これどうやってするの?
これを行うには、IPTablesルールが正しく構成されていることを確認する必要があります。 Ubuntuは通常、デフォルトでサーバーを広く開いたままにします。そのため、すでに適切にこれを行う方法を十分に理解していない限り、サーバーとしての使用はお勧めしません。
私はあなたのiptables -L -nv
はこのように見えます、そうですか?
# iptables -L -nv
Chain INPUT (policy ACCEPT 4M packets, 9M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 8M packets, 4M bytes)
pkts bytes target prot opt in out source destination
それは空で、大きく開いています。 Ubuntu IPTables HowToはおそらくこれでかなり役に立ちます。 ( https://help.ubuntu.com/community/IptablesHowTo )
私は次のようなものをお勧めします。これにより、任意のインターフェースでSSHを許可し、TCP 6379で任意のインターフェースを許可しますが、不要なインターフェースは許可します。
*filter
:INPUT DROP [92:16679]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [203:36556]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -i lo -p udp -m udp --dport 6379 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT
次に、このファイルを/etc/iptables.rulesに保存します。
明らかに、特に開いてほしい他のポートを追加する必要があります。
注:明確にするために、特定の6379行を追加しました。 Linuxシステムでは、適切な操作のためにすべてのループバック接続を許可する必要があるため、COMMITの直前のACCEPTは実際にはこれを許可します。
また、ルールが/ etc/network/interfacesファイルにも含まれるようにして、インターフェースが起動したときにルールが追加され、ブートプロセスの後半では追加されないようにします。このようなものを追加することをお勧めします:
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
編集:この構成を最初にロードするには、上記のiptables-restoreコマンドを実行する必要があります。
iptables-restore < /etc/iptables.rules
まあ、私は "複雑でないファイアウォール"(ufw)を使うことを勧めます。これはcanonicalでも推奨されています。 iptablesの読み書きは、たまにポートロックタスクを行うには複雑すぎます。
ここを参照してください: https://wiki.ubuntu.com/UncomplicatedFirewall
何かのようなもの
iptables -A INPUT -s 0.0.0.0 -i eth0 --protocol tcp --dport 6379 -j DROP
うまくいくはずです。