CentOS 7 で FTP(7)

By | 2022年12月31日

さて、昨夜起きたことの回収です。

CentOS7 を再起動して、USB 外付けHDDを接続して

試しに

[root@CentOS-7-Server ~]# mount -t ntfs-3g /dev/sdb2 /管理しやすい場所1

マウントしてみると……できました。Windows で ntfs にフォーマットしたHDDをそのまま

CentOS7 で、やっぱり、使えるんじゃん。適当なファイルを数個 /管理しやすい場所1 に

FTPでアップロードします。一旦、シャットダウンして USB 外付けHDDを Windows機に

つなぎ替えてみましたがエクスプローラでは認識できず。ひょっとして、ドライブレターを

つけてないからでは?と、つけてみると今度はエクスプローラで開くことができて、

先ほどアップロードしたファイルも見ることができました。

前にやろうとしたことは、間違いじゃなかったんだという思いと、じゃあ、なぜ

できなかったんだという謎が生まれましたが、探求はいたしません。

他のパーティションにも、ドライブレターを追加して Windows機から

外します。起動させたCentOS7 機に接続して

[root@CentOS-7-Server ~]# mount -t ntfs-3g /dev/sdb2 /管理しやすい場所2
[root@CentOS-7-Server ~]# mount -t ntfs-3g /dev/sdb3 /管理しやすい場所3

ボリューム(T:) とボリューム(U:) もマウントします。

続けて UUID を調べて

[root@CentOS-7-Server ~]# vi /etc/fstab

fstab の該当部分のコメントアウトを外し、新しい UUID に書き換えて再起動。

[root@CentOS-7-Server ~]# df
ファイルシス            1K-ブロック    使用    使用可 使用% マウント位置
devtmpfs                    1868672       0   1868672    0% /dev
tmpfs                       1881244       0   1881244    0% /dev/shm
tmpfs                       1881244    9040   1872204    1% /run
tmpfs                       1881244       0   1881244    0% /sys/fs/cgroup
/dev/mapper/centos-root    52403200 2635932  49767268    6% /
/dev/sda2                   1038336  154916    883420   15% /boot
/dev/sda1                    204580   11464    193116    6% /boot/efi
/dev/sdb2                 524287996  120348 524167648    1% /管理しやすい場所1
/dev/sdb3                 524287996  110344 524177652    1% /管理しやすい場所2
/dev/sdb4                 904805372  127160 904678212    1% /管理しやすい場所3
/dev/mapper/centos-home   430553700   33168 430520532    1% /home
tmpfs                        376252       0    376252    0% /run/user/0

ふふふ……。自動マウントできてます。

じゃあ調子に乗って、CTU の穴開けを「IPv4パケットフィルタ設定」ではなく

「静的IPマスカレード設定」に変更したら繋がるんじゃないだろうかと期待しましたが

繋がりません!

そこまで世の中、あまくないですね。

さて、どう対処するかを探るためにネットをうろついてみてると

「 vsftpd は、NATルータ越えでPASVモ-ドでのFTPサービスを公開するのに難がある」

という情報を見つけたので、 vsftpd の代わりに ProFTPD を入れてみることに

しました。

[root@CentOS-7-Server ~]# systemctl stop vsftpd

まず、vsftpd を停止して

[root@CentOS-7-Server ~]# systemctl disable vsftpd.service

vsftpd の自動起動設定も off にしておきます。

そして、ProFTPDをインストールします。

[root@CentOS-7-Server ~]# yum -y install proftpd

完了しました!

ProFTPDの起動をスーパーサーバーである xinetd で管理するそうなのて、

xinetdをインストールします。

[root@CentOS-7-Server ~]# yum -y install xinetd

完了しました!

このあたりは、参照したページに、おんぶに抱っこ。

続いて、 xinetdが起動しているか否か確認 するそうです。

[root@CentOS-7-Server ~]# systemctl status xinetd
● xinetd.service – Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

xinetdが起動していないようなので、起動させて、 再度、xinetdの起動状態を確認します。

[root@CentOS-7-Server ~]# systemctl start xinetd.service
[root@CentOS-7-Server ~]# systemctl status xinetd
xinetd.service – Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2022-12-31 13:48:55 JST; 14s ago
  Process: 2016 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2017 (xinetd)
   CGroup: /system.slice/xinetd.service
           mq2017 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid

12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing discard
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing discard
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing echo
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing echo
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing tcpmux
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing time
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing time
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: removing ftp
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: xinetd Version 2.3.15 star…
12月 31 13:48:55 CentOS-7-Server xinetd[2017]: Started working: 0 availab…
Hint: Some lines were ellipsized, use -l to show in full.

起動しているようです。

ProFTPD 設定ファイルを編集します。以下は参照したページの丸写しです。

