CentOSとvsftpdでFTPサーバを作る

f:id:rankasan:20170322191951p:plain

Webサイトの管理をWebDAVで出来ないかと検討したのですが、アクセスコントロールが危なっかしいので、昔ながらのFTPサーバにしました。認証周りが多少ややこしい感じになっていますが、設定自体は難しくないですね。ファイアウォールやらルータの設定やら面倒なので、パッシブのみの運用を想定しています。OSは例のごとくカゴヤVPSのCentOSです

vsftpdのインストール

# yum install vsftpd

vsftpdの設定

設定項目は色々とあるので、必要な箇所のみ抜粋

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO    アノニマスを拒否
local_enable=YES      ローカルユーザのログイン許可
connect_from_port_20=NO   ポートモードを拒否
ascii_upload_enable=YES  ASCIIアップロード許可
ascii_download_enable=YES ASCIIダウンロード許可
chroot_local_user=YES   ログインディレクトリをルートに変更
ls_recurse_enable=YES   ディレクトリに対する一括処理を許可
local_root=/var/www/html  ログインディレクトリを設定

chroot_local_user=YESにすることで、ログインディレクトリ(local_rootで指定した/var/www/html)から親ディレクトリへの移動を抑止できます

特定ユーザのみログイン出来れば良いので、認証周りはホワイトリスト方式を採用

userlist_enable=YES    アクセス制御ユーザリストを有効に
userlist_deny=NO      ユーザリストのユーザのみアクセス許可

userlist_deny=NOで/etc/vsftpd/user_listに記載されているユーザのみアクセスが許可されます。デフォルトではブラックリスト方式で、アクセスを拒否するユーザが記載されているので、それらを削除してアクセスを許可するユーザを記載します

残りはパッシブモードの設定

pasv_enable=YES      パッシブモードを有効に
pasv_min_port=60001    パッシブモードで使うポートの範囲指定
pasv_max_port=60050    同上

vsftpdを自動起動するように設定して再起動

# chkconfig vsftpd on
# service vsftpd restart

iptablesの設定

カゴヤVPSのCentOSにはip_conntrack_ftpがインストールされていないので、手動でパッシブモードで使うポートを開けます

# vi /etc/sysconfig/iptables
-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 60001:60050 -j ACCEPT

iptablesを再起動

# service iptables restart

以上で作業終了。Windows付属のFTPクライアントはパッシブモードに対応していないので、FFFTP辺りを使って動作を確認します

ネットワークドライブの割り当てをやろうとしたのですが、アクセス出来ないとのエラーが出て割り当てできませんでした…どうもanonymousで繋ぎに来ている様なんですよね…まあ、困ることはないので放置してます

プライバシーポリシー