iptablesでRDPが通らない

このQ&Aのポイント
  • CentOSのiptablesで設定したルールにもかかわらず、RDP通信ができない状況に困っています。
  • iptablesログを確認したところ、FORWARDチェインとOUTPUTチェインでパケットがドロップされていることがわかりました。
  • 追加でルールを設定しても通信がうまくいかないため、原因を特定することができずにいます。
回答を見る
  • ベストアンサー

iptablesにてRDPが通らない。

図のような環境を作成しております。 PC1からPC2へのリモートデスクトップが通りません。 iptablesルールは、 ・CentOS(ホスト名:top) INPUT、OUTPUT、FORWARD全てDROP。 ・CentOS(ホスト名:down) INPUT、OUTPUT、FORWARD全てACCEPT。 CentOS(ホスト名top)のiptablesログを見ると ・Feb 10 19:35:16 top kernel: IPTABLES_OUTPUT_DROP : IN= OUT=eth2 SRC=172.30.1.254 DST=172.30.1.11 LEN=87 TOS=0x00 PREC=0xC0 TTL=64 ID=42946 PROTO=ICMP TYPE=5 CODE=1 GATEWAY=172.30.1.253 [SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=4519 DF PROTO=TCP SPT=58238 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 ] ・Feb 10 19:35:16 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=4519 DF PROTO=TCP SPT=58238 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 と出力されていました。 そこで、topに ・iptables -A FORWARD -p tcp -s 172.30.1.11 -d 172.30.2.0/24 --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ・iptables -A FORWARD -p tcp -s 172.30.2.0/24 -d 172.30.1.11 --sport 3389 -m state --state ESTABLISHED,RELATED -j ACCEPT 二行ルールを追加してみたのですが、 通信が通りません。 理由が分からず困っております。 ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pakuti
  • ベストアンサー率50% (317/631)
回答No.7

そういう事では無いです。 iptablesがLinuxのカーネルへ要求を出す時に インターフェースの指定が無いと、カーネルが認識している 1番最初のインターフェースと見做して応答する と言う事です。 *なので、eth0を利用していない場合はeth1となる。 もう少し違う言い方をすると、インターフェースの指定が無いから デフォルト(eth0)が指定されたものとして動作している と言う事です。 eth0 eth1 eth2 eth3 と合った場合、iptablesでインターフェースの指定をしないと どの向きからどの向きへの通信かは不明です。 そのため、デフォルトが利用される と言う事かと思います。

kureakai
質問者

お礼

情報ありがとうございました。 色々試してみた所、一応つながるようになりました。 過去設定してた内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT →RDPつながらず 今回設定変更してつながるようになった内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -j ACCEPT なぜかわかりませんが、「 -m state --state NEW,ESTABLISHED,RELATED」を消すことで RDP出来るようになりました。

その他の回答 (6)

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.6

全部読んでいなかったので、そこが疑問と気が付きませんでした。。。。 理由が以外と簡単です。 Linuxのカーネルのネットワークの認識に関する動作です。 基本的に何も指定が無いと、eth0が優先的に選択されます。 これはiptablesに限らず、例えばtcpdumpとかでインターフェースを指定しない場合もそうです。 eth0以外のインターフェースを持つ場合、該当するインターフェースを指定する癖を付けた方が良いです。

kureakai
質問者

補足

補足ありがとうございます。 >Linuxのカーネルのネットワークの認識に関する動作です。基本的に何も指定が無いと、eth0が優先的に選択されます。 下記一文の設定をtopには入れているのですが、下記の内容ではダメなのでしょうか? 【内容】 #cat /etc/sysconfig/network-scripts/route-eth2 172.30.2.0/24 via 172.30.1.253 それとも、 #cat /etc/sysconfig/network-scripts/ifcfg-eth0 の 【DEFROUTE=yes】 のことをおっしゃられているのでしょうか? (ちなみに、topには、eth0,eth1,eth2と3枚のNICがありますが、 全て使用しており、3枚共に、DEFROUTE=yes の設定が入っています。)

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.5

No4です。 ふっと思いました。 この通信って、行きと帰りで経路が違いますよね? そのような通信をiptablesで設定するのは厳しいんじゃないでしょうか? セッション管理が出来ないので、通信を許可して通信パケットが流れた場合 iptablesのバッファがいっぱいになってしまうような でも、icmp redirectで、downに投げ続ければセッションはたまらない?? どちらにせよ、あまりお勧めな構成では無いかと思います。

