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

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

外部サイトへのftpができないのでipfwの設定を - (2006/02/23 (木) 21:47:06) の1つ前との変更点

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

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

*外部サイトへのftpができないのでipfwの設定を Q:712-716 5.3Rで ppp(PPPoE)+ipfw+natd なルータを構築中です. 主に 英語handbook の 26.6.5.7 An Example NAT and Stateful Ruleset を参考にしています. ぶっちゃけると外部サイトへのftp接続がうまくいきません. # 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- ################################################## # Welcome to the RingServer FTP service. # ################################################## &nbsp;&nbsp;Localtime [Wed Feb 15 00:39:18 2006 JST+0900] &nbsp;&nbsp;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> こんな感じで,ログイン自体はできるんですが……といった状態です. 何が悪いのかさっぱりになってしまったので,とりあえず色々晒してみようと思います. アドバイスをいただけると助かります. 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: # 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(----) 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 #!/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にはその他色々使うものを記述 # services provided by server # 鯖が提供するサービス pub_tcp="22,80,etc" # services provided inner_pc # LAN内のクライアントが提供するサービス inner_tcp="etc" inner_udp="etc" # allow LAN <-> LAN $cmd 00005 allow all from any to any via $iif # allow loopback $cmd 00010 allow all from any to any via lo0 # allow nat IN $cmd 00100 divert natd ip from any to any in via $oif $cmd 00101 check-state # if packet match to these rules, goto-line 1000 and allow # 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 # 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 # ICMP $cmd 00130 $skip icmp from any to any out via $oif keep-state # NTP $cmd 00135 $skip udp from any to any 123 out via $oif keep-state # 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 # 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 # deny others $cmd 00500 deny log ip from any to any # allow $cmd 01000 divert natd ip from any to any out via $oif $cmd 65000 allow ip from any to any 以上です. 助けて偉い人. ---- A:717 00125でgood_tcpoしか許可してないからだろ。 ---- Q:718=712 確かFTPって任意のポートを叩きに行った気がするんですけど, $cmd 00125 $skip tcp from any to any 1024-65535 out via $oif setup keep-state みたいに開けまくりにすると,防火壁の意味がかなり無くなると思うんですよ. いい方法があるんでしょうか? ---- A:719 Passive Modeは、サーバ側からクライアントに通信するポートを ランダム、もしくはFTPサーバの設定で指定されたものを通知してくる その通知されたポートを使用して、LAN内から外部へ接続する だから # services provided inner_pc ここらの設定で制限されている ---- A:720 passiveモードとactiveモード ---- A:721 &gt;&gt;718 outboundである。 PFWみたいにアプリケーションでフィルターするわけじゃない。 なので問題ない。 ---- Q:722 素早いレスに感謝します. が,恥ずかしながら,結局何をどうすれば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 ---- A:723 接続先のサーバから通知されたポート番号に 内側からセッションを開始(Passive Mode)しようとしたら Permission denied なんだから、そのポートが制限されているって事 とりあえず内側から外側への制限を全部無くしてみ ---- A:724 内側からのアクセスを規制すると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 私もエロくないので、もっとえらい人を待ちましょう。 ---- A:725 FreeBSD の ftp/fetch の場合は active 時の port の範囲は 制御できます(man ftp => restrict とか参照) というわけで IPFW にこんなの追加 # for ftp-data port ${fwcmd} add pass tcp from any 20-21 to ${oip} 49152-65535 setup まあもっと狭めてもいいけど ---- Q:733 &gt;&gt;724さんの &gt;$cmd 00127 $skip tcp from any 20 to any in via $oif setup keep-state でつながりました. ありがとうございます. これでFreeBSDのisoイメージが落とせます. 私の中では>>724さんをエロい人だと勝手に認定しておきます. &gt;でも20ポートからなら何だって繋げれるから、0-1023ポートはそれより前に閉めとかないとね。 すいません,これがどういう意味なのかわからんのですが, どういう意味なのでしょう?(日本語になってないな.) ついでに教えていただけると助かります. ---- A:734 &gt;&gt;733 00127のルールは外部のTCP22ポートから内部の*任意の*TCPポートへのコネクションを許可してるわけ。 だから、外部TCPポートが22であれば、内部の139や445や6000にアクセスを許してしまう。 これを避けるために、00127よりも前に(00050から00070のルール)で危険なポートを閉めてるわけ。 でも私はファイアウォール付きルータ内で普段は運用しているのでipfwを実運用したことはないので 参考程度にどうぞ。*安全は保障しません。自己責任でどうぞ。。。 ---- A:744 check-state/keep-stateについて調るべし #静観していたが、あまりにも無茶苦茶なことしてるので 「ipfw ftp ステートフル」とかぐぐるといろいろ出て来る
*外部サイトへのftpができないのでipfwの設定を Q:712-716 5.3Rで ppp(PPPoE)+ipfw+natd なルータを構築中です. 主に 英語handbook の 26.6.5.7 An Example NAT and Stateful Ruleset を参考にしています. ぶっちゃけると外部サイトへのftp接続がうまくいきません. # 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- ################################################## # Welcome to the RingServer FTP service. # ################################################## &nbsp;&nbsp;Localtime [Wed Feb 15 00:39:18 2006 JST+0900] &nbsp;&nbsp;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> こんな感じで,ログイン自体はできるんですが……といった状態です. 何が悪いのかさっぱりになってしまったので,とりあえず色々晒してみようと思います. アドバイスをいただけると助かります. 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: # 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(----) 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 #!/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にはその他色々使うものを記述 # services provided by server # 鯖が提供するサービス pub_tcp="22,80,etc" # services provided inner_pc # LAN内のクライアントが提供するサービス inner_tcp="etc" inner_udp="etc" # allow LAN <-> LAN $cmd 00005 allow all from any to any via $iif # allow loopback $cmd 00010 allow all from any to any via lo0 # allow nat IN $cmd 00100 divert natd ip from any to any in via $oif $cmd 00101 check-state # if packet match to these rules, goto-line 1000 and allow # 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 # 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 # ICMP $cmd 00130 $skip icmp from any to any out via $oif keep-state # NTP $cmd 00135 $skip udp from any to any 123 out via $oif keep-state # 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 # 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 # deny others $cmd 00500 deny log ip from any to any # allow $cmd 01000 divert natd ip from any to any out via $oif $cmd 65000 allow ip from any to any 以上です. 助けて偉い人. ---- A:717 00125でgood_tcpoしか許可してないからだろ。 ---- Q:718=712 確かFTPって任意のポートを叩きに行った気がするんですけど, $cmd 00125 $skip tcp from any to any 1024-65535 out via $oif setup keep-state みたいに開けまくりにすると,防火壁の意味がかなり無くなると思うんですよ. いい方法があるんでしょうか? ---- A:719 Passive Modeは、サーバ側からクライアントに通信するポートを ランダム、もしくはFTPサーバの設定で指定されたものを通知してくる その通知されたポートを使用して、LAN内から外部へ接続する だから # services provided inner_pc ここらの設定で制限されている ---- A:720 passiveモードとactiveモード ---- A:721 &gt;&gt;718 outboundである。 PFWみたいにアプリケーションでフィルターするわけじゃない。 なので問題ない。 ---- Q:722 素早いレスに感謝します. が,恥ずかしながら,結局何をどうすれば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 ---- A:723 接続先のサーバから通知されたポート番号に 内側からセッションを開始(Passive Mode)しようとしたら Permission denied なんだから、そのポートが制限されているって事 とりあえず内側から外側への制限を全部無くしてみ ---- A:724 内側からのアクセスを規制すると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 私もエロくないので、もっとえらい人を待ちましょう。 ---- A:725 FreeBSD の ftp/fetch の場合は active 時の port の範囲は 制御できます(man ftp => restrict とか参照) というわけで IPFW にこんなの追加 # for ftp-data port ${fwcmd} add pass tcp from any 20-21 to ${oip} 49152-65535 setup まあもっと狭めてもいいけど ---- Q:733 &gt;&gt;724さんの &gt;$cmd 00127 $skip tcp from any 20 to any in via $oif setup keep-state でつながりました. ありがとうございます. これでFreeBSDのisoイメージが落とせます. 私の中では>>724さんをエロい人だと勝手に認定しておきます. &gt;でも20ポートからなら何だって繋げれるから、0-1023ポートはそれより前に閉めとかないとね。 すいません,これがどういう意味なのかわからんのですが, どういう意味なのでしょう?(日本語になってないな.) ついでに教えていただけると助かります. ---- A:734 &gt;&gt;733 00127のルールは外部のTCP22ポートから内部の*任意の*TCPポートへのコネクションを許可してるわけ。 だから、外部TCPポートが22であれば、内部の139や445や6000にアクセスを許してしまう。 これを避けるために、00127よりも前に(00050から00070のルール)で危険なポートを閉めてるわけ。 でも私はファイアウォール付きルータ内で普段は運用しているのでipfwを実運用したことはないので 参考程度にどうぞ。*安全は保障しません。自己責任でどうぞ。。。 ---- A:744 check-state/keep-stateについて調るべし #静観していたが、あまりにも無茶苦茶なことしてるので 「ipfw ftp ステートフル」とかぐぐるといろいろ出て来る

表示オプション

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

下から選んでください:

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