すべてのユーザーが公開されているデータベースポートを表示できるため、ホストネットワークに公開したくないpostgreSQL
データベースが内部にあります。Docker
(現在私はpfsenseまたはそれに似たものはありません)。
全体的な構成iptables
は次のとおりです。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:15672
ACCEPT tcp -- 0.0.0.0/0 172.18.0.18 tcp dpt:8081
ACCEPT tcp -- 0.0.0.0/0 172.18.0.19 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 172.18.0.19 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.8 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.13 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.18.0.11 tcp dpt:5432
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (2 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
target prot opt source destination
私がしたことは、docker内のデータベースを同じポートのホストに公開することです。
0.0.0.0:5432:5432
iptables
すべての接続を削除し、IPアドレス111.111.111.111と222.222.222.222のみを追加しましたACCEPT
。以下のリンクはこれについて説明します。
だから、次のコマンドを発行しました。
iptables -I DOCKER-USER -s 111.111.111.111 -p tcp --dport 5432 -j ACCEPT
iptables -I DOCKER-USER -s 222.222.222.222 -p tcp --dport 5432 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport PORT_X -j REJECT --reject-with icmp-port-unreachable
上記の設定では、222.222.222.222
5432ポートからリモートでログインすることはできません。
ドッカーチェーンにルールを追加しました。
なぜこれが起こるのか理解できず、最初と2番目のIPアドレスからポートにTelnetを接続できません。私の設定に問題がありますか?
答え1
IPアドレスをホワイトリストに追加するのはそれほど安全ではありません。 IPスプーフィングを使用すると、簡単にバイパスできます。
IPTableを手動で構成することは過度のエンジニアリングの問題であるため、不要です。
IPソケットの代わりにUnixソケットを使用するようにコンテナを設定します。これにより、権限をより効果的に制御できます。その後、ssh
セキュリティトンネルを使用してポートをローカルコンピュータ(別のUnixソケットまたはIPソケット)に転送できます。