VPSにセキュアなFTPS接続を設定する手順

FTP接続を暗号化されていない状態で接続してませんか?

していないとしたら、か・な・り、危険です。

- スポンサードリンク -

Vps ftps 001

今のご時世、暗号化した接続が標準です。

 

私は以前、通常の平文で接続する状態で使っていたら、

クラッキングされました。

 

リダイレクトされて変なサイトに接続するように

WordPressサイトの設定が変更されてました。

 

自分のサイトを見たら、

「10億アクセスおめでとう!」

って表示されたり、

 

Cronが毎分実行されているようになっていたり。

 

で滅茶苦茶にされました。

 

 

はじめに

この記事は、

『VPSにセキュアなFTPS接続を設定する手順』

について

 

 

VPSでFTP接続を暗号化して、

 セキュリティを高めるための設定について書いています。

 

 

昨今では、ネット環境が整うこととは裏腹にクラッキングを

されるリスクも同時に高まっています。

 

 

FTP接続は、Webサービスを利用する場合に必ずと言って

いいほど使うものです。

 

 

ただ、接続するだけでは、危険にさらしてしますので

最低限のセキュリティ設定をしましょう。

 

 

 最終的には暗号化で接続するFTPS

の接続で

使えるように設定します。

 

 

設定手順は下記のとおりです。

 

  • FTPサービス(vsftpd)のインストール
  • vsftpdの設定
  • vsfptdをFTP化(暗号化)する
  • xinitdでvsftpdを起動する

 

この記事は、VPSや専用サーバなど、
root権限を使用してを設定するサーバが前提です。

 

 

共用サーバーの方には、参考になりませんので
不要ならば閉じてください。

 

 

 

VPSにFTP接続する

VPSにFTPツールをインストールするところから、

設定するところまで、手順を説明します。

 

コマンドラインが中心ですので、
この際にコマンドの使い方も学んでいきましょう。

 

vsftpdをインストールする

コマンドyumでvsftpdをインストールします。
コマンドライン一発でインストールできます。

# yum -y install vsftpd

 

rootユーザ以外の場合は、sudoで実行します。

$ sudo yum -y install vsftpd

パスワードを聞かれるので入力してインストールします。

 

 

vsftpd用ログインユーザ設定

#ログインユーザの作成

まずは、rootログインを許可する。

 

 

/etc/vsftpd/ftpusersのユーザリストからログインするユーザを削除
または、コメントアウトする必要があります。

 

 

このファイルに記載されているユーザのログインは不可(アクセス拒否)されます。

# vi /etc/vsftpd/ftpusers

 

rootでログインさせる場合は、コメントアウトする

#root

 

 

FTP専用ユーザなどを作成したら、
この設定は元に戻してrootのログインを
不可にしてもいいでしょう。

 

PAMの認証で参照するようですが、

まずは、ログインするユーザを削除か
コメントアウトしましょう。

 

このファイルに記述されているユーザは接続できない。

user_listよりも優先されます。

 

 

vsftpdを設定する

設定ファイルの変更にはrootユーザーの権限が必要です。

suでrootにスイッチしておくか、sudoコマンドを使用しましょう。

 

#FTPの設定ファイルをコピー・編集する

 

vsftpdの設定は、設定ファイル/etc/vsftpd/vsftpd.confで行います。

まず、オリジナルの設定ファイルをコピーしてバックアップします。

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

 

設定ファイルを開く

# vi /etc/vsftpd/vsftpd.conf

 

匿名ユーザー(anonymous)のアクセスを無効にする

匿名ユーザを無効(NO)に変更

#anonymous_enable=YES

設定ファイル(vsftpd.conf)の下記をコメント解除してNOにする。

anonymous_enabl=NO

 

ローカルユーザのログインを許可する。

ローカルユーザにFTP接続を許可するか。デフォルトではYESで許可する。

local_enable=YES

 

FTP コマンドの使用許可設定

ファイルに変更を加えるFTP コマンドの使用を、許可するかどうかを指定する

write_enable=YES

 

新規ファイルやアップロード時のパーミッションの設定

ファイルは644(666)、ディレクトリは755(777)になる

local_umask=022

 

ログ取得の有無を設定する

xferlog_enable=YES

 

取得するログの形式を指定する。

No推奨。接続、ログイン、転送ログを記録します。

xferlog_std_format=NO

 

xferlogがYESでstd_format=YESのときに使用。

#xferlog_file=/var/log/xferlog

 

アクティブ (ポート) モード時の、サーバ側が使用するデータ転送用ポート番号の指定方法を定義する。

connect_from_port_20=YES

 

メッセージファイルの内容を表示する。

ディレクトリごとにメッセージを表示させるか指定します。

dirmessage_enable=NO

 

ユーザのルート ディレクトリに変更 (chroot) する。

ログインしたユーザのルートディレクトリに変更する設定

 

ログインユーザのルートディレクトリに変更する場合
(ユーザの上部ディレクトリにはアクセスできない。)

chroot_local_user=YES

 

