FTPの代わりにSFTPを使用するようにProFTPdを設定する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
FTP(ファイル転送プロトコル)は、ローカルサーバーとリモートサーバー間でファイルを転送するための一般的な方法です。 FTPはこれまで推奨されていた転送方法でしたが、プレーンテキストで認証されるため、安全ではありません。
ProFTPd は、FTPの代わりに安全なFTPの代替手段であるSFTPプロトコルを使用するように構成できる人気のあるFTPサーバーです。 この記事では、FTPのセキュリティを回避するために、このプロトコルを使用するようにProFTPdを構成する方法を説明します。
Ubuntu 12.04 VPSでこれを構成する方法を示しますが、ほとんどのディストリビューションは同様の方法で動作するはずです。
ProFTPdをインストールする
ProFTPdソフトウェアは、Ubuntuのデフォルトのリポジトリにあります。 次のように入力してインストールできます。
sudo apt-get update && sudo apt-get install proftpd
インストール中にプロンプトが表示されたら、「スタンドアロン」を選択します。
インストール後、いくつかの基本的な構成変数を編集する必要があります。 テキストエディタでroot権限でProFTPd設定ファイルを開きます。
sudo nano /etc/proftpd/proftpd.conf
変更 ServerName
ドメイン名またはIPアドレスに一致するパラメータ。
ServerName "yourDomainOrIPAddress"
を削除します #
の前から DefaultRoot
コメントを解除するパラメータ:
DefaultRoot ~
ファイルを保存して閉じます。
ProFTPdでSFTPアクセスを設定する
次に、SFTPを使用するようにサービスを構成する必要があります。
デフォルトのファイルは conf.d
追加構成用のサブディレクトリ。 そこで、SFTPを使用できるようにするためのファイルを作成します。
sudo nano /etc/proftpd/conf.d/sftp.conf
ProFTPdは、Apacheと同じフォーマットで設定を行うことができます。 Apacheに精通している場合、これは見覚えがあるはずです。 慣れていない場合は、簡単に理解できます。
以下をコピーしてファイルに貼り付けます。
<IfModule mod_sftp.c>
SFTPEngine on
Port 2222
SFTPLog /var/log/proftpd/sftp.log
# Configure both the RSA and DSA host keys, using the same host key
# files that OpenSSH uses.
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPAuthMethods publickey
SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u
# Enable compression
SFTPCompression delayed
</IfModule>
SFTP構成の分解
ファイルをよりよく理解できるように、ファイルをコンポーネントに分割してみましょう。
セクション全体がラップされています IfModule
タグを使用して、SFTPモジュールが使用可能な場合にのみ構成オプションが適用されるようにします(使用可能な場合)。
-
SFTPEngine on :サーバーのSFTP機能を有効にします
-
ポート2222:SFTP接続を受け入れるポートを指定します。 SSHはすでにポート22で接続を探しているので、別のポートが必要です。
-
SFTPLog :作成されるログファイルの場所を設定します。
-
SFTPHostKey :これらの2行は、SSHホストキーを指しています。 これは、サーバーがクライアントに対して自身を識別する方法です。 ほとんどの場合、使用した行は正しいはずです。
-
SFTPAuthMethods :この行は、SSHキーを使用した接続をのみ受け入れるようにサーバーを構成します。
-
SFTPAuthorizedUserKeys :このパラメーターは、誰かを認証するために使用できるSFTPキーの場所を指定します。 The
%u
一部は、認証ユーザーの名前に置き換えられます。 -
SFTPCompression delayd :これはファイル転送中に利用される圧縮メカニズムを設定します。
キーベースの認証を構成する
ProFTPdはSSHキーを使用してユーザーを認証できますが、RFC4716形式を使用するにはキーを変換する必要があります。 幸い、SSHスイートには、これらのファイルをネイティブに変換する機能があります。
これらのファイルを格納するディレクトリを作成することから始めます。
sudo mkdir /etc/proftpd/authorized_keys
次に、サーバーへのログインに現在使用されている公開キーを変換する必要があります。 ユーザーが1人だけの場合は、次のコマンドを使用できます。
sudo ssh-keygen -e -f〜username /.ssh/authorized_keys | sudo tee / etc / proftpd / authorized_keys / username
複数のユーザーがいて、ログイン資格情報を分離する必要がある場合は、次のように、authorized_keysファイルの代わりに実際の公開鍵を使用する必要があります。
sudo ssh-keygen -e -f /path/to/id_rsa.pub | sudo tee / etc / proftpd / authorized_keys / username_who_owns_key
キーはいくつでも追加できます。
終了したら、ProFTPdサーバーを再起動します。
sudo service proftpd restart
SSHポートでSFTPアクセスを無効にする
ProFTPdを介してSFTPを有効にしたので、通常のSSHポートで無効にすることができます。 これにより、ユーザーがホームディレクトリを離れることを心配することなく、ユーザーアクセスを構成し、各ユーザーがProFTPdを介して表示および操作できるものをロックダウンできます。
SSHD構成ファイルを開きます。
sudo nano /etc/ssh/sshd_config
ファイルの下部に、次のような行が表示されます。
Subsystem sftp /usr/lib/openssh/sftp-server
その前にハッシュ(#)を付けて、次の行をコメントアウトします。
# Subsystem sftp /usr/lib/openssh/sftp-server
ファイルを保存して閉じます。
次に、SSHサーバーを再起動して、変更を有効にします。
sudo service ssh restart
クライアントとの接続
サーバーとの接続に使用できるFTPクライアントはたくさんあります。 優れたものはSFTP機能も実装しています。 すべての主要なプラットフォームで利用可能なFileZillaを介して接続する方法を示します。
FileZillaの設定を開きます。 左側のメニューで[SFTP]セクションを見つけます。
「キーファイルの追加」をクリックして、秘密鍵の場所に移動します。 通常、これは ~/.ssh/id_rsa
. FileZillaがサポートされている形式に変換するというメッセージが表示される可能性があります。
「OK」を押して設定を終了します。
メインインターフェイスで、次のように入力します sftp://
「ホスト」フィールドにサーバーのドメイン名またはIPアドレスが続きます。 「ユーザー名」フィールドにユーザー名を入力し、「ポート」フィールドに選択したポートを入力します。
「クイック接続」をクリックすると、FileZillaはSSHキーを使用して自動的に接続します。
結論
これで、サーバーはProFTPdによって管理されるSFTP接続を受け入れるように構成されているはずです。 ユーザーと制限されている領域を管理するようにソフトウェアを構成できます。 一般に、FTPは適切なセキュリティがないため、絶対に避ける必要があります。