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サーバーもあります)。もしそうなら、私はそれをどのように決定することができますか?
この問題をデバッグするために確認できる他のことはありますか?
ありとあらゆる助けをいただければ幸いです。
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
したがって、操作/チェックの順序は次のようになります。
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でも珍しいことです。
リモートマシンはどれくらい離れていますか?例えばネットワークホップはいくつですか?サーバーと同じサブネット上にいる場合は、明らかにサーバー構成です。