DefaultRoot                    ~ !adm
 ↓ 変更する
DefaultRoot                     ~ !wheel

###▼ 以下、最終行に追記する
##★ サーバータイプ : スーパーサーバーモード(xinetd)での起動
ServerType                  inetd

##★ 追記する | PASVモード用のポート番号を指定 今回は、50010~50030 を指定
PassivePorts                50010 50030

##★ 追記する | アクセスログを記録する
ExtendedLog                 /var/log/proftpd/access.log WRITE,READ default

##★ 追記する | 認証ログを記録する
ExtendedLog                 /var/log/proftpd/auth.log AUTH auth

##★ 追記する | タイムゾーンを日本時間に設定
TimesGMT                     off
SetEnv                      TZ :/etc/localtime

ただし、SSL/TLS の設定については、すべて省略しました。

次は、xinetd 設定ファイルを編集。どうせ、丸写しするだけなので註含みの丸写し。


[root@vm ~]# vi /etc/xinetd.d/xproftpd

#————————————————–
# default: off
# description: The ProFTPD FTP server serves FTP connections. It uses \
#       normal, unencrypted usernames and passwords for authentication.
service ftp
{
 flags           = REUSE
 socket_type     = stream
 wait            = no
 user            = root
 server          = /usr/sbin/in.proftpd

 ##★ log_on_success
 log_on_success  += DURATION
          ↓ 変更する
 log_on_success  += DURATION HOST PID
 log_on_success  += HOST USERID PID 

ProFTPDの自動起動の設定を ON にします。

[root@CentOS-7-Server ~]# chkconfig xproftpd on

自動起動 設定再確認

[root@CentOS-7-Server ~]# chkconfig –list xproftpd


注記: この出力に含まれるのは SysV サービスのみです。ネイティブな
      systemd サービスは含まれません。SysV の設定データはネイティブな
        systemd 設定で上書きされる場合があります。
      systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用し ます。
      特定のターゲットで有効になっているサービスを確認する場合は
      'systemctl list-dependencies [target]'を使用します。

xproftpd        on

次は、xinetd デーモン再起動

[root@CentOS-7-Server ~]# systemctl restart xinetd.service

おっと。うっかり忘れるところでした。/etc/proftpd.conf に変更したポートを

書き込みました。

Port          10021

というような行を追加します。

ここらで、繋いでみる。

繋がりません!

例によって、困ってからのネット頼み。しかし、数時間にわたって徘徊するも

出口が見えませんでした。やむを得ません。ここは撤収です。

無事に帰還できるか。

[root@CentOS-7-Server ~]# systemctl stop xinetd.service

[root@CentOS-7-Server ~]# chkconfig xproftpd off
[root@CentOS-7-Server ~]# chkconfig –list xproftpd

注記: この出力に含まれるのは SysV サービスのみです。ネイティブな
      systemd サービスは含まれません。SysV の設定データはネイティブな
        systemd 設定で上書きされる場合があります。
      systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用し ます。
      特定のターゲットで有効になっているサービスを確認する場合は
      'systemctl list-dependencies [target]'を使用します。

xproftpd        off

[root@CentOS-7-Server ~]# systemctl stop xinetd.service

[root@CentOS-7-Server ~]# systemctl status xinetd
● xinetd.service – Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 土 2022-12-31 16:40:13 JST; 2min 58s ago
  Process: 2247 ExecReload=/usr/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 2193 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2194 (code=exited, status=0/SUCCESS)

12月 31 16:23:09 CentOS-7-Server xinetd[2194]: removing tcpmux
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: removing time
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: removing time
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: removing ftp
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: Swapping defaults
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: service ftp deactivated
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: ftp: svc_release with 0 count
12月 31 16:23:09 CentOS-7-Server xinetd[2194]: Reconfigured: new=0 old=0 …
12月 31 16:40:13 CentOS-7-Server systemd[1]: Stopping Xinetd A Powerful ….
12月 31 16:40:13 CentOS-7-Server systemd[1]: Stopped Xinetd A Powerful R….
Hint: Some lines were ellipsized, use -l to show in full.

これでいいのかな?

今度は昼寝中の vsftpd を起こします。

[root@CentOS-7-Server ~]# systemctl start vsftpd
[root@CentOS-7-Server ~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

reboot します。

繋がりました!

どうやら、帰って来ることができたようです。

さて、次なる試行錯誤ですが、NATルータ越えでのPASVモ-ドに難があるなら

アクティブモードなら、どうだとやってみることにしました。

ついでに待ち受けポートだけじゃなく、 データ転送用ポート番号も変更して

少しでもセキュリティを高めようとしました。しかし、LAN 内からは接続できるんですが

WAN 側からは、どうしても接続できません。続きは、来年ですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語を使って書いてね。外国語わかんない。