kureakai
質問者

補足

>ふっと思いました。 この通信って、行きと帰りで経路が違いますよね? そうなんです。 私もnby1215tkdさんから教えて頂きながら作業してた時にこれには気づいたんですが、 自分の考えが正しいのかわからなかったのです。 予想 行き:PC1→ハブ→top→ハブ→down→PC2 帰り:PC2→down→ハブ→PC1 (downとPC1が同セグメントのため) という経路だと思っています。 ただ、PC1に「route」を入れたときは、 強制的に経路が変わるのでつながる理由が分かるのですが 「topにiptables -A FORWARD -i eth2 -o eth2 -j ACCEPT」 を入れたとき、なぜ通るようになったのか理由が分からないので気持ち悪い状態になっています。 >どちらにせよ、あまりお勧めな構成では無いかと思います。 うーん。やっぱりお勧めではないですか。 なんとか、原因を解明してすっきりしたいのですが…。うーん。

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.4

何をしたいのでしょう ・iptablesの勉強? ・RDP通信? RDP通信が優先なら、PCにルーティングを書くか downでNATするか。 iptablesの勉強と言う事であれば まずは、緩めて絞る の方針で、どこで引っかかるかを試すべきでしょう。 私は、同一インターフェースでの設定を行った事がありませんが 単純に、-i eth2 -o eth2 で、行けそうな気もします

kureakai
質問者

補足

iptablesでブロックされているようなので、 それを解除させてRDP通信をしたいのです。 -i eth2 -o eth2でいけるのですが、 なぜ通るようになったのかが分からないのです。

回答No.3

