Как установить vsftpd на CentOS 6.4

Привет всем, сегодня короткая статья на тему как установить добольно популярный в мире ФТП сервер vsftpd на системе CentOS 6.4, само сабой тоже самое будет работать на RHEL 5/6. Я не буду вдоваться в супер подробности, а покажу как быстро и удобно развернуть FTP сервер для внутренних нужд компании. Желательно для FTP отводить отдельный сервер, хотя бы виртуальный, но можно и на любом не сильно нагруженном серваке, при условии, что вы не будете делать авторизацию по LDAP и не будете вешать хомяки юзеров через NFS на внешний NAS. Для таких специфичных задач нужна более тонкая настройка и это не тема этой статьи. Итак, как установить vsftpd на CentOS 6.4 или RHEL 5/6 читайте под катом.

Установка и настройка vsftpd

1. Отключаем SELinux в системе:

vim /etc/sysconfig/selinux
...
SELINUX=disabled
...
vim /etc/sysconfig/selinux
...
SELINUX=disabled
...

Перезагружаем:

init 6
init 6

2. Настроим IPtables:

modprobe ip_conntrack_ftp
modprobe ip_conntrack_ftp
cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.orig
vim /etc/sysconfig/iptables
...
# Allow FTP connections @ port 21
-A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
 
# Allow Active FTP Connections
-A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
 
# Allow Passive FTP Connections
-A INPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT
...
cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.orig
vim /etc/sysconfig/iptables
...
# Allow FTP connections @ port 21
-A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow Active FTP Connections
-A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

# Allow Passive FTP Connections
-A INPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT
...

Перезапускаем:

/etc/init.d/iptables restart
/etc/init.d/iptables restart

3. Устанавливаем FTP сервер vsftpd

yum install ftp vsftpd -y
yum install ftp vsftpd -y

4. Запуск:

/sbin/chkconfig --levels 345 vsftpd on
/etc/init.d/vsftpd start
/sbin/chkconfig --levels 345 vsftpd on
/etc/init.d/vsftpd start

5. Проверяем:

ps -ef | grep ftpd
root      1956     1  0 09:28 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
ps -ef | grep ftpd
root      1956     1  0 09:28 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
chkconfig --list | grep ftpd
vsftpd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
chkconfig --list | grep ftpd
vsftpd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

6. Создаем пользователя:

useradd test
passwd test
useradd test
passwd test

7. Настраиваем конфиг файл:

cp -p vsftpd.conf vsftpd.conf.orig
vim /etc/vsftpd/vsftpd.conf
...
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
ascii_upload_enable=YES 
ascii_download_enable=YES
tpd_banner=Welcome to VSFTPD FTP service
use_localtime=YES
cp -p vsftpd.conf vsftpd.conf.orig
vim /etc/vsftpd/vsftpd.conf
...
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
ascii_upload_enable=YES 
ascii_download_enable=YES
tpd_banner=Welcome to VSFTPD FTP service
use_localtime=YES

Посмотреть не закоементированные строки:

egrep -v "^#|^$" vsftpd.conf
egrep -v "^#|^$" vsftpd.conf

Перезапускаем:

service vsftpd restart
service vsftpd restart

8. Проверяем:

ftp
ftp

Должно быть так:

[root@centos ~]# ftp 172.17.17.227
Connected to 172.17.17.227 (172.17.17.227).
220 (vsFTPd 2.2.2)
Name (172.17.17.227:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
[[email protected] ~]# ftp 172.17.17.227
Connected to 172.17.17.227 (172.17.17.227).
220 (vsFTPd 2.2.2)
Name (172.17.17.227:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>