web-dev-qa-db-ja.com

Firewalldを使用してcentosでftpポート21を開くことができません

Centos 7にvsftpdをインストールしようとしています。ローカルホストからサーバーに接続できますが、リモートマシンからサーバーに接続できません。私は、システムとネットワークの管理のトピックに少し慣れていません。

これが私が答えを探したいくつかの場所です:
firewalld経由でftpポートを開くことはできません
ルールが追加された後、Centosはポートを開きません
ポート80フィルター処理されたnmap

Vsftpdサービスを稼働させています:

> netstat -plnt | grep ':21. '
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      12393/vsftpd

ftp localhostを使用してログインできます。しかし、リモートログインを試みると、数秒後に「接続がタイムアウト」します。だから私はファイアウォールの問題を疑っています。

(また、 vsftpdサービスのためにFTPポートが閉じられています

lsof -i:21
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
vsftpd  12393 root    3u  IPv4 63746670      0t0  TCP *:ftp (LISTEN)

これはCentosなので、firewalldを使用しています。ポート21が開いているように見えます

> firewall-cmd --list-services
dhcpv6-client ftp https ssh

そして:

> firewall-cmd --list-ports
433/tcp 21/tcp 80/tcp 20/tcp

また:

> firewall-cmd --get-default-zone
public
> firewall-cmd --get-active-zone
public 
  interfaces: enp0s25

firewall-cmd --reload経由でfirewalldをリロードしました

しかし、リモートマシンからnmapを試してみると、ポート20と21がフィルタリングされていると表示されます。

> nmap -p20,21 my.ftp.server.com
Starting Nmap 6.40 ( http://nmap.org ) at 2017-03-27 13:48 PDT
Nmap scan report for rrcs-xx-xx-xx-xx 
(xx.xx.xx.xx)
Host is up (0.035s latency).
PORT   STATE    SERVICE
20/tcp filtered ftp-data
21/tcp filtered ftp

私は、firewalldのさまざまなチェーンに従って、すべてのiptablesルールを調べて追跡し、次のことを発見しました。

> iptables -S IN_public_allow
-N IN_public_allow
-A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW -j ACCEPT

誰かがそれが役立つと思うなら、私はiptables -Sの出力全体を投稿できてうれしいです。

最後に、SELinuxをオフにした場合とオンにした場合で同じ動作が得られることを確認するのに十分な時間、SELinuxをオフにしました。

だから私の質問は:

他のマシンがポート21のトラフィックを自分のマシンに到達する前にフィルタリングしている可能性はありますか? (このマシンには、問題なく接続できるWebサーバーもあります)。もしそうなら、私はそれをどのように決定することができますか?

この問題をデバッグするために確認できる他のことはありますか?

ありとあらゆる助けをいただければ幸いです。

1
phonybone

nmap自体が「フィルタリング」されているからといって、FTPアクセスがブロックされているわけではありません。中間ファイアウォールがnmapスキャンとプローブを実行していることを検出し、パケットをドロップしたことを意味しているだけです。これはかなり一般的な「機能」です。残念ながら、ファイアウォールがftpパケットのドロップを開始した後、合法的にログインを試みることができるように、状態がクリアされるまで少し待つ必要があります。

それ以外にも、firewalldやiptables以外にも、干渉する可能性のあるユーザー/ポート制御サービスがあります。 1つは/etc/hosts.allowまたは/etc/hosts.denyで、これはtcp_wrappersを通じて提供されます。

次のような行をhosts.allowファイルに追加してみてください。

ALL : YOUR_IP_ADDRESS_HERE : allow

これは「すべてのポート」と言います:IP:アクセスを許可します。

もう1つの質問は、ローカルホストループバックエイリアスの代わりに、サーバーの外部インターフェイスを介してサーバーからログインできるかどうかです。 ftp MY_IP。 「listen」がオフになっている場合でも、localhostはログインを許可されることがよくあります。 /etc/vsftpd.conf

LISTEN=NO#これはvsftpd.confファイルにありますか?

これは、実際には外部ipv4またはipv6インターフェイスを「リッスン」していないためです。

また、/etc/servicesファイルを確認してください。次の行はコメントインまたはコメントアウトされていますか?

services:ftp-data        20/tcp
services:ftp-data        20/udp

Iptablesに関して、ルールが干渉していることが心配な場合は、それらをフラッシュするだけです。

iptables -F

したがって、操作/チェックの順序は次のようになります。

  1. サーバーから外部IPにFTPで接続してみてください
  2. 接続に失敗した場合は、netstat -alを確認し、/ etc/vsftp.conf、/ etc/services、/ etc /hosts.allowを確認してください。再試行してください。

[〜#〜] ok [〜#〜]の場合、中間またはソースベースのパケットフィルタリングが敵です3.失敗した場合は、iptablesをフラッシュし、再試行します4.それでも失敗した場合は、まだいくつかありますローカルサーバーを介してログインできないその他の問題。

ポイント2でログインできる場合でも、iptablesをフラッシュし、syslogでエラーメッセージを確認してみてください。通常、tcp_wrappersに失敗した着信接続の場合、「接続がソースからドロップされました...」と表示されます。

Vsftpd.confでこれらの行も探してください

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

サーバー上の接続を絞り込むことができない場合は、ホストからサーバーtraceroute MY_SERVER_IPへのルート、またはサーバーからtraceroute MY_CLIENT_IPへのルートの調査を開始します。このコマンドはtracepathにすることもできます。ホスティング施設のサーバーに近いファイアウォールが接続をブロックしているのはかなりありそうもないだと思います。それが企業環境である場合、それは可能性が高いですが、サーバーが置かれている環境がホスティング施設または教育機関である場合、ルーターでFTPポートをブロックすることはあまり一般的ではありません。 ComcastなどのクライアントISPでも珍しいことです。

リモートマシンはどれくらい離れていますか?例えばネットワークホップはいくつですか?サーバーと同じサブネット上にいる場合は、明らかにサーバー構成です。

2
Beracah