セキュリティ意識が高まる昨今、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で接続元を制限しない運用が可能です。