proftpd で SFTPの設定

セキュリティ意識が高まる昨今、FTPも通信経路が暗号化されるSFTPを使いたいという要望が多くなっています。
SFTPに対応したFTPクライアントもFileZillaなどのフリーウェアが出現して身近になったこともあります。

SFTPは、’FTP’という単語が付いていますがそのプロトコルは、SSHです。
ですから、サーバー側は、SSHサーバーが稼動していれば特に設定は必要ないのですが、それではちょっと使い勝手が悪い面があります。
そのままだと接続したユーザーホームディレクトリより上位のディレクトリが見えてしまいますし、通常のSSHとSFTPで別々のポート番号を使い分けたいと思ってもそれはできません。
また、iptableでSSHの接続元IPを制限していると、それがそのままSFTPでもIP制限されてしまいます。

そこで、FTPサーバーの拡張機能でSFTPを実現できればもっと便利です。
CentOSの標準的なFTPサーバーであるvsftpdが既にインストール済みだった場合、vsftpdにはSFTP機能がないので、SFTP機能があるproftpdをインストールし直します。

■ proftpd インストール

(1) インストール

# yum install proftpd

(2) 基本設定

/etc/proftpd.conf


ServerName                      "FTP server"
ServerIdent                     on "FTP Server ready."

#DefaultRoot                     ~ !adm
DefaultRoot                     ~ !wheel

# dot file
ListOptions                     "-a"

起動・終了・再起動

# /etc/init.d/proftpd start
# /etc/init.d/proftpd stop
# /etc/init.d/proftpd restart

自動起動設定

# chkconfig proftpd on

(2) SFTP機能の有効化

例として、ポート番号 2222 で接続するように設定します。

/etc/proftpd.conf


LoadModule mod_sftp.c
<IfModule mod_sftp.c>
    SFTPEngine on
    SFTPLog /var/log/proftpd/sftp.log

    Port 2222

    SFTPHostKey /etc/ssh/ssh_host_rsa_key
    SFTPHostKey /etc/ssh/ssh_host_dsa_key
</IfModule>

/etc/sysconfig/iptables


# SFTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

これで、ポート 22 は通常のSSHで接続元IPを制限し、ポート 2222 はSFTPで接続元を制限しない運用が可能です。

コメントを残す