質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

iptables

iptablesは、一般的なLinuxに備わっているパケットフィルタリング型のファイアウォール機能。パケットフィルタリングルールおよびネットワークアドレス変換ルールを適用することが可能です。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

2803閲覧

CentOS6のiptablesでPassiveモードのFTPサーバーに接続させたい

mma2001

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

iptables

iptablesは、一般的なLinuxに備わっているパケットフィルタリング型のファイアウォール機能。パケットフィルタリングルールおよびネットワークアドレス変換ルールを適用することが可能です。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2021/09/25 13:33

編集2021/09/25 13:49

CentOS6ベースのサーバーを触る機会があり、iptablesの設定でハマっております。
以下の内容についてご教示ください。

やりたいこと
サーバー側で不要なポートをiptablesにてすべて塞いだうえで、以下のサービスを公開したい(一部は特定IPからのみ)
1.www(port80)は任意のIPアドレスからアクセス可能
2.ftp、sshは特定のIPアドレスのみアクセス可能
以上ですが、ftpのパッシブモードで接続がうまくいきません。

コマンド: PWD
レスポンス: 257 "/" is your current location
コマンド: TYPE I
レスポンス: 200 TYPE is now 8-bit binary
コマンド: PASV
レスポンス: 227 Entering Passive Mode (xxx,xxx,xxx,xxx,223,73)
コマンド: MLSD

でタイムアウトします。ssh(特定IPからのみ)、www(任意IPから)は正常にアクセスできています。

iptablesの設定は以下のように行っています。

iptables -F iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -d hostip -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -s hostip -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-request -s hostip -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -d hostip -j ACCEPT iptables -A INPUT -p tcp -s clientip -d hostip --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -s hostip --sport 22 -d clientip -j ACCEPT iptables -A INPUT -p tcp -s 0.0.0.0/0 -d hostip --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp -s hostip --sport 80 -d 0.0.0.0/0 -j ACCEPT iptables -A INPUT -p tcp -s clientip -d hostip --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp -s hostip --sport 21 -d clientip -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s clientip -d hostip --dport 20 -j ACCEPT iptables -A OUTPUT -p tcp -s hostip --sport 20 -d clientip -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -N LOGGING iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit iptables -A LOGGING -j DROP iptables -A INPUT -j LOGGING iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

/etc/sysconfig/iptables-config

IPTABLES_MODULES="nf_conntrack_ftp nf_conntrack ip_nat_ftp"

lsmod | grep conntrack_ftp

nf_conntrack_ftp 11953 1 nf_nat_ftp nf_conntrack 79206 6 nf_nat_ftp,nf_nat,nf_conntrack_ftp,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

ftpはpure-ftpdというサーバーのようです。iptablesを無効にすると当然接続は可能です。

/etc/pure-ftpd.conf

# Port range for passive connections replies. - for firewalling. PassivePortRange 57000 58000

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2021/09/27 09:38

接続が FTPS (暗号化) の可能性は?
guest

回答1

0

227 Entering Passive Mode (xxx,xxx,xxx,xxx,223,73)

だと、クライアントから、ftpサーバーの223*256+73=57161番ポートに接続に行こうとしてブロックされています。

PassivePortRange 57000 58000

なので、この範囲の全ポートへの接続を許可する必要があります。

投稿2021/09/25 13:58

otn

総合スコア84542

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mma2001

2021/09/25 14:07 編集

回答ありがとうございます。 /etc/sysconfig/iptables-configに記述した IPTABLES_MODULES="nf_conntrack_ftp nf_conntrack ip_nat_ftp" のモジュールで動的なポートを許可しているのと iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT の部分で明示的にポート番号を指定しなくても既に確立済みの通信は通すという意味だと 理解していましたが、それとは別に明示的にポートを指定して許可することが必要という意味でしょうか。 よろしければ具体的にiptablesのコマンドでご教示いただけるでしょうか。
otn

2021/09/25 15:21 編集

新規のTCPセッション確立なので、単に state RELATED,ESTABLISHED だと駄目でしょう。 他のポートと同じように設定するか、あるいは、 FTPプロトコルの中(PASVコマンドの応答)を見てstateを変更するモジュール "ip_conntrack_ftp" を使う必要があるでしょう(PASV応答に書かれたポート宛てだけiptablesに偽のstateを伝えるようになる)。そうすると、state RELATED,ESTABLISHED で通るようになるはずです。
mma2001

2021/09/25 17:02

本文に書いていますが、nf_conntrack_ftpはモジュールとして読み込んでいます。IPTABLES_MODULES="ip_conntrack_ftp"としたとしても、lsmodで見るとnf_conntrack_ftpがロードされているようなので、同じもの(後継モジュール?)だと思うのですが、何か理解が違ってるでしょうか? そのうえで、上記のように一覧取得でタイムアウトします。
otn

2021/09/26 01:57

失礼しました。気づいてませんでした。組み込んでいるということですね。 iptablesデーモン起動時にそれに関するエラーもでてないでしょうか?出てなければ、ちょっと分かりません。
mma2001

2021/09/26 02:02

ご回答ありがとうございます。 /etc/rc.d/init.d/iptables restart iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ] iptables: Loading additional modules: nf_conntrack_ftp nf_n[ OK ] となりますので、正常にロードできてると思います。
otn

2021/09/26 02:17

そうですね。 あとは、iptables-save で指定が確かに効いているか確認するくらいですね。 これも多分大丈夫でしょうけど。
mma2001

2021/09/26 02:39

はい、/etc/sysconfig/iptablesに設定は保存されています。 ちょっと手づまりなので、運用中のサーバーのメンテを引き受けたのであまり大きく手を入れたくなかったんですが、いろいろおかしくなっている可能性もあるので、もう少し根本的なところから手を入れてみます。 お付き合いありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問