ログインユーザが上部のディレクトリにアクセス可能にする場合

chroot_local_user=NO

 

ユーザのログインディレクトリ外にアクセス可能にする。

chroot制御対象のユーザ名を記載したファイルの有効/無効を設定する。

有効にした場合は、chroot用のリストファイルを作成し参照する。

初期値は、コメントアウト(NO)となっている。

 

リストを作成して参照する場合。

chroot_list_enable=YES

 

chroot_list_enable が YES の場合に参照するファイル

chroot制御対象のユーザ名を記載したファイルを指定する。

chroot_list_file=/etc/vsftpd/chroot_list

 

FTPユーザのログイン許可・拒否を設定する

ユーザのログイン許可と拒否を

 

  • 許可リストuserlist_enabeleの有効化
  • ユーザの拒否リストuserlist_deny

 

で設定します。

 

基本的にログインするユーザを限定したいので、

リストアップしたユーザがログインできるように設定します。

 

 

# user_listにユーザを追加する

ログインを許可または、拒否するユーザを追加します。

下記のコマンドで、user_listを編集します。

$sudo vi user_list

 

最終行にユーザ追加 します。

 

 

リストアップユーザを有効化する

リストアップしたユーザに対してログインを許可する設定をします。

userlis_enable=YES

 

上記のユーザリストを有効にした状態で、

リストアップしたユーザのログインを許可するか、
拒否するかを設定する。

  • userlist_deny=NOで、ログイン許可。
  • userlist_deny=YESで、ログイン拒否

 

リストにあるユーザのアクセスを拒否する

リストアップしたユーザに対してログインを拒否する場合は、

YESを設定をします。

 

ただ、私の場合は、

リストアップユーザに許可するので

下記のようにNOを指定します。

userlist_deny=NO

 

通常は、リストアップユーザのみにしたほうが
ログインするユーザをコントロールできるので
良いでしょう。

 

ログイン許可・拒否の参照ファイル指定

userlist_file=/etc/vsftpd/user_list

 

 

ASCII モードによるアップロードの許可/拒否設定

FTPの転送モードをasciiモードにする場合の設定。YESが推奨。

vsftpd.confの下記部分をコメント解除する。

 

#ascii_upload_enable=YES
#ascii_download_enable=YES

#を削除してコメント解除する

ascii_upload_enable=YES
ascii_download_enable=YES

 

ディレクトリごと一括での転送を有効にする

ls_recurse_enable=YES

 

 

ログイン時にメッセージを表示する

好みによりますが、メッセージやリマインダーなどログイン時に表示したいものがある場合に指定する。

 

ftpd_banner=Welcome to FTPS service.

 

 

vsftpdの起動モードを指定する。

vsftpdをスタンドアロンモードで起動する。 inetdやxinetdから起動する場合は、無効(NO)にする

 

#YES:vsftpd はスタンド アロンで起動する。
#NO: vsftpd はxinetd ベースで起動する。

 

vsftpdをスタンドアロンで起動する場合。

listen=YES

 

vsftpdをxinetdやinetdで起動する場合。

listen=NO

 

 

IPv4での接続を待ち受け

デフォルトでは、IPv6のみが有効になっていて、IPv4は無効になっています。そこで、次のように変更します

listen_ipv6=NO

 

ローカルタイム(日本時間)を使用する

FTPツールで日本時間を使用する場合にYESに設定します。

use_localtime=YES

 

 

パッシブ(PASV)の設定を追記

pasv_enable=YES
pasv_address= x.x.x.x (VPSサーバのIPアドレス)

 

PASVで使うポートの下限と上限を設定します。

パッシブモードで使用するポートの範囲を指定します。

# デフォルト(設定なし)では32768〜61000

pasv_min_port=50001
pasv_max_port=50030

 

#桁の少ない範囲で指定しても可。(下記は例。)

#pasv_min_port=1050
#pasv_max_port=1055

 

不可視ファイルを表示

"."(ドット)で始まる不可視ファイルを表示する。

force_dot_files=YES

 

パーミッション変更コマンドを許可する。

デフォルトは、YES。

SITE CHMOD (パーミッション変更) コマンドを許可する。

chmod_enable=YES

 

 

上層のディレクトリへのアクセス制御

# touch /etc/vsftpd/chroot_list
# vi /etc/vsftpd/chroot_list

 

例えば、下記のユーザを追加する。

ftpuser01
ftpuser02

 

上層のディレクトリへのアクセスを設定する(chroot)

ローカルユーザのログインを許可を許可します。。

YESで有効にすると、chroot_listのユーザは自分のルートディレクトリ以外に自由に移動できます。

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

 

 

開いているポートの確認方法。

必要に応じて、FTP通信のため開いているポートを確認します。

 

コマンドとしては、

netstat

ss

nmap

 

などありますが、netstatなどはCentOS7から非推奨になっているので、

ssやnmapなどで調べます。

 

コマンドがない場合はインストールします。

# yum -y install ss

# yum -y install nmap

 

使用されているポートや空き状況を調べます。

