web-dev-qa-db-ja.com

ローカルホストへのcURLはiptablesによってドロップされます

シェルでcURLを使用してローカルホストに接続しようとしています。 curl http://localhost:80を使用して接続しています。残念ながら、iptablesによってブロックされています。理由は、iptablesログのエラーです。

IPTables-Dropped: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=80 DPT=58617 WINDOW=32768 RES=0x00 ACK SYN URGP=0

そしてここにiptablesがあります:

iptables -L -v
Chain INPUT (policy DROP 314 packets, 19725 bytes)
 pkts bytes target     prot opt in     out     source               destination
30731 4342K ACCEPT     all  --  eth0   any     anywhere             anywhere             state RELATED,ESTABLISHED
  255 31984 ACCEPT     all  --  eth1   any     anywhere             anywhere             state RELATED,ESTABLISHED
    6   360 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
  207 28142 ACCEPT     tcp  --  any    any     localhost.localdomain  anywhere             tcp dpt:6379
  173  9634 ACCEPT     tcp  --  any    any     localhost.localdomain  anywhere             tcp spt:6379

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 31748 packets, 2974K bytes)
 pkts bytes target     prot opt in     out     source               destination

CURLが80ではない宛先ポートを使用しているように見えるという事実に絞り込んだと思います。新しいcURL要求を行うたびに、それも変化します。これはログエントリSPT=80 DPT=58617で確認できます。これを解決すると(私は想像します)、問題を解決するはずです。

いくつかの注意:

  • DebianWheezyの実行
  • Webサーバーはnginxです
  • ローカルホストからローカルRedisサーバーへの接続は問題なく機能します。

更新:次のルール-A INPUT -p tcp -m tcp --sport 80 -j ACCEPTを追加すると、問題が修正されます。宛先ポートではなく送信元ポートに基づいて接続を許可することに関するセキュリティ上の懸念はありますか?

1
Wes Cossick

インターフェースeth0とeth1に対してのみRELATED,ESTABLISHEDルールがあるため、cURLの接続要求に対するWebサーバーの応答は、どのルールでも受け入れられないため、iptablesによってドロップされます。すべてのインターフェースに適用されるようにRELATED,ESTABLISHEDルールを変更すると、問題が解決するはずです。

非常に特別な理由で必要な場合を除いて、トラフィックを受け入れるルールを使用しないでくださいfrom特定の送信元ポート:すべてのトラフィックを受け入れるルールがあるfromポート80は、誰でも接続できることを意味します彼/彼女が接続を開くことができるならばあなたのサービスのいずれかにfromポート80(どんな攻撃者にとっても取るに足らない)。

0
Ale