外部サイトへのftpができないのでipfwの設定を

「外部サイトへのftpができないのでipfwの設定を」の編集履歴(バックアップ)一覧はこちら

外部サイトへのftpができないのでipfwの設定を」(2006/02/25 (土) 01:29:46) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*外部サイトへのftpができないのでipfwの設定を &html(<u>712 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:44:16</u>) 5.3Rで ppp(PPPoE)+ipfw+natd なルータを構築中です. 主に 英語handbook の 26.6.5.7 An Example NAT and Stateful Ruleset を参考にしています. ぶっちゃけると外部サイトへのftp接続がうまくいきません. &html(#) ftp &html(-)p anonymous@ftp3.jp.freebsd.org Trying 2001:e40:100:207::2... ftp: connect to address 2001:e40:100:207::2: No route to host Trying 210.188.213.230... Connected to ring.sakura.ad.jp. 220 ProFTPD 1.3.0rc2 Server (ring.sakura.ad.jp) [::ffff:210.188.213.230] 331 Anonymous login ok, send your complete email address as your password. Password: 230&html(-) &html(#)################################################# &html(#) Welcome to the RingServer FTP service. # &html(#)################################################# Localtime [Wed Feb 15 00:39:18 2006 JST+0900] Current [4] users / Max [100] users 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 229 Entering Extended Passive Mode (|||65348|) ftp: connect: Permission denied ftp> こんな感じで,ログイン自体はできるんですが……といった状態です. 何が悪いのかさっぱりになってしまったので,とりあえず色々晒してみようと思います. アドバイスをいただけると助かります. ---- &html(<u>713 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:53:44</u>) WAN向けNICはxl0, LAN向けNICはxl1 &html(----) rc.confの一部 ppp_enable="YES" ppp_mode="ddial" ppp_nat="NO" ppp_profile="&html(-)unit0 hoge" firewall_enable="YES" firewall_script="/etc/ipfw.rules" firewall_logging="YES" natd_enable="YES" natd_interface="tun0" natd_flags="&html(-)dynamic -f /etc/natd.conf" &html(----) ppp.conf default: &html(#) set log Phase Chat LCP IPCP CCP tun command set log Phase tun command set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 set timeout 0 hoge: set device PPPoE:xl0 set authname ******** set authkey ******** set dial set login add default HISADDR enable dns ---- &html(<u>714 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:58:01</u>) &html(----) natd.conf log yes verbose no deny_incoming no log_denied no log_facility security use_sockets yes same_ports yes unregistered_only yes &html(----) ipfw.rules &html(#)!/bin/sh ipfw &html(-)q -f flush cmd="ipfw &html(-)q add" oif="tun0" iif="xl1" skip="skipto 1000" good_tcpo="20,21,etc" # etcにはその他色々使うものを記述 good_udpo="20,21,etc" # etcにはその他色々使うものを記述 &html(#) services provided by server # 鯖が提供するサービス pub_tcp="22,80,etc" &html(#) services provided inner_pc # LAN内のクライアントが提供するサービス inner_tcp="etc" inner_udp="etc" つづく ---- &html(<u>715 :712:2006/02/15(水) 00:59:28</u>) 名前じゃなくてE&html(-)mailに712って書いてたorz &html(#) allow LAN <&html(-)> LAN $cmd 00005 allow all from any to any via $iif &html(#) allow loopback $cmd 00010 allow all from any to any via lo0 &html(#) allow nat IN $cmd 00100 divert natd ip from any to any in via $oif $cmd 00101 check&html(-)state &html(#) if packet match to these rules, goto&html(-)line 1000 and allow &html(#) allow DNS $cmd 00120 $skip udp from any to ***.***.***.*** 53 out via $oif keep&html(-)state $cmd 00121 $skip udp from any to ***.***.***.*** 53 out via $oif keep&html(-)state &html(#) good port(LAN&html(-)>WAN) $cmd 00125 $skip tcp from any to any $good_tcpo out via $oif setup keep&html(-)state $cmd 00126 $skip udp from any to any $good_udpo out via $oif keep&html(-)state &html(#) ICMP $cmd 00130 $skip icmp from any to any out via $oif keep&html(-)state &html(#) NTP $cmd 00135 $skip udp from any to any 123 out via $oif keep&html(-)state あと少し ---- &html(<u>716 :712:2006/02/15(水) 01:00:00</u>) &html(#) services provided by server(myself) $cmd 00420 allow tcp from any to me $pub_tcp in via $oif setup limit src&html(-)port 10 $cmd 00430 allow tcp from any to me 53 in via $iif $cmd 00440 allow tcp from any to me 53 out via $iif &html(#) services provided by client $cmd 000450 $skip all from any to any $inner_tcp $cmd 000451 $skip all from any $inner_tcp to any $cmd 000452 $skip all from any to any $inner_udp $cmd 000453 $skip all from any $inner_udp to any &html(#) deny others $cmd 00500 deny log ip from any to any &html(#) allow $cmd 01000 divert natd ip from any to any out via $oif $cmd 65000 allow ip from any to any 以上です. 助けて偉い人. ---- &html(<u>717 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:15:11</u>) 00125でgood_tcpoしか許可してないからだろ。 ---- &html(<u>718 :712:2006/02/15(水) 01:27:42</u>) 確かFTPって任意のポートを叩きに行った気がするんですけど, $cmd 00125 $skip tcp from any to any 1024&html(-)65535 out via $oif setup keep-state みたいに開けまくりにすると,防火壁の意味がかなり無くなると思うんですよ. いい方法があるんでしょうか? ---- &html(<u>719 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:39:06</u>) Passive Modeは、サーバ側からクライアントに通信するポートを ランダム、もしくはFTPサーバの設定で指定されたものを通知してくる その通知されたポートを使用して、LAN内から外部へ接続する だから &html(#) services provided inner_pc ここらの設定で制限されている ---- &html(<u>720 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:39:49</u>) passiveモードとactiveモード ---- &html(<u>721 :名無しさん@お腹いっぱい。:2006/02/15(水) 02:23:31</u>) &html(>)>718 outboundである。 PFWみたいにアプリケーションでフィルターするわけじゃない。 なので問題ない。 ---- &html(<u>722 :712:2006/02/15(水) 02:55:41</u>) 素早いレスに感謝します. が,恥ずかしながら,結局何をどうすればFTPが使えるのかさっぱりわかりません. とりあえず redirect_port tcp 192.168.*.*:10021 10021 redirect_port udp 192.168.*.*:10021 10021 good_tcpo="hogehoge,10021" good_udpo="hogehoge,10021" inner_tcp="hogehoge,10021" inner_udp="hogehoge,10021" あたりをやって,FFFTPで10021番アクセスしてみたんですが,駄目でした. (PASV on/off 両方駄目.) 何を見て設定すればいいんだorz ---- &html(<u>723 :名無しさん@お腹いっぱい。:2006/02/15(水) 03:18:12</u>) 接続先のサーバから通知されたポート番号に 内側からセッションを開始(Passive Mode)しようとしたら Permission denied なんだから、そのポートが制限されているって事 とりあえず内側から外側への制限を全部無くしてみ ---- &html(<u>724 :名無しさん@お腹いっぱい。:2006/02/15(水) 06:47:12</u>) 内側からのアクセスを規制するとFTPは厄介ですよね。 まあ、アクティブモードでつなぎに行って、20ポートからだけ開けとけばOKかと。 $cmd 00127 $skip tcp from any 20 to any in via $oif setup keep&html(-)state かな。 でも20ポートからなら何だって繋げれるから、0&html(-)1023ポートはそれより前に閉めとかないとね。 $cmd 00050 deny tcp from any to any 0&html(-)19,21,23-79,81-1023 in via $oif $cmd 00055 deny udp from any to any 0&html(-)1023 in via $oif あとはX(6000&html(-)6031?)とかmysql(?)とかjserverとか気になるとこも閉めとくべし? $cmd 00060 deny tcp from any to any 6000&html(-)6031 in via $oif $cmd 00070 deny udp from any to any 6000&html(-)6031 in via $oif 私もエロくないので、もっとえらい人を待ちましょう。 ---- &html(<u>725 :名無しさん@お腹いっぱい。:2006/02/15(水) 10:11:31</u>) FreeBSD の ftp/fetch の場合は active 時の port の範囲は 制御できます(man ftp => restrict とか参照) というわけで IPFW にこんなの追加 &html(#) for ftp&html(-)data port ${fwcmd} add pass tcp from any 20&html(-)21 to ${oip} 49152-65535 setup まあもっと狭めてもいいけど ---- &html(<u>733 :712:2006/02/15(水) 20:42:01</u>) &html(>)>724さんの &html(>)$cmd 00127 $skip tcp from any 20 to any in via $oif setup keep&html(-)state でつながりました. ありがとうございます. これでFreeBSDのisoイメージが落とせます. 私の中では>>724さんをエロい人だと勝手に認定しておきます. &html(>)でも20ポートからなら何だって繋げれるから、0&html(-)1023ポートはそれより前に閉めとかないとね。 すいません,これがどういう意味なのかわからんのですが, どういう意味なのでしょう?(日本語になってないな.) ついでに教えていただけると助かります. ---- &html(<u>734 :724:2006/02/15(水) 20:56:15</u>) &html(>)>733 00127のルールは外部のTCP22ポートから内部の*任意の*TCPポートへのコネクションを許可してるわけ。 だから、外部TCPポートが22であれば、内部の139や445や6000にアクセスを許してしまう。 これを避けるために、00127よりも前に(00050から00070のルール)で危険なポートを閉めてるわけ。 でも私はファイアウォール付きルータ内で普段は運用しているのでipfwを実運用したことはないので 参考程度にどうぞ。*安全は保障しません。自己責任でどうぞ。。。 ---- &html(<u>744 :名無しさん@お腹いっぱい。:2006/02/15(水) 22:14:04</u>) &html(>)>733=712 check&html(-)state/keep-stateについて調るべし #静観していたが、あまりにも無茶苦茶なことしてるので 「ipfw ftp ステートフル」とかぐぐるといろいろ出て来る ----
*外部サイトへのftpができないのでipfwの設定を &html(<u>712 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:44:16</u>) 5.3Rで ppp(PPPoE)+ipfw+natd なルータを構築中です. 主に 英語handbook の 26.6.5.7 An Example NAT and Stateful Ruleset を参考にしています. ぶっちゃけると外部サイトへのftp接続がうまくいきません. &html(#) ftp -p anonymous@ftp3.jp.freebsd.org Trying 2001:e40:100:207::2... ftp: connect to address 2001:e40:100:207::2: No route to host Trying 210.188.213.230... Connected to ring.sakura.ad.jp. 220 ProFTPD 1.3.0rc2 Server (ring.sakura.ad.jp) [::ffff:210.188.213.230] 331 Anonymous login ok, send your complete email address as your password. Password: 230- &html(#)################################################# &html(#) Welcome to the RingServer FTP service. # &html(#)################################################# Localtime [Wed Feb 15 00:39:18 2006 JST+0900] Current [4] users / Max [100] users 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 229 Entering Extended Passive Mode (|||65348|) ftp: connect: Permission denied ftp> こんな感じで,ログイン自体はできるんですが……といった状態です. 何が悪いのかさっぱりになってしまったので,とりあえず色々晒してみようと思います. アドバイスをいただけると助かります. ---- &html(<u>713 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:53:44</u>) WAN向けNICはxl0, LAN向けNICはxl1 &html(----) rc.confの一部 ppp_enable="YES" ppp_mode="ddial" ppp_nat="NO" ppp_profile="-unit0 hoge" firewall_enable="YES" firewall_script="/etc/ipfw.rules" firewall_logging="YES" natd_enable="YES" natd_interface="tun0" natd_flags="-dynamic -f /etc/natd.conf" &html(----) ppp.conf default: &html(#) set log Phase Chat LCP IPCP CCP tun command set log Phase tun command set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 set timeout 0 hoge: set device PPPoE:xl0 set authname ******** set authkey ******** set dial set login add default HISADDR enable dns ---- &html(<u>714 :名無しさん@お腹いっぱい。:2006/02/15(水) 00:58:01</u>) &html(----) natd.conf log yes verbose no deny_incoming no log_denied no log_facility security use_sockets yes same_ports yes unregistered_only yes &html(----) ipfw.rules &html(#)!/bin/sh ipfw -q -f flush cmd="ipfw -q add" oif="tun0" iif="xl1" skip="skipto 1000" good_tcpo="20,21,etc" # etcにはその他色々使うものを記述 good_udpo="20,21,etc" # etcにはその他色々使うものを記述 &html(#) services provided by server # 鯖が提供するサービス pub_tcp="22,80,etc" &html(#) services provided inner_pc # LAN内のクライアントが提供するサービス inner_tcp="etc" inner_udp="etc" つづく ---- &html(<u>715 :712:2006/02/15(水) 00:59:28</u>) 名前じゃなくてE-mailに712って書いてたorz &html(#) allow LAN <-> LAN $cmd 00005 allow all from any to any via $iif &html(#) allow loopback $cmd 00010 allow all from any to any via lo0 &html(#) allow nat IN $cmd 00100 divert natd ip from any to any in via $oif $cmd 00101 check-state &html(#) if packet match to these rules, goto-line 1000 and allow &html(#) allow DNS $cmd 00120 $skip udp from any to ***.***.***.*** 53 out via $oif keep-state $cmd 00121 $skip udp from any to ***.***.***.*** 53 out via $oif keep-state &html(#) good port(LAN->WAN) $cmd 00125 $skip tcp from any to any $good_tcpo out via $oif setup keep-state $cmd 00126 $skip udp from any to any $good_udpo out via $oif keep-state &html(#) ICMP $cmd 00130 $skip icmp from any to any out via $oif keep-state &html(#) NTP $cmd 00135 $skip udp from any to any 123 out via $oif keep-state あと少し ---- &html(<u>716 :712:2006/02/15(水) 01:00:00</u>) &html(#) services provided by server(myself) $cmd 00420 allow tcp from any to me $pub_tcp in via $oif setup limit src-port 10 $cmd 00430 allow tcp from any to me 53 in via $iif $cmd 00440 allow tcp from any to me 53 out via $iif &html(#) services provided by client $cmd 000450 $skip all from any to any $inner_tcp $cmd 000451 $skip all from any $inner_tcp to any $cmd 000452 $skip all from any to any $inner_udp $cmd 000453 $skip all from any $inner_udp to any &html(#) deny others $cmd 00500 deny log ip from any to any &html(#) allow $cmd 01000 divert natd ip from any to any out via $oif $cmd 65000 allow ip from any to any 以上です. 助けて偉い人. ---- &html(<u>717 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:15:11</u>) 00125でgood_tcpoしか許可してないからだろ。 ---- &html(<u>718 :712:2006/02/15(水) 01:27:42</u>) 確かFTPって任意のポートを叩きに行った気がするんですけど, $cmd 00125 $skip tcp from any to any 1024-65535 out via $oif setup keep-state みたいに開けまくりにすると,防火壁の意味がかなり無くなると思うんですよ. いい方法があるんでしょうか? ---- &html(<u>719 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:39:06</u>) Passive Modeは、サーバ側からクライアントに通信するポートを ランダム、もしくはFTPサーバの設定で指定されたものを通知してくる その通知されたポートを使用して、LAN内から外部へ接続する だから &html(#) services provided inner_pc ここらの設定で制限されている ---- &html(<u>720 :名無しさん@お腹いっぱい。:2006/02/15(水) 01:39:49</u>) passiveモードとactiveモード ---- &html(<u>721 :名無しさん@お腹いっぱい。:2006/02/15(水) 02:23:31</u>) &html(>)>718 outboundである。 PFWみたいにアプリケーションでフィルターするわけじゃない。 なので問題ない。 ---- &html(<u>722 :712:2006/02/15(水) 02:55:41</u>) 素早いレスに感謝します. が,恥ずかしながら,結局何をどうすればFTPが使えるのかさっぱりわかりません. とりあえず redirect_port tcp 192.168.*.*:10021 10021 redirect_port udp 192.168.*.*:10021 10021 good_tcpo="hogehoge,10021" good_udpo="hogehoge,10021" inner_tcp="hogehoge,10021" inner_udp="hogehoge,10021" あたりをやって,FFFTPで10021番アクセスしてみたんですが,駄目でした. (PASV on/off 両方駄目.) 何を見て設定すればいいんだorz ---- &html(<u>723 :名無しさん@お腹いっぱい。:2006/02/15(水) 03:18:12</u>) 接続先のサーバから通知されたポート番号に 内側からセッションを開始(Passive Mode)しようとしたら Permission denied なんだから、そのポートが制限されているって事 とりあえず内側から外側への制限を全部無くしてみ ---- &html(<u>724 :名無しさん@お腹いっぱい。:2006/02/15(水) 06:47:12</u>) 内側からのアクセスを規制するとFTPは厄介ですよね。 まあ、アクティブモードでつなぎに行って、20ポートからだけ開けとけばOKかと。 $cmd 00127 $skip tcp from any 20 to any in via $oif setup keep-state かな。 でも20ポートからなら何だって繋げれるから、0-1023ポートはそれより前に閉めとかないとね。 $cmd 00050 deny tcp from any to any 0-19,21,23-79,81-1023 in via $oif $cmd 00055 deny udp from any to any 0-1023 in via $oif あとはX(6000-6031?)とかmysql(?)とかjserverとか気になるとこも閉めとくべし? $cmd 00060 deny tcp from any to any 6000-6031 in via $oif $cmd 00070 deny udp from any to any 6000-6031 in via $oif 私もエロくないので、もっとえらい人を待ちましょう。 ---- &html(<u>725 :名無しさん@お腹いっぱい。:2006/02/15(水) 10:11:31</u>) FreeBSD の ftp/fetch の場合は active 時の port の範囲は 制御できます(man ftp => restrict とか参照) というわけで IPFW にこんなの追加 &html(#) for ftp-data port ${fwcmd} add pass tcp from any 20-21 to ${oip} 49152-65535 setup まあもっと狭めてもいいけど ---- &html(<u>733 :712:2006/02/15(水) 20:42:01</u>) &html(>)>724さんの &html(>)$cmd 00127 $skip tcp from any 20 to any in via $oif setup keep-state でつながりました. ありがとうございます. これでFreeBSDのisoイメージが落とせます. 私の中では>>724さんをエロい人だと勝手に認定しておきます. &html(>)でも20ポートからなら何だって繋げれるから、0-1023ポートはそれより前に閉めとかないとね。 すいません,これがどういう意味なのかわからんのですが, どういう意味なのでしょう?(日本語になってないな.) ついでに教えていただけると助かります. ---- &html(<u>734 :724:2006/02/15(水) 20:56:15</u>) &html(>)>733 00127のルールは外部のTCP22ポートから内部の*任意の*TCPポートへのコネクションを許可してるわけ。 だから、外部TCPポートが22であれば、内部の139や445や6000にアクセスを許してしまう。 これを避けるために、00127よりも前に(00050から00070のルール)で危険なポートを閉めてるわけ。 でも私はファイアウォール付きルータ内で普段は運用しているのでipfwを実運用したことはないので 参考程度にどうぞ。*安全は保障しません。自己責任でどうぞ。。。 ---- &html(<u>744 :名無しさん@お腹いっぱい。:2006/02/15(水) 22:14:04</u>) &html(>)>733=712 check-state/keep-stateについて調るべし #静観していたが、あまりにも無茶苦茶なことしてるので 「ipfw ftp ステートフル」とかぐぐるといろいろ出て来る ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。