こんにちは。
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
エラー:接続タイムアウト
エラー:ディレクトリ一覧表示の取り出しに失敗しました
説明が長くて恐縮ですがよろしくお願いします。
<(_ _)>
No.1ベストアンサー
- 回答日時:
うーん。
こうしたらどうでしょう。# 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
↓
iptables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -jACCEPT (1)
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m state --state NEW -m multiport --dport 21,80,443 -j ACCEPT (2)
まずは上の2行(1)(2)でHTTP通信ができる事を確認して欲しい。なぜこれでうまくいくかというと、eth0から入ってきてeth1に出ていく80番への接続要求パケットは(2)で許可されるが、そこからの戻りパケットならびにその後の通信は(1)で許可される(ESTABLISHEDステート)。
その後でFTPの検証をしましょう。まず、FTPコネクションはHTTPと同じく(2)から(1)のコンボで通信できる。さらに、(1)のstateにRELATEDというものを加える(アンドip_conntrack_ftpとip_nat_ftp)事でFTP-DATAコネクションもいける、はず。パッシブFTPでもアクティブFTPでもいける、はず。
セキュリティのためには(2)はもう少し入れた方が良い。
iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.1.2 -m state --state NEW -m multiport --dport 21,80,443 -j ACCEPT (2)'
iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.1.3 -m state --state NEW -m multiport --dport 21,80,443 -j ACCEPT (2)''
あて先IPアドレスを指定する事で、192.168.1.2と192.168.1.3以外のノードを192.168.1.0のセグメントに接続した場合でも2と3以外の80番とかにはインターネットから到達させないようにするのだ。
ここで指定するのはローカルIPアドレスだ。なぜかというとfilterテーブルのFORWARDチェインに到達したパケットは先にnatテーブルのPREROUTINGチェインにてDNATされているからだ。このようにiptablesはチェインの順番を意識して組み立てないといけない事も多いのでチェインの流れを調べておくと良いだろう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- サーバー ネットワークの構成に困っています 3 2023/07/05 11:55
- サーバー 「自分のPCをWebサーバーにする事」とはについて 2 2023/03/20 17:47
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- UNIX・Linux raspberry piを使ったWebサーバー制作をしています、接続するネットワークを変更したときに 1 2023/01/09 15:57
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CentOS6.5のiptablesについて
-
scpコマンドでサーバー間のファ...
-
chkconfig iptables --listって...
-
Choose the correct word(s) fo...
-
エラーメールで"too many hops"...
-
AWSでSSH接続をしたいのですが...
-
パスワード設定していないユー...
-
マネージャ・エージェントモデ...
-
リモートデスクトップ接続でパ...
-
DNSサーバを設定したのですがns...
-
【DNS】ゾーン情報が上手く設定...
-
メールボックスがいっぱいにな...
-
ドメインに参加しようとするとD...
-
.NETでActiveXコントロールを使う
-
PHP5.2.9インストール時に、 Or...
-
Thunderbird) 送信したメールが...
-
エクセルで#N/Aを含めた平均値...
-
同一のホスト名で何か問題があ...
-
【QnapNAS】不良HDDと診断され...
-
FedoraCore6を使用し、PostFix...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
chkconfig iptables --listって...
-
scpコマンドでサーバー間のファ...
-
サーバーでポート587番が開放で...
-
iptablesとipchainsの違い
-
CentOS7firewall-cmdでESP許可
-
sambaで使用するポートについて
-
iptablesを設定するとメール送...
-
iptablesの設定がうまく反映さ...
-
linuxのルーティング処理
-
LINUXのiptablesについて
-
vsftpdで動的IP制限をかけたい
-
さくらVPSのVPNサーバーの設定...
-
iptablesを設定するとメールが...
-
DMZのLinuxサーバでメールとFTP...
-
sshでリモートアクセス
-
iptablesについて
-
Linux環境で、UDP514ポートが開...
-
ローカル環境でwebサーバーにつ...
-
iptablesにてRDPが通らない。
-
iptablesを使用してのDNSゾーン...
おすすめ情報