# ss -atunp

  • -a:現在のすべての接続を表示する
  • -tTCPポートを表示する
  • -uUDPポートを表示する
  • -p: 接続して使用しているプロセスを表示する
  • -n:サービス名の名前解決を行わない

 

# ss -atup|grep vsftpd

 

 

vsftpdで使用するポートを開放する

iptablesでftpのアクセス許可をする

/etc/sysconfig/iptablesにポートを追記する。

 

Firewallでは通信しているポートを監視しています。

対象ポートを開放して外部の通信が可能になるよう設定します。

 

編集ファイルを開く

# vi /etc/sysconfig/iptables

 

--dportと--sportとのそれぞれのポートを開放する。

-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 20 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 21 -j ACCEPT

 

設定後に:wqで保存し、再起動します。

# /etc/init.d/iptables restart

 

FTPを暗号化して通信できるようにする(FTPS化)

 

SSLを有効化する

SSLで暗号化通信を有効にする。

ssl_enable=YES

 

証明書の場所を指定する

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

 

SSL3.0脆弱性(POODLE)の対応

SSLv2とv3は脆弱性があるので使わない

ssl_sslv2=NO
ssl_sslv3=NO

 

TLSを使います

ssl_tlsv1=YES

 

HIGH強度の高い暗号スイートを使用する。鍵長が 128 bit 以上。

ssl_ciphers=HIGH

 

ノンセキュアなFTPは使用させず、SSLを強制

force_local_data_ssl=YES
force_local_logins_ssl=YES

 

PAMサービス(認証サービス)のvsftpd 用名称を指定する

pam_service_name=vsftpd

 

ホスアクセスファイルをアクセス制御に利用する。

TCPWrapperでネットワークのアクセス制御する。

#(/etc/hosts.allow, /etc/hosts.deny)

tcp_wrappers=YES

 

 

OpenSSLの証明書を作成

Let's encryptを導入する前ではOpenSSLで暗号化すると良いでしょう。

コマンドで証明書を作成・保存します。

 

下記のコマンドを実行して、/etcフォルダの所定場所にvsftpd.pemの名称で保存する。

----------------------------------------

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem

 

OpenSSLからLet's encryptにする

rsa_cert_file=/etc/letsencrypt/live/mydomain.com/fullchain.pem

rsa_private_key_file=/etc/letsencrypt/live/mydomain.com/privkey.pem

 

FTPSとSFTP の違い

------------------------------------------------------------------------

FTPSは「SSLで暗号化したFTP」

SFTPは「SSHで暗号化したファイル転送」

 

 

vsftpd を再起動する。

vsftpdを/etc/serviceに追加している場合は、下記コマンドで再起動します。

$ sudo service vsftpd restart

 

vsftpdを自動起動する設定

 

# chkconfig vsftpd on

 

 

 

再起動時にエラーが発生する場合は?

xinitedにvsftpdをxinited.confにvsftdを追加している場合は、

下記のエラーが出ます。

ご参考まで。

 

--------------------------

/etc/init.d/vsftpd: line 80: kill: (7738) - そのようなプロセスはありません

vsftpd 用のvsftpd を起動中: 500 OOPS: missing value in config file for:

--------------------------

[失敗]

 

あとがき

以上で、主なFTPの設定は完了です。

 

今回は、下記の設定をしました。またセキュリティを高めるために、

FTPS化などをしましたね。

最近は、ネット環境が整ってきたと同時に、ハッキングなどをされやすい環境になってきました。

最低限のセキュリティ設定はしておきましょう。

 

  • FTPのインストール
  • FTPS化(暗号化)の設定
  • パッシブモードのポート設定
  • ファイヤーウォールのポート開放

 

FTPはファイルを転送したり、設定ファィルを設定したりするために

頻繁に使うサービスです。

平文で送るようなことをせず、暗号化はぜひ設定したいですね。

 

 

その他、セキュリティを高める方法をSNSやブログで紹介してますので、

参考にしてください。

 

 

 

このサイトは、リンクフリーです。

 

もし、気に入っていただけましたら、
SNSやみなさまのブログなどでご紹介ください。

その際は、このアドレスをそのまま貼っていただけると
うれしいです。

 

VPSにセキュアなFTPS接続を設定する手順

https://youyoukukan.com/archives/server/vpsftps/

 

 また、いいね!やシェアしてもらえるとうれしいです。 

では。

 

 

今回の紹介する製品

 

私は、カゴヤのVPSをつかっています。
 

 

関連サイト

下記も参考にしてください。
 
 
 
 
 

ブログランキング

応援おねがいします。

 

 

製作者情報

製作者:合摩吉和(ごうまよしかず)

 

メールマガジン:メルマガアフィリエイトの勘どころ

メールマガジン登録URL:

 

https://yume-koubo.net/cs/mailmag01/

 


インターネット・コンピュータランキング

- スポンサードリンク -

こちらの記事も一緒に読まれてます。

QNAP FileStationのFTP機能が便利そうなので設定してみた!