Ubuntu 16.04でWebアプリケーションをホストしています。アプリケーションのすべてのコンポーネントはDockerコンテナ内にあり、ほとんどは外部の世界(PostgreSQLやElasticSearchなど)ではなく互いに通信するだけです。たとえば、ElasticSearchはデフォルトでポート9200にプラグインインターフェイスを公開します。
管理者としてこれらのインターフェイスにアクセスする必要がありますが、それをビジネスコンピュータに限定したいと思います。
私は次を試しました特定のポートでのみ特定のIPを使用できるようにするディレクティブしかし、Dockerが私のルールをオーバーライドしているようです。
## ALLOW specific ports only on ONE IP address:
# ElasticSearch
iptables -I INPUT -p tcp -s MyWorkIP --dport 9200 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 9200 -j DROP
iptables -I INPUT -p tcp -s MyWorkIP --dport 9300 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 9300 -j DROP
iptables -I INPUT -p tcp -s MyWorkIP --dport 5601 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 5601 -j DROP
# PostgreSQL
iptables -I INPUT -p tcp -s MyWorkIP --dport 5432 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 5432 -j DROP
page:port
仕事用コンピュータ(MyWorkIP
スクリプト)と携帯電話(動的IP)から特定のコンテンツにアクセスしようとすると、すべてをテストしていますが、どちらのデバイスでもアクセスできます。私にとって必要なのは、MyWorkIP
他のIPを拒否して、電話がそのIPにアクセスできないようにすることです。
私はIPtablesの設定がうまくいかないので、どこから調査を始めるべきかわかりません...(このサーバーにはXがインストールされていません。
どんなアイデア/考えがありますか?
ベストアンサー1
私はこれを使って作業できました:
ipyouwanttoallowを除くすべての接続(インバウンドとアウトバウンド)を削除します。 iptables -I DOCKER ! -s ipyouwanttoallow -j DROP
コンテナローカルIPから世界へのすべての接続を受け入れます。
iptables -I DOCKER -s localipofyourcontainer -d 0.0.0.0/0 -j ACCEPT
外部サーバーがコンテナ要求に応答できるようにするために必要です。
iptables -I DOCKER -m state --state ESTABLISHED,RELATED -j ACCEPT