IPTablesを使用したFTPの許可


26

現在のシナリオではさまざまなルールを許可していますが、どこからでもftpにアクセスできるようにする必要があります。OSはCent 5であり、VSFTPDを使用しています。構文が正しいように思えません。他のすべてのルールは正しく機能します。

## Filter all previous rules
*filter

## Loopback address
-A INPUT -i lo -j ACCEPT

## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT

## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT

##Allow FTP

## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT

以下は私が試したルールです。

##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT

-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT


-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT

-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

1
読みやすいようにフォーマットを修正しました。
エイブリーペイン

Rackspaceを使用していると仮定していますか?チュートリアルにはその欠陥があります。@Evan Andersonの指示に従ってください。
アンドレスSK

回答:


41

FTPプロトコルに従うことができるように、私が参照するドキュメントは次のとおりです。http//slacksite.com/other/ftp.html

  • アクティブモードFTPを実行するには、TCPポート21への着信接続とポート20からの発信接続を許可する必要があります。
  • パッシブモードFTPを実行するには、TCPポート21への着信接続とサーバーコンピューター上のランダムに生成されたポートへの着信接続を許可する必要があります(netfilterでconntrackモジュールを使用する必要があります)

投稿にOUTPUTチェーンはありませんので、ここにも記載します。OUTPUTチェーンがデフォルトドロップの場合、これは重要です。

これらのルールをiptables構成に追加します。

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

パッシブモードのFTPをサポートするには、ブート時にip_conntrack_ftpモジュールをロードする必要があります。/ etc / sysconfig / iptables-configファイルのIPTABLES_MODULES行のコメントを解除して変更し、次を読み取ります。

IPTABLES_MODULES="ip_conntrack_ftp"

iptables構成を保存し、iptablesを再起動します。

service iptables save
service iptables restart

VSFTPDを問題として完全に除外するには、VSFTPDを停止し、「netstat -a」を使用してポート21でリッスンしていないことを確認してから、aを実行します。

nc -l 21

これにより、ポート21でnetcatのリッスンが開始され、シェルに入力がエコーされます。別のホストからTELNETを使用してサーバーのポート21に接続し、TCP接続を取得し、TELNET接続を入力したときにシェルに出力が表示されることを確認します。

最後に、VSFTPDを再起動し、ポート21でリッスンしていることを確認して、再度接続を試みます。netcatへの接続が機能した場合、iptablesルールは問題ありません。netcatの実行後にVSFTPDへの接続が機能しない場合は、VSFTPDの構成に問題があります。


ヘルプマンに感謝します。パッシブモードについて概説した提案は私の問題を解決しました。私は助けに感謝します。
IOTAMAN 09

iptables_save_on_stopを「yes」に設定していない場合、iptablesを再起動すると、行った変更はすべて消去されます。
ケビンM

@ケビン:絶対に、良い点です!> smile <今すぐ編集します。
エヴァンアンダーソン

@ GLB03:問題ありません。サーバーフォールトに住んでいます...> smile <
エヴァンアンダーソン

この答えは私には役に立たなかったので、この問題を抱えている他の人には、これ(およびポート21の入出力を開くこと)が私にとってうまくいったことを指摘します:linuxquestions.org/questions/linux-security-4 / ... -
ehsanul

0

このルールを試してください。注:$EXTIPFTPサーバーの外部IPアドレスです。

-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT

0

私の場合、ip_conntrack_ftpカーネルモジュールがありませんでした。ロードする必要があります。これを試すことができます:

modprobe ip_conntrack_ftp

また、ip_conntrack_ftpを/ etc / modulesに追加して、再起動後に機能するようにします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.