【環境】
CentOS5系
proftpd 1.3.3
proftpdとOpenSSHを利用して、SSH通信を利用して暗号化されたセキュアなSFTPサーバの構築。
1.Proftpdインストール
EPELリポジトリを追加
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
明示的に指定されない限り利用しないように無効化設定します。
全てenabled=1⇒enabled=0に変更します。
# sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
無効化を確認
# cat /etc/yum.repos.d/epel.repo|grep enabled
enabled=0
enabled=0
enabled=0
インストールの実行
認証にLDAPを利用するのでproftpd-ldapも入れています。
# yum --enablerepo=epel install proftpd proftpd-ldap
2.設定ファイル編集
# vi /etc/proftpd.conf
以下、proftpd.confの設定例です。
ServerName "ProFTPD server"
ServerIdent on "SFTP Server ready."
ServerAdmin root@localhost
ServerType standalone
DefaultServer on
AccessGrantMsg "User %u logged in."
DeferWelcome off
AuthPAMConfig proftpd
#LDAP認証設定
AuthOrder mod_ldap.c
LoadModule mod_ldap.c
LoadModule mod_sftp.c
LDAPServer localhost:389
LDAPUseTLS off
LDAPAuthBinds on
LDAPDoAuth on "ou=Users,dc=example,dc=com" "(&(uid=%v)(objectClass=posixAccount))"
LDAPDoUIDLookups on "ou=Users,dc=example,dc=com"
LDAPDoGIDLookups on "ou=Groups,dc=example,dc=com"
DefaultRoot /home/ftp DomainUsers
#PASVポート指定
PassivePorts 4096 4127
ExtendedLog /var/log/proftpd/all.log AUTH,DIRS,READ,WRITE,INFO
#NATしている場合グローバルIPを設定
MasqueradeAddress XXX.XXX.XXX.XXX
IdentLookups off
UseReverseDNS off
#port22はopensshのSubsystemで利用されている為変更
Port 2222
#新規フォルダ、ファイル作成時のパーミッションマスク設定
Umask 002 002
ListOptions "-a"
AllowRetrieveRestart on
AllowStoreRestart on
MaxInstances 20
User nobody
Group nobody
UseSendfile no
ScoreboardFile /var/run/proftpd.score
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
<Global>
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>
<IfModule mod_facts.c>
FactsAdvertise off
</IfModule>
<IfModule mod_sftp.c>
SFTPEngine on
SFTPLog /var/log/proftpd/sftp.log
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
</IfModule>
#デフォルトルートディレクトリへの書込削除関連を禁止
#Limit設定はサブディレクトリへ継承
<Directory /home/ftp>
<Limit MKD RMD DELE RNFR STOR WRITE>
DenyAll
</Limit>
</Directory>
#以下FTPディレクトリ設定例
#ディレクトリを削除・移動させないように権限を二段階で設定
<Directory /home/ftp/share>
<Limit ALL CWD MKD RNFR RNTO RETR STOR>
Order allow,deny
DenyAll
AllowUser user1,user2
</Limit>
</Directory>
<Directory /home/ftp/share>
<Limit DELE RMD>
AllowUser user1,user2
</Limit>
</Directory>
#※AllowUserにアクセス許可するユーザを指定
3.FTPディレクトリを作成
FTP DefaultRootディレクトリ作成
# mkdir -m 770 /home/ftp
# chgrp DomainUsers /home/ftp
各FTPディレクトリ作成
# mkdir -m 770 /home/ftp/share
# chgrp DomainUsers /home/ftp/share
4.SSH接続制限設定
opensshのSubsystemであるsftp-server(port22)のみ利用させる為に
DomainUsersのSSH接続を禁止しておきます。
# vi /etc/ssh/sshd_config
#最終行に以下を追加
DenyGroups DomainUsers
5.サービスの開始・起動設定
# /etc/rc.d/init.d/proftpd start
# chkconfig proftpd on
後は接続確認をして完了です。