topにiptables -A FORWARD -i eth2 -o eth2 -j ACCEPT を入れるとRDPが出来る なら、OS自体は、ICMP Redirect メッセージは出るように設定されていると思います。 topがtop自身が出力する ICMP Redict メッセージをフィルタしていると思います。 (topは、ICMP redirect を返そうとしているが、肝心のフィルタで、自分が出力した ICMP redirect パケットをフィルタしている) というか、最初の質問を良く見ると ICMP Redirect 「PROTO=ICMP TYPE=5」 をフィルタして落としていますね。 PROTO=ICMP TYPE=5 CODE=1 GATEWAY=172.30.1.253   [SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127   ID=4519 DF  PROTO=TCP SPT=58238 DPT=3389 WINDOW=64240 RES=0x00   ACK PSH URGP=0 ] これ、RDPのパケットを落としているログではなく、 [172.30.1.11から172.30.2.2ヘTCP=3389(RDP)へ接続」に来たけど、ゲートウェイは 172.30.1.253だからこっちに投げないでね。とTOPが返そうとしているICMP redirect パケット(ICMP type=redirect(5) )で、これを落としているようです。 ログに出ていた分の通過フィルタを設定したように書かれていたので、ちゃんと見てません でした。RDPだけ通したということだったのですね。 中継パケットでなく、top自身が生成するパケットなので、 iptables -A OUTPUT -o eth2 -p icmp --icmp-type redirect -j ACCEPT とかで,、ICMP redirect が出るようになると思います。 おそらく,RDPの許可フィルタは不要です。PC1は、ICMP redirect を topから受け取って、 PC2宛のゲートウェイ(172.30.1.253)を学習しますから、topは直接はRDPパケット中継に 関わりません。リダイレクトメッセージで正しいGWに送りなおせと指示するだけですので。

kureakai
質問者

お礼

情報ありがとうございました。 色々試してみた所、一応つながるようになりました。 過去設定してた内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT →RDPつながらず 今回設定変更してつながるようになった内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -j ACCEPT なぜかわかりませんが、「 -m state --state NEW,ESTABLISHED,RELATED」を消すことで RDP出来るようになりました。

kureakai
質問者

補足

補足ありがとうございます。 早速リダイレクトを許可しました。 設定:iptables -A OUTPUT -o eth2 -p icmp --icmp-type redirect -j ACCEPT 確かに、リダイレクトエラーが出なくなりましたが、以下メッセージが出るようになりました。 PC1からPC2へのRDP(3389)がDROPしているようです。 【ログ】 Feb 12 21:49:32 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=24498 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK URGP=0 Feb 12 21:49:32 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24499 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:32 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24507 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:32 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=24511 DF PROTO=TCP SPT=50981 DPT=3389 WINDOW=0 RES=0x00 ACK RST URGP=0 Feb 12 21:49:33 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24521 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:34 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24545 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:35 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=24564 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK URGP=0 Feb 12 21:49:37 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24596 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:41 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=24688 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK URGP=0 Feb 12 21:49:41 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=59 TOS=0x00 PREC=0x00 TTL=127 ID=24696 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=64240 RES=0x00 ACK PSH URGP=0 Feb 12 21:49:51 top kernel: IPTABLES_FORWARD_DROP : IN=eth2 OUT=eth2 SRC=172.30.1.11 DST=172.30.2.2 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=24901 DF PROTO=TCP SPT=50986 DPT=3389 WINDOW=0 RES=0x00 ACK RST URGP=0 以下2行ルールを追加しましたが、 RDPはつながらないまま、上記エラーログが出力されます。 【追記】 iptables -A FORWARD -p tcp -s 172.30.1.11 -d 172.30.2.2 --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -s 172.30.2.2 -d 172.30.1.11 --sport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 良い解決方法が無いでしょうか? ご教授お願いします。

回答No.2

1.TOPに 172,30.2.0/24宛の経路として、GW:172.16.1.253に向ける設定はありますか? 2.TOPは、ICMP redirectを返すように設定していますか?   要は、ICMP Redirect機能が無効になっていませんか?   PC1はおそらく、デフォルトゲートウェイ 172.30.1.254に向いているのだと思いますが、   PC1はPC2(172.30.2.2)宛パケットをTOP(172.30.1.254)に投げることになります。   しかし、172.30.2.0/24の空間は、TOP(172.16.1.254)ではなく、DOWN(172.16.1.253)の方   にありますから、 TOPは、ICMP redirectメッセージで DOWN宛に投げなおすように   指示を行い、PC1は、DOWN宛に投げるようになります。   このとき、ICMP redirect をフィルタしていると、172.30.2.2がDOWN(172.30.1.253)側に   あることが判らないため、パケットを投げることができません。   参考URL     http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29999&forum=11 3.DOWN側でもフィルタしている、あるいは、IPフォワーディングを無効にしているという   (確率はほぼ0ですが)オチはありませんか?   RDP以外で他のPC1→PC2宛パケットが通るならその問題はないとは思います。 4.PC1の172.30.2.2の経路を確認するとどうなりますか?   Windows でもコマンドラインで、route コマンドが利用できるため、   route -4 print で、それぞれの状態の確認してみてください。    1度も通信していない時    通信しようとしている時    1度でも通信しようとした後、通信していない時   前述のICMP Redirectの動作が確認できるかもしれません。 5.PC1へ一時的に172.30.2.0/24の経路を設定するとどうなりますか?   Windows でもコマンドラインで、route コマンドが利用できるため、    route add 172.30.2.0 mask 255.255.255.0 172.30.1.254   保存できないため、再起動したら消えてしまいますすが、こうすると   TOPは介在しないため、TOPが悪いのかDOWNが悪いのか区別がつく   かもしれません。 その他   ルータであるLinux上(TOP,DOWN両方)でtcpdumpを実行してパケットを見てもよい   かもしれません。   ICMP redirect等、どこまで、どの機器が関係して、パケットのフローが通っているか   判るかもしれません。   RDPパケットと(ICMP Redirectが発生しないといけないため)ICMPパケット両方   を見ることが重要です。

kureakai
質問者

補足

>1.TOPに 172,30.2.0/24宛の経路として、GW:172.16.1.253に向ける設定はありますか? ・設定済みです。route -nで表示されていることも確認しております。 >2.TOPは、ICMP redirectを返すように設定していますか? /etc/sysctl.confに、 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 二行を追記してみましたが、RDPできないままでした。 (PC1はWin7で、ICMPのエコー受信要求は、プライベートパブリック共に許可になっています。) >3.DOWN側でもフィルタしている、あるいは、IPフォワーディングを無効にしているという   (確率はほぼ0ですが)オチはありませんか? ping疎通、http疎通が取れています。 (この2点おかしな通り道をしてる気がするのですが、下記で説明させていただきます。) downのFWは全てACCEPTです。 >4.PC1(172.30.1.1)の172.30.2.2の経路を確認するとどうなりますか?  route -4 printを、pingを打つ前、打った後で試してみましたが、変化がなく 全てデフォルトゲートウェイで処理されているように見えます。 0.0.0.0 0.0.0.0 172.30.1.254 172.30.1.11 266   >5.PC1へ一時的に172.30.2.0/24の経路を設定するとどうなりますか?  「route add 172.30.2.0 mask 255.255.255.0 172.30.1.253」 をPC1で設定したところ、PC2へのRDPができるようになりました。 [root@down]# tcpdump host 172.30.1.11 and port 3389 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:46:05.211388 IP 172.30.1.11.54044 > 172.30.2.2.ms-wbt-server: Flags [S], seq 1154478877, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0 14:46:05.212929 IP 172.30.2.2.ms-wbt-server > 172.30.1.11.54044: Flags [S.], seq 2749818179, ack 1154478878, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0 14:46:05.213160 IP 172.30.1.11.54044 > 172.30.2.2.ms-wbt-server: Flags [.], ack 1, win 16425, length 0 14:46:05.217266 IP 172.30.1.11.54044 > 172.30.2.2.ms-wbt-server: Flags [P.], seq 1:20, ack 1, win 16425, length 19 14:46:05.219296 IP 172.30.2.2.ms-wbt-server > 172.30.1.11.54044: Flags [.], ack 20, win 256, length 0 14:46:05.219378 IP 172.30.2.2.ms-wbt-server > 172.30.1.11.54044: Flags [P.], seq 1:20, ack 20, win 256, length 19 14:46:05.425499 IP 172.30.1.11.54044 > 172.30.2.2.ms-wbt-server: Flags [.], ack 20, win 16420, length 0 14:46:22.241290 IP 172.30.1.11.54044 > 172.30.2.2.ms-wbt-server: Flags [F.], seq 20, ack 20, win 16420, length 0 14:46:22.241648 IP 172.30.2.2.ms-wbt-server > 172.30.1.11.54044: Flags [.], ack 21, win 256, length 0 14:46:22.241727 IP 172.30.2.2.ms-wbt-server > 172.30.1.11.54044: Flags [R.], seq 20, ack 21, win 0, length 0 と認証画面が出るまでのやり取りをキャプチャでました。 「route add 172.30.2.0 mask 255.255.255.0 172.30.1.253」を削除して もう一度キャプチャしようとしましたが全く通信ログが表示されませんでした。 【現在わかったこと】 1点目.topにiptables -A FORWARD -i eth2 -o eth2 -j ACCEPT を入れるとRDPが出来るようになる。 2点目.httpの通信を試してみた所、PC1のウインドウズFWログで、PC2ではなく、172.30.1.253(downのeth0)インターフェースから、接続要求があったとありました。DROPされていたので、 WindowsFWのapache接続ルール「172.30.1.253」を許可するとhttp通信が出来るようになりました。 3点目.PC1に、「routeを足して通信がいけた」ので、TOPのICMP Redirect設定が良くないということでしょうか。topにリダイレクト設定は入れたつもりなのですが。 tcpdumpでどのようなコマンドを入力するとRedirect通信が行われいるか確認出来るでしょうか。 【現状やりたいこと】 できれば個々の端末にrouteaddするのではなく、topが原因ぽいので topのリダイレクト設定で解決したいと思います。 どのように解決していくのがいいのでしょうか よろしくお願いします。

回答No.1

FWは詳しくないので、まとはずれだったらごめんなさい。 とりあえず確認してほしいのは、 (top) ・ルール変更後、ドロップのログが出力されていないこと ・downに対して pingが通ること (down) ・ドロップのログが出ていないこと ・topに対してpingが通ること ・ディスプレイマネージャが起動していること

kureakai
質問者

お礼

情報ありがとうございました。 色々試してみた所、一応つながるようになりました。 過去設定してた内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT →RDPつながらず 今回設定変更してつながるようになった内容:iptables -A FORWARD -s 172.30.1.11 -d 172.30.2.2 -p tcp --dport 3389 -j ACCEPT なぜかわかりませんが、「 -m state --state NEW,ESTABLISHED,RELATED」を消すことで RDP出来るようになりました。

kureakai
質問者

補足

>FWは詳しくないので、まとはずれだったらごめんなさい。 少しでも情報が欲しいので、大変助かります。 >(top) ・ルール変更後、ドロップのログが出力されていないこと →変更後表示されているログは、質問に記述させていただいたログだけとなります。 ・downに対して pingが通ること →PC1からdown、pc2に対してpingは通ります。 >(down) ・ドロップのログが出ていないこと →ALL ACCEPTのため問題ありません。 ・topに対してpingが通ること →PC2、downからPC1、topへのpingは通ります。 ・ディスプレイマネージャが起動していること →ディプレイマネージャというのはRDPのことでしょうか? 【現在わかったこと】 1点目.topにiptables -A FORWARD -i eth2 -o eth2 -j ACCEPT を入れるとRDPが出来るようになる 。 2点目.httpの通信を試してみた所、PC1のウインドウズFWログで、172.30.1.253(downのeth0)インターフェースから、接続要求があったとありました。DROPされていたので、 WindowsFWのapache接続ルール「172.30.1.253」を許可するとhttp通信が出来るようになりました。 downをPC2がまたぐことによりIPが変わってる?1点目のルールは広すぎるすぎるので、 もう少し粒度を落してRDPが通るようにしたいのです。 (172.30.1.0/24 から 172.30.2.0/24 へのRDPを通す みたいなルール)

関連するQ&A

  • RedHat9 Linux のDNSサーバのログが不正アクセスでないかどうか教えて欲しいです

    RedHat9 Linux でサーバを構築しています。(DMZも使用しています) ファイアーウォールとしてiptables を使用しています。 下記のようなログがよく出ます。大丈夫でしょうか? aaa.bbb.cc.dd1 ~ aaa.bbb.cc.dd8 まで8個のIPを取得しています。 不審なIPは、123.456.789.123 です。 May 9 04:14:38 ns kernel: ### NetBIOS ###IN=ppp0 OUT=eth1 SRC=123.456.789.123 DST=aaa.bbb.cc.dd4 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=57180 DF PROTO=TCP SPT=2987 DPT=135 WINDOW=16384 RES=0x00 SYN URGP=0 May 9 04:14:38 ns kernel: ### NetBIOS ###IN=ppp0 OUT=eth1 SRC=123.456.789.123 DST=aaa.bbb.cc.dd5 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=57182 DF PROTO=TCP SPT=2989 DPT=135 WINDOW=16384 RES=0x00 SYN URGP=0 May 9 04:14:38 ns kernel: ### NetBIOS ###IN=ppp0 OUT=eth1 SRC=123.456.789.123 DST=aaa.bbb.cc.dd6 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=57183 DF PROTO=TCP SPT=2991 DPT=135 WINDOW=16384 RES=0x00 SYN URGP=0 May 9 04:14:38 ns kernel: ### NetBIOS ###IN=ppp0 OUT=eth1 SRC=123.456.789.123 DST=aaa.bbb.cc.dd7 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=57184 DF PROTO=TCP SPT=2992 DPT=135 WINDOW=16384 RES=0x00 SYN URGP=0

  • DNSとiptablesについて

    DNSの仕組みについて分からないので教えて頂きたいです。 現在、マスターとスレーブサーバを構築しており、外向きの 名前解決など動作的には正常に動作していると思われます。 サーバはCentosで構築しており、iptablesで設定しています。 iptablesの一部で以下のように設定をしているのですが・・・ ------------------------------------------------------------------------- iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT ------------------------------------------------------------------------- 1.まず、TCP/UDP共にポートを開けておかないといかないと思うのですが、送信元   はANYで許可しておかないとダメでしょうか?   上位DNSサーバからの参照などに使われますよね?   もちろんbindの設定で、ゾーン転送はスレーブサーバへのみ許可しています。 2.スレーブサーバへのゾーン転送もできているのですが、マスタサーバ側のiptables   のログに下記のようなものが残っています。   送信元IPはスレーブサーバのIPでUDP送信ポート53が使われているようなのですが   送信ポート53は何に使われているのでしょうか?宛先ポート53との違いは? -------------------------------------------------------------------------- SRC=送信元IP DST=宛先IP LEN=72 TOS=0x00 PREC=0x00 TTL=62 ID=20999 PROTO=UDP SPT=53 DPT=47046 LEN=52 -------------------------------------------------------------------------- スレーブの53ポートからの通信がDNSの動作に必要なものであれば、iptablesのルールを追加 しようと思います。 情報が少ない場合は補足できる範囲で補足させて頂きます。 よろしくお願いします。

  • iptablesでポートフォアワードがうまくいかない。

    お世話になります。下記の通りiptablesでフィルターとNATの定義をしました。 しかし、内部からネットへの接続は可能ですが、外部からWebサーバーにあるHPが見れない指摘を受け、その原因を調べています。 不備な点、ご指導賜りたく存じます。 eth0:1.2.3.4 ---------- | Linux | ----------- eth1:192.168.0.101   | websever:192.168.0.100 cla:192.168.0.102~ modprobe iptable_nat modprobe ip_conntrack_ftp modprobe ip_nat_ftp iptables -F iptables -t nat -F iptables -t mangle -F iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT iptables -A OUTPUT -o eth1 -d 192.168.0.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -s 1.2.3.4 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -d 1.2.3.4 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -s 1.2.3.4 -j ACCEPT iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 -i eth0 --dport 80 -j DNAT --to 192.168.0.100:80 iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 iptables -t nat -A POSTROUTING -s 192.168.0.102/32 -o eth0 -j MASQUERADE

  • iptablesの設定について

    IISとApachのテストサイトを構築しています。 LINUXマシンにNICを2枚差し、 インターネット側:FW-OUT(eth0) プライベート側:FW-IN(eth1) WEBサイトの仮想アドレスとして、 V_WEB(eth0:1) V_WIN2K(eth0:2) MAINTマシンからPINGは172.32.0.0は通るのですが、 当該マシンから両WEBページが閲覧できません。 記述は、 http://www.atmarkit.co.jp/flinux/rensai/security03/security03a.html を参考に変更しました。 何か手がかりがあればお願いします。 #!/bin/sh # # Define IP Address FW_OUT='172.32.0.100' FW_IN='192.168.0.1' V_WEB='172.32.0.10' V_WIN2K='172.32.0.20' R_WEB='192.168.0.10' R_WIN2K='192.168.0.20' MAINT='172.32.0.150' ANY='0.0.0.0' # # Flush chains /sbin/iptables -F # /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT DROP # /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # /sbin/iptables -A OUTPUT -p icmp -s $FW_OUT --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $FW_OUT -j ACCEPT # /sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WEB -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WIN2K --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WIN2K -j ACCEPT # /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 0 -d $V_WEB -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 8 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 0 -d $V_WIN2K -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WIN2K --icmp-type 8 -d $MAINT -j ACCEPT # /sbin/iptables -A INPUT -p TCP -s $MAINT --dport 22 -d $FW_OUT -i eth0 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP ! --syn --sport 22 -s $FW_OUT -d $MAINT -o eth0 -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 80 -d $R_WEB -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 80 -s $R_WEB -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 443 -d $R_WEB -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 443 -s $R_WEB -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 80 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 80 -s $R_WIN2K -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 135 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 135 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 137 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 137 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 138 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 138 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 139 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 139 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 445 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 445 -s $R_WIN2K -d $ANY -j ACCEPT # # Flush Nat Rules # /sbin/iptables -t nat -F # # Nat Rules # /sbin/iptables -t nat -A POSTROUTING -s $R_WEB -o eth0 -p TCP -j SNAT --to $V_WEB /sbin/iptables -t nat -A POSTROUTING -s $R_WIN2K -o eth0 -p TCP -j SNAT --to $V_WIN2K # # End Of Rules [root@firewall FW]#

  • Linuxサーバに社内からSSH接続をすると、決まった会社のIPがとれます。大丈夫でしょうか?

    RedHat9 Linux でサーバ兼ルータを構築しています。(DMZも使用しています) (WAN側 ppp0 、DMZ側 eth1、LAN側 eth2) iptables の設定として、 # NetBIOS関連のパケットはログをとり、インターネットに出さない iptables -N net-bios iptables -A net-bios -j LOG --log-prefix "### NetBIOS ###" iptables -A net-bios -j DROP iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j net-bios としていました。(今はログが多くなるということでやめようと思っています) 社内PCからサーバにSSHでログインすると、必ず、下記のようなログが出ます。 (私のPCはIP 192.168.*.* ) May 26 15:00:00 ns kernel: ### NetBIOS ###IN=eth2 OUT=ppp0 SRC=192.168.*.* DST=aaa.bbb.cc.dd LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=**** DF PROTO=TCP SPT=1335 DPT=139 WINDOW=**** RES=0x00 SYN URGP=0 DST=aaa.bbb.cc.dd というIPは、知らない会社のIPです。 これはなにか悪さをされているということでしょうか?

  • iptablesについて

    Linuxのiptablesについて教えてください、初心者です。 VPSを試しに使ってiptablesを勉強しています。 sshから下記を実行しました iptables -F iptables -X iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -p tcp -j ACCEPT iptables -A INPUT -p udp -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -j ACCEPT iptables -P INPUT DROP /etc/init.d/iptables save service iptables restart 結果、(1)では22、(2)では22 80、(3)では22 25 80が開いているように表示されてます ブラウザからサーバーにあるホームページは閲覧できません(設定通りで正しいと思います) (1)(2)(3)の違いはなんなのでしょうか?別モノなのでしょうか? (1)iptables -nL Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination (2)nmap (ホスト名) Starting Nmap 5.51 ( http://nmap.org ) at 2014-05-15 08:04 JST Nmap scan report for ホスト名 (IPアドレス) Host is up (0.000013s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds (3)nmap localhost Starting Nmap 5.51 ( http://nmap.org ) at 2014-05-15 08:01 JST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000070s latency). Other addresses for localhost (not scanned): 127.0.0.1 Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

  • DMZのLinuxサーバでメールとFTPができません。

    RedHatLinux9でサーバを構築しました。 DMZにWEBサーバとメールサーバをつなげたのですが、WEBサーバは見えるのですが、メールサーバがつながりません。メールサーバには、sendmail と UWIMAP を使用しています。FTPでもDMZのサーバにログインできません。FFFTPでつなげようとすると、“Listenソケットが取得できません”と表示されます。 何が原因と考えられますか? iptables には、 (WANはppp0、DMZはeth1、LANはeth2、) iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i eth2 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth2 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i ppp0 -o eth1 -p tcp -d aaa.bbb.cc.ddd/32 --dport 80 -j ACCEPT iptables -A FORWARD -i ppp0 -o eth1 -p tcp -d aaa.bbb.cc.ddd/32 --dport 25 -j ACCEPT iptables -A FORWARD -i eth1 -o ppp0 -p tcp -s aaa.bbb.cc.ddd/32 --dport 25 -j ACCEPT という記述がなされています。 iptables -A FORWARD -i eth2 -j ACCEPT これだけでは、FTPでログインできないんでしたっけ。。 iptables -A FORWARD -i eth2 -j ACCEPT iptables -A FORWARD -i ppp0 -o eth1 -p tcp -d aaa.bbb.cc.ddd/32 --dport 25 -j ACCEPT iptables -A FORWARD -i eth1 -o ppp0 -p tcp -s aaa.bbb.cc.ddd/32 --dport 25 -j ACCEPT メールもこれだけではだめなんでしょうか?

  • iptablesでFTPのパッシブモード通信許可

    こんにちは。 iptablesの学習でテスト用のFWサーバーと2台のWebサーバーをつくりました。 いまはForwardでアクセスごとに転送先を振り分ける実験をしています。 FTPのForward設定でわからないことがあるので質問させてください。 やりたいこと: ip_conntrack_ftpを組み込めばiptablesにいちいちパッシブ通信の使用ポートすべてを指定しなくても、モジュールが自動で制御してくれるという情報をネットで見かけ、それをやってみようと考えています。ところがどうがんばってもFTPのパッシブモードがつながりません。FTP以外のサービス、たとえばDNS, NTP, HTTP等のForwardは問題なく行えています。 環境: FWサーバー → CentOS6 iptablesで外部からのアクセスをブロックしたり、振り分けたり。 WEBサーバー → CentOS6 apacheとvsftpdでWebサーバーを構成。iptables無効です。 ルーター → 業務用ですがファイアウォール等はすべて無効になっています。 111.222.333.0はグローバルIPアドレスです。 192.168.1.0はローカルIPアドレスです。                              -eth0(WEB_SERVER1)                              | 192.168.1.2(→111.222.333.2) (ONU)-(ROUTER)-eth0(FW_SERVER)eth1----|        111.222.333.1(eth0)          |        111.222.333.2(eth0:1)         -eth0(WEB_SERVER2)        111.222.333.3(eth0:2)          192.168.1.3(→111.222.333.3)        192.168.1.1(eth1) FWサーバーのiptable設定: net.ipv4.ip_forward = 1 ip_conntrack_ftpモジュール有効 ip_nat_ftpモジュール有効 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP . .(一部省略) . # HTTP iptables -A FORWARD -p tcp -i eth0 -o eth1 -m multiport --dport 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -i eth1 -o eth0 -m multiport --sport 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT # FTP(ここをどうしたらいいのかわからない) iptables -A FORWARD -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --sport 21 -j ACCEPT # Webserver1 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.2 -j DNAT --to-destination 192.168.1.2 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.2 -j SNAT --to-source 111.222.333.2 # Webserver2 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.3 -j DNAT --to-destination 192.168.1.3 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.3 -j SNAT --to-source 111.222.333.3 上記設定でFTPのForward部分をmultiportにしてポート20を入れたり除いたり、NEWやESTABLISHEDやRELATEDを入れたり消したり、いろいろ試行錯誤していますがFilezillaで下のようなエラーがでます。 PASV レスポンス: 227 Entering Passive Mode (111,222,333,2,92,226). コマンド: LIST エラー: 接続タイムアウト エラー: ディレクトリ一覧表示の取り出しに失敗しました 説明が長くて恐縮ですがよろしくお願いします。 <(_ _)>

  • iptablesの設定でINPUTが制限されない

    iptablesをさわっています。80番ポートのみあけたいのですが、80番以外も外部からアクセスできてしまいます。 iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT FILTERNAME=CKFILTER TARGET=CKFILTERED iptables -A $FILTERNAME -s 58.6.0.0/17 -j $TARGET iptables -A $FILTERNAME -s 58.6.128.0/17 -j $TARGET iptables -A $FILTERNAME -s 58.7.0.0/16 -j $TARGET iptables -A $FILTERNAME -s 58.14.0.0/15 -j $TARGET iptables -A $FILTERNAME -s 58.16.0.0/16 -j $TARGET iptables -A $FILTERNAME -s 58.17.0.0/17 -j $TARGET iptables -A CKFILTER -j ACCEPT iptables -A CKFILTERED -j LOG --log-prefix "Reject-TCP " iptables -A CKFILTERED -j DROP iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT どこが間違っているのか見つけられず困っています。

  • LINUXのiptablesについて

    通常LINUXのコマンドライン上で新たにiptablesルールを作り直すとき # iptablse -F # iptables -P INPUT DROP # iptables -P OUTPUT ACCEPT # iptables -P FORWARD DROP # service iptables save と上記のようにコマンドを叩いて、あたらしいデフォルトのチェインポリシーを 事前に定義するもののようです。 この後【/etc/sysconfig/iptablse】というファイルを覗いてみると、 # Generated by iptables-save v1.4.7 on Wed Sep 5 06:20:56 2012 *filter :INPUT DROP [1:151] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] COMMIT # Completed on Wed Sep 5 06:20:56 2012 上記のような内容がiptablesに記述されていると思います。 おそらくこれに特定の条件のみ パケットを受信するportを開放したりする記述を追記していくものと存じます。 たとえば -A INPUT -p tcp --dport 22 -J ACCEPT などと記述して他ホストからのssdポートへのアクセスを 許可するといったかんじですね。 ただ冒頭のデフォルトのポリシーの設定に関しては、やはりコマンドライン上で # iptablse -F # iptables -P INPUT DROP # iptables -P OUTPUT ACCEPT # iptables -P FORWARD DROP # service iptables save このようなコマンドを叩いて設定するのが普通なのでしょうか? 例えば、デフォルトポリシーを直接 ファイルに記述するといったことはしないのでしょうか? ================================================================= *filter #以下で、デフォルトのフィルタポリシーを設定する -P INPUT DROP -P OUTPUT ACCEPT -P FORWARD DROP COMMIT ================================================================= 上記のように、直接iptablesの書式で書き込むように・・。 気になった理由としてはコマンドラインでデフォルトポリシーを指定した場合と コマンド -Aをつかって任意のportを開放する指定をした時の記述が異なることがきになっているのです。 デフォルトポリシーの記述は :INPUT DROP [1:151] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] 上記のような 行頭にコロンがついたような記述になっているのに -A INPUT -p tcp --dport 22 -J ACCEPT 上記のような -Aコマンドを叩いたときは、そのままコマンドがiptablseファイルに記述されているように思います。 :INPUT DROP [1:151] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -P INPUT DROP -P OUTPUT ACCEPT -P FORWARD DROP 上記の二種類の書き方を直接iptablesに記述してもキチンと動作します。 なぜ、上記のようにデフォルトポリシーに関しては二種類の書き方が存在するのでしょうか?