Установка и настройка FTP сервера (vsftpd): различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Установка и настройка FTP сервера (vsftpd) = == 1. Подготовка системы == * Войдите в систему под…»
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 11: Строка 11:


1. Обновите список пакетов:
1. Обновите список пакетов:
<code>
<pre>sudo apt update</pre>
sudo apt update
</code>


2. Установите vsftpd:
2. Установите vsftpd:
<code>
<pre>sudo apt install vsftpd</pre>
sudo apt install vsftpd
</code>


3. Запустите и включите автозапуск vsftpd:
3. Запустите и включите автозапуск vsftpd:
<code>
<pre>sudo systemctl start vsftpd</pre>
sudo systemctl start vsftpd
<pre>sudo systemctl enable vsftpd</pre>
sudo systemctl enable vsftpd
</code>


=== Проверка установки ===
=== Проверка установки ===


1. Проверьте статус сервиса:
1. Проверьте статус сервиса:
<code>
<pre>sudo systemctl status vsftpd</pre>
sudo systemctl status vsftpd
</code>


2. Проверьте, что vsftpd слушает на порту 21:
2. Проверьте, что vsftpd слушает на порту 21:
<code>
<pre>sudo netstat -tlnp | grep :21</pre>
sudo netstat -tlnp | grep :21
</code>


3. Проверьте версию vsftpd:
3. Проверьте версию vsftpd:
<code>
<pre>vsftpd -v</pre>
vsftpd -v
</code>


== 3. Базовая настройка vsftpd ==
== 3. Базовая настройка vsftpd ==
Строка 48: Строка 36:


1. Создайте резервную копию конфигурации:
1. Создайте резервную копию конфигурации:
<code>
<pre>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup</pre>
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
</code>


2. Отредактируйте файл конфигурации:
2. Отредактируйте файл конфигурации:
<code>
<pre>sudo nano /etc/vsftpd.conf</pre>
sudo nano /etc/vsftpd.conf
</code>


3. Настройте основные параметры:
3. Настройте основные параметры:
<code>
<pre>listen=YES</pre>
# Основные настройки
<pre>listen_ipv6=NO</pre>
listen=YES
<pre>anonymous_enable=NO</pre>
listen_ipv6=NO
<pre>local_enable=YES</pre>
anonymous_enable=NO
<pre>write_enable=YES</pre>
local_enable=YES
<pre>local_umask=022</pre>
write_enable=YES
<pre>dirmessage_enable=YES</pre>
local_umask=022
<pre>use_localtime=YES</pre>
dirmessage_enable=YES
<pre>xferlog_enable=YES</pre>
use_localtime=YES
<pre>connect_from_port_20=YES</pre>
xferlog_enable=YES
<pre>chroot_local_user=YES</pre>
connect_from_port_20=YES
<pre>secure_chroot_dir=/var/run/vsftpd/empty</pre>
chroot_local_user=YES
<pre>pam_service_name=vsftpd</pre>
secure_chroot_dir=/var/run/vsftpd/empty
<pre>rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem</pre>
pam_service_name=vsftpd
<pre>rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key</pre>
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
<pre>ssl_enable=NO</pre>
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
</code>


=== Настройка безопасности ===
=== Настройка безопасности ===


1. Добавьте настройки безопасности:
1. Добавьте настройки безопасности:
<code>
<pre>userlist_enable=YES</pre>
# Настройки безопасности
<pre>userlist_file=/etc/vsftpd.userlist</pre>
userlist_enable=YES
<pre>userlist_deny=NO</pre>
userlist_file=/etc/vsftpd.userlist
<pre>tcp_wrappers=YES</pre>
userlist_deny=NO
<pre>hide_ids=YES</pre>
tcp_wrappers=YES
hide_ids=YES
</code>


2. Создайте файл пользователей:
2. Создайте файл пользователей:
<code>
<pre>sudo nano /etc/vsftpd.userlist</pre>
sudo nano /etc/vsftpd.userlist
</code>


3. Добавьте разрешенных пользователей:
3. Добавьте разрешенных пользователей:
<code>
<pre>ftpuser1</pre>
# Разрешенные пользователи FTP
<pre>ftpuser2</pre>
ftpuser1
ftpuser2
</code>


== 4. Настройка пользователей FTP ==
== 4. Настройка пользователей FTP ==
Строка 107: Строка 80:


1. Создайте пользователя для FTP:
1. Создайте пользователя для FTP:
<code>
<pre>sudo useradd -m -s /bin/bash ftpuser1</pre>
sudo useradd -m -s /bin/bash ftpuser1
</code>


2. Установите пароль:
2. Установите пароль:
<code>
<pre>sudo passwd ftpuser1</pre>
sudo passwd ftpuser1
</code>


3. Добавьте пользователя в файл разрешений:
3. Добавьте пользователя в файл разрешений:
<code>
<pre>echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist</pre>
echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist
</code>


=== Настройка домашних директорий ===
=== Настройка домашних директорий ===


1. Создайте директорию для FTP:
1. Создайте директорию для FTP:
<code>
<pre>sudo mkdir -p /home/ftpuser1/ftp</pre>
sudo mkdir -p /home/ftpuser1/ftp
</code>


2. Установите права доступа:
2. Установите права доступа:
<code>
<pre>sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp</pre>
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp
<pre>sudo chmod 755 /home/ftpuser1/ftp</pre>
sudo chmod 755 /home/ftpuser1/ftp
</code>


3. Создайте директории для загрузки и скачивания:
3. Создайте директории для загрузки и скачивания:
<code>
<pre>sudo mkdir -p /home/ftpuser1/ftp/{upload,download}</pre>
sudo mkdir -p /home/ftpuser1/ftp/{upload,download}
<pre>sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/{upload,download}</pre>
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/{upload,download}
<pre>sudo chmod 755 /home/ftpuser1/ftp/{upload,download}</pre>
sudo chmod 755 /home/ftpuser1/ftp/{upload,download}
</code>


== 5. Настройка виртуальных пользователей ===
== 5. Настройка виртуальных пользователей ==


=== Создание виртуальных пользователей ===
=== Создание виртуальных пользователей ===


1. Создайте директорию для виртуальных пользователей:
1. Создайте директорию для виртуальных пользователей:
<code>
<pre>sudo mkdir -p /etc/vsftpd/virtual_users</pre>
sudo mkdir -p /etc/vsftpd/virtual_users
</code>


2. Создайте файл с паролями:
2. Создайте файл с паролями:
<code>
<pre>sudo nano /etc/vsftpd/virtual_users/passwd</pre>
sudo nano /etc/vsftpd/virtual_users/passwd
</code>


3. Добавьте пользователей (пользователь:пароль):
3. Добавьте пользователей (пользователь:пароль):
<code>
<pre>virtualuser1:password1</pre>
virtualuser1:password1
<pre>virtualuser2:password2</pre>
virtualuser2:password2
</code>


4. Создайте базу данных пользователей:
4. Создайте базу данных пользователей:
<code>
<pre>sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/passwd /etc/vsftpd/virtual_users/passwd.db</pre>
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/passwd /etc/vsftpd/virtual_users/passwd.db
</code>


5. Установите права доступа:
5. Установите права доступа:
<code>
<pre>sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db</pre>
sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db
</code>


=== Настройка PAM для виртуальных пользователей ===
=== Настройка PAM для виртуальных пользователей ===


1. Создайте файл PAM:
1. Создайте файл PAM:
<code>
<pre>sudo nano /etc/pam.d/vsftpd_virtual</pre>
sudo nano /etc/pam.d/vsftpd_virtual
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>auth required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd</pre>
auth required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd
<pre>account required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd</pre>
account required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd
</code>


=== Настройка конфигурации для виртуальных пользователей ===
=== Настройка конфигурации для виртуальных пользователей ===


1. Отредактируйте конфигурацию:
1. Отредактируйте конфигурацию:
<code>
<pre>sudo nano /etc/vsftpd.conf</pre>
sudo nano /etc/vsftpd.conf
</code>


2. Добавьте настройки виртуальных пользователей:
2. Добавьте настройки виртуальных пользователей:
<code>
<pre>guest_enable=YES</pre>
# Настройки виртуальных пользователей
<pre>guest_username=ftp</pre>
guest_enable=YES
<pre>virtual_use_local_privs=YES</pre>
guest_username=ftp
<pre>pam_service_name=vsftpd_virtual</pre>
virtual_use_local_privs=YES
<pre>user_sub_token=$USER</pre>
pam_service_name=vsftpd_virtual
<pre>local_root=/home/vftp/$USER</pre>
user_sub_token=$USER
local_root=/home/vftp/$USER
</code>


3. Создайте директории для виртуальных пользователей:
3. Создайте директории для виртуальных пользователей:
<code>
<pre>sudo mkdir -p /home/vftp/{virtualuser1,virtualuser2}</pre>
sudo mkdir -p /home/vftp/{virtualuser1,virtualuser2}
<pre>sudo chown ftp:ftp /home/vftp/{virtualuser1,virtualuser2}</pre>
sudo chown ftp:ftp /home/vftp/{virtualuser1,virtualuser2}
<pre>sudo chmod 755 /home/vftp/{virtualuser1,virtualuser2}</pre>
sudo chmod 755 /home/vftp/{virtualuser1,virtualuser2}
</code>


== 6. Настройка SSL/TLS ===
== 6. Настройка SSL/TLS ==


=== Генерация SSL сертификата ===
=== Генерация SSL сертификата ===


1. Создайте приватный ключ:
1. Создайте приватный ключ:
<code>
<pre>sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048</pre>
sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048
</code>


2. Создайте запрос на сертификат:
2. Создайте запрос на сертификат:
<code>
<pre>sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr</pre>
sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr
</code>


3. Создайте самоподписанный сертификат:
3. Создайте самоподписанный сертификат:
<code>
<pre>sudo openssl x509 -req -days 365 -in /etc/ssl/certs/vsftpd.csr -signkey /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt</pre>
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/vsftpd.csr -signkey /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
</code>


=== Настройка SSL в vsftpd ===
=== Настройка SSL в vsftpd ===


1. Отредактируйте конфигурацию:
1. Отредактируйте конфигурацию:
<code>
<pre>sudo nano /etc/vsftpd.conf</pre>
sudo nano /etc/vsftpd.conf
</code>


2. Добавьте настройки SSL:
2. Добавьте настройки SSL:
<code>
<pre>ssl_enable=YES</pre>
# SSL настройки
<pre>allow_anon_ssl=NO</pre>
ssl_enable=YES
<pre>force_local_data_ssl=YES</pre>
allow_anon_ssl=NO
<pre>force_local_logins_ssl=YES</pre>
force_local_data_ssl=YES
<pre>ssl_tlsv1=YES</pre>
force_local_logins_ssl=YES
<pre>ssl_sslv2=NO</pre>
ssl_tlsv1=YES
<pre>ssl_sslv3=NO</pre>
ssl_sslv2=NO
<pre>rsa_cert_file=/etc/ssl/certs/vsftpd.crt</pre>
ssl_sslv3=NO
<pre>rsa_private_key_file=/etc/ssl/private/vsftpd.key</pre>
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
</code>


3. Перезапустите vsftpd:
3. Перезапустите vsftpd:
<code>
<pre>sudo systemctl restart vsftpd</pre>
sudo systemctl restart vsftpd
</code>


== 7. Настройка файрвола ===
== 7. Настройка файрвола ==


=== Настройка UFW ===
=== Настройка UFW ===


1. Разрешите FTP трафик:
1. Разрешите FTP трафик:
<code>
<pre>sudo ufw allow 20/tcp</pre>
sudo ufw allow 20/tcp
<pre>sudo ufw allow 21/tcp</pre>
sudo ufw allow 21/tcp
<pre>sudo ufw allow 1024:65535/tcp</pre>
sudo ufw allow 1024:65535/tcp
</code>


2. Проверьте статус:
2. Проверьте статус:
<code>
<pre>sudo ufw status</pre>
sudo ufw status
</code>


=== Настройка iptables ===
=== Настройка iptables ===


1. Разрешите FTP порты:
1. Разрешите FTP порты:
<code>
<pre>sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
<pre>sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT</pre>
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
</code>


2. Сохраните правила:
2. Сохраните правила:
<code>
<pre>sudo iptables-save > /etc/iptables/rules.v4</pre>
sudo iptables-save > /etc/iptables/rules.v4
</code>


== 8. Настройка пассивного режима ===
== 8. Настройка пассивного режима ==


=== Настройка пассивного FTP ===
=== Настройка пассивного FTP ===


1. Отредактируйте конфигурацию:
1. Отредактируйте конфигурацию:
<code>
<pre>sudo nano /etc/vsftpd.conf</pre>
sudo nano /etc/vsftpd.conf
</code>


2. Добавьте настройки пассивного режима:
2. Добавьте настройки пассивного режима:
<code>
<pre>pasv_enable=YES</pre>
# Пассивный режим
<pre>pasv_min_port=21100</pre>
pasv_enable=YES
<pre>pasv_max_port=21110</pre>
pasv_min_port=21100
<pre>pasv_address=YOUR_SERVER_IP</pre>
pasv_max_port=21110
pasv_address=YOUR_SERVER_IP
</code>


3. Замените YOUR_SERVER_IP на IP адрес вашего сервера.
3. Замените YOUR_SERVER_IP на IP адрес вашего сервера.
Строка 307: Строка 221:


1. Добавьте настройки активного режима:
1. Добавьте настройки активного режима:
<code>
<pre>port_enable=YES</pre>
# Активный режим
<pre>connect_from_port_20=YES</pre>
port_enable=YES
<pre>ftp_data_port=20</pre>
connect_from_port_20=YES
ftp_data_port=20
</code>


== 9. Управление vsftpd ==
== 9. Управление vsftpd ==
Строка 319: Строка 230:


* '''Запуск vsftpd''':
* '''Запуск vsftpd''':
<code>
<pre>sudo systemctl start vsftpd</pre>
sudo systemctl start vsftpd
</code>


* '''Остановка vsftpd''':
* '''Остановка vsftpd''':
<code>
<pre>sudo systemctl stop vsftpd</pre>
sudo systemctl stop vsftpd
</code>


* '''Перезапуск vsftpd''':
* '''Перезапуск vsftpd''':
<code>
<pre>sudo systemctl restart vsftpd</pre>
sudo systemctl restart vsftpd
</code>


* '''Проверка статуса''':
* '''Проверка статуса''':
<code>
<pre>sudo systemctl status vsftpd</pre>
sudo systemctl status vsftpd
</code>


* '''Проверка конфигурации''':
* '''Проверка конфигурации''':
<code>
<pre>sudo vsftpd -olisten=NO /etc/vsftpd.conf</pre>
sudo vsftpd -olisten=NO /etc/vsftpd.conf
</code>


=== Управление пользователями ===
=== Управление пользователями ===


1. Добавьте пользователя в разрешенные:
1. Добавьте пользователя в разрешенные:
<code>
<pre>echo "newuser" | sudo tee -a /etc/vsftpd.userlist</pre>
echo "newuser" | sudo tee -a /etc/vsftpd.userlist
</code>


2. Удалите пользователя из разрешенных:
2. Удалите пользователя из разрешенных:
<code>
<pre>sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist</pre>
sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist
</code>


3. Заблокируйте пользователя:
3. Заблокируйте пользователя:
<code>
<pre>echo "blockeduser" | sudo tee -a /etc/vsftpd.denied</pre>
echo "blockeduser" | sudo tee -a /etc/vsftpd.denied
</code>


== 10. Мониторинг и логирование ===
== 10. Мониторинг и логирование ==


=== Настройка логирования ===
=== Настройка логирования ===


1. Отредактируйте конфигурацию:
1. Отредактируйте конфигурацию:
<code>
<pre>sudo nano /etc/vsftpd.conf</pre>
sudo nano /etc/vsftpd.conf
</code>


2. Добавьте настройки логирования:
2. Добавьте настройки логирования:
<code>
<pre>xferlog_enable=YES</pre>
# Логирование
<pre>xferlog_file=/var/log/vsftpd.log</pre>
xferlog_enable=YES
<pre>log_ftp_protocol=YES</pre>
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
</code>


3. Создайте файл логов:
3. Создайте файл логов:
<code>
<pre>sudo touch /var/log/vsftpd.log</pre>
sudo touch /var/log/vsftpd.log
<pre>sudo chown ftp:ftp /var/log/vsftpd.log</pre>
sudo chown ftp:ftp /var/log/vsftpd.log
</code>


=== Просмотр логов ===
=== Просмотр логов ===


1. Просмотрите логи vsftpd:
1. Просмотрите логи vsftpd:
<code>
<pre>sudo tail -f /var/log/vsftpd.log</pre>
sudo tail -f /var/log/vsftpd.log
</code>


2. Просмотрите системные логи:
2. Просмотрите системные логи:
<code>
<pre>sudo journalctl -u vsftpd -f</pre>
sudo journalctl -u vsftpd -f
</code>


3. Просмотрите логи аутентификации:
3. Просмотрите логи аутентификации:
<code>
<pre>sudo tail -f /var/log/auth.log | grep vsftpd</pre>
sudo tail -f /var/log/auth.log | grep vsftpd
</code>


=== Создание скрипта мониторинга ===
=== Создание скрипта мониторинга ===


1. Создайте скрипт мониторинга:
1. Создайте скрипт мониторинга:
<code>
<pre>sudo nano /usr/local/bin/ftp-monitor.sh</pre>
sudo nano /usr/local/bin/ftp-monitor.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>if systemctl is-active --quiet vsftpd; then</pre>
#!/bin/bash
<pre>echo "vsftpd is running"</pre>
 
<pre>CONNECTIONS=$(netstat -an | grep :21 | wc -l)</pre>
# Проверка статуса vsftpd
<pre>echo "Active FTP connections: $CONNECTIONS"</pre>
if systemctl is-active --quiet vsftpd; then
<pre>MEMORY=$(ps aux | grep vsftpd | grep -v grep | awk '{print $6}')</pre>
    echo "vsftpd is running"
<pre>echo "Memory usage: $MEMORY KB"</pre>
   
<pre>else</pre>
    # Проверка подключений
<pre>echo "vsftpd is not running"</pre>
    CONNECTIONS=$(netstat -an | grep :21 | wc -l)
<pre>echo "vsftpd is down" | mail -s "FTP Alert" admin@example.com</pre>
    echo "Active FTP connections: $CONNECTIONS"
<pre>fi</pre>
   
    # Проверка использования памяти
    MEMORY=$(ps aux | grep vsftpd | grep -v grep | awk '{print $6}')
    echo "Memory usage: $MEMORY KB"
   
else
    echo "vsftpd is not running"
    # Отправка уведомления
    echo "vsftpd is down" | mail -s "FTP Alert" admin@example.com
fi
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<pre>sudo chmod +x /usr/local/bin/ftp-monitor.sh</pre>
sudo chmod +x /usr/local/bin/ftp-monitor.sh
</code>


== 11. Устранение неполадок ===
== 11. Устранение неполадок ==


=== Частые проблемы ===
=== Частые проблемы ===


1. '''FTP сервер не запускается''':
1. '''FTP сервер не запускается''':
* Проверьте конфигурацию: <code>sudo vsftpd -olisten=NO /etc/vsftpd.conf</code>
* Проверьте конфигурацию: <pre>sudo vsftpd -olisten=NO /etc/vsftpd.conf</pre>
* Проверьте логи: <code>sudo journalctl -u vsftpd</code>
* Проверьте логи: <pre>sudo journalctl -u vsftpd</pre>
* Проверьте права на файлы: <code>ls -la /etc/vsftpd.conf</code>
* Проверьте права на файлы: <pre>ls -la /etc/vsftpd.conf</pre>


2. '''Пользователи не могут подключиться''':
2. '''Пользователи не могут подключиться''':
* Проверьте файрвол: <code>sudo ufw status</code>
* Проверьте файрвол: <pre>sudo ufw status</pre>
* Проверьте порты: <code>sudo netstat -tlnp | grep :21</code>
* Проверьте порты: <pre>sudo netstat -tlnp | grep :21</pre>
* Проверьте пользователей: <code>cat /etc/vsftpd.userlist</code>
* Проверьте пользователей: <pre>cat /etc/vsftpd.userlist</pre>


3. '''Ошибка "500 Illegal PORT command"''':
3. '''Ошибка "500 Illegal PORT command"''':
Строка 456: Строка 323:


1. Проверьте статус сервиса:
1. Проверьте статус сервиса:
<code>
<pre>sudo systemctl status vsftpd</pre>
sudo systemctl status vsftpd
</code>


2. Проверьте подключения:
2. Проверьте подключения:
<code>
<pre>sudo netstat -an | grep :21</pre>
sudo netstat -an | grep :21
</code>


3. Проверьте логи:
3. Проверьте логи:
<code>
<pre>sudo tail -f /var/log/vsftpd.log</pre>
sudo tail -f /var/log/vsftpd.log
</code>


== 12. Дополнительные настройки ===
== 12. Дополнительные настройки ==


=== Настройка ограничений ===
=== Настройка ограничений ===


1. Добавьте ограничения в конфигурацию:
1. Добавьте ограничения в конфигурацию:
<code>
<pre>max_clients=50</pre>
# Ограничения
<pre>max_per_ip=5</pre>
max_clients=50
<pre>local_max_rate=1000000</pre>
max_per_ip=5
<pre>anon_max_rate=500000</pre>
local_max_rate=1000000
anon_max_rate=500000
</code>


=== Настройка баннеров ===
=== Настройка баннеров ===


1. Создайте файл баннера:
1. Создайте файл баннера:
<code>
<pre>sudo nano /etc/vsftpd/banner</pre>
sudo nano /etc/vsftpd/banner
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>Welcome to FTP Server</pre>
Welcome to FTP Server
<pre>Authorized users only</pre>
Authorized users only
</code>


3. Добавьте в конфигурацию:
3. Добавьте в конфигурацию:
<code>
<pre>ftpd_banner=/etc/vsftpd/banner</pre>
ftpd_banner=/etc/vsftpd/banner
</code>


=== Настройка автоматического отключения ===
=== Настройка автоматического отключения ===


1. Добавьте настройки таймаутов:
1. Добавьте настройки таймаутов:
<code>
<pre>idle_session_timeout=600</pre>
# Таймауты
<pre>data_connection_timeout=120</pre>
idle_session_timeout=600
data_connection_timeout=120
</code>


== Заключение ==
== Заключение ==

Текущая версия от 10:42, 15 октября 2025

Установка и настройка FTP сервера (vsftpd)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка vsftpd

Установка пакета

1. Обновите список пакетов:

sudo apt update

2. Установите vsftpd:

sudo apt install vsftpd

3. Запустите и включите автозапуск vsftpd:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

Проверка установки

1. Проверьте статус сервиса:

sudo systemctl status vsftpd

2. Проверьте, что vsftpd слушает на порту 21:

sudo netstat -tlnp | grep :21

3. Проверьте версию vsftpd:

vsftpd -v

3. Базовая настройка vsftpd

Основная конфигурация

1. Создайте резервную копию конфигурации:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

2. Отредактируйте файл конфигурации:

sudo nano /etc/vsftpd.conf

3. Настройте основные параметры:

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

Настройка безопасности

1. Добавьте настройки безопасности:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
tcp_wrappers=YES
hide_ids=YES

2. Создайте файл пользователей:

sudo nano /etc/vsftpd.userlist

3. Добавьте разрешенных пользователей:

ftpuser1
ftpuser2

4. Настройка пользователей FTP

Создание пользователей

1. Создайте пользователя для FTP:

sudo useradd -m -s /bin/bash ftpuser1

2. Установите пароль:

sudo passwd ftpuser1

3. Добавьте пользователя в файл разрешений:

echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist

Настройка домашних директорий

1. Создайте директорию для FTP:

sudo mkdir -p /home/ftpuser1/ftp

2. Установите права доступа:

sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp
sudo chmod 755 /home/ftpuser1/ftp

3. Создайте директории для загрузки и скачивания:

sudo mkdir -p /home/ftpuser1/ftp/{upload,download}
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/{upload,download}
sudo chmod 755 /home/ftpuser1/ftp/{upload,download}

5. Настройка виртуальных пользователей

Создание виртуальных пользователей

1. Создайте директорию для виртуальных пользователей:

sudo mkdir -p /etc/vsftpd/virtual_users

2. Создайте файл с паролями:

sudo nano /etc/vsftpd/virtual_users/passwd

3. Добавьте пользователей (пользователь:пароль):

virtualuser1:password1
virtualuser2:password2

4. Создайте базу данных пользователей:

sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/passwd /etc/vsftpd/virtual_users/passwd.db

5. Установите права доступа:

sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db

Настройка PAM для виртуальных пользователей

1. Создайте файл PAM:

sudo nano /etc/pam.d/vsftpd_virtual

2. Добавьте содержимое:

auth required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd
account required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd

Настройка конфигурации для виртуальных пользователей

1. Отредактируйте конфигурацию:

sudo nano /etc/vsftpd.conf

2. Добавьте настройки виртуальных пользователей:

guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
pam_service_name=vsftpd_virtual
user_sub_token=$USER
local_root=/home/vftp/$USER

3. Создайте директории для виртуальных пользователей:

sudo mkdir -p /home/vftp/{virtualuser1,virtualuser2}
sudo chown ftp:ftp /home/vftp/{virtualuser1,virtualuser2}
sudo chmod 755 /home/vftp/{virtualuser1,virtualuser2}

6. Настройка SSL/TLS

Генерация SSL сертификата

1. Создайте приватный ключ:

sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048

2. Создайте запрос на сертификат:

sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr

3. Создайте самоподписанный сертификат:

sudo openssl x509 -req -days 365 -in /etc/ssl/certs/vsftpd.csr -signkey /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt

Настройка SSL в vsftpd

1. Отредактируйте конфигурацию:

sudo nano /etc/vsftpd.conf

2. Добавьте настройки SSL:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

3. Перезапустите vsftpd:

sudo systemctl restart vsftpd

7. Настройка файрвола

Настройка UFW

1. Разрешите FTP трафик:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 1024:65535/tcp

2. Проверьте статус:

sudo ufw status

Настройка iptables

1. Разрешите FTP порты:

sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT

2. Сохраните правила:

sudo iptables-save > /etc/iptables/rules.v4

8. Настройка пассивного режима

Настройка пассивного FTP

1. Отредактируйте конфигурацию:

sudo nano /etc/vsftpd.conf

2. Добавьте настройки пассивного режима:

pasv_enable=YES
pasv_min_port=21100
pasv_max_port=21110
pasv_address=YOUR_SERVER_IP

3. Замените YOUR_SERVER_IP на IP адрес вашего сервера.

Настройка активного режима

1. Добавьте настройки активного режима:

port_enable=YES
connect_from_port_20=YES
ftp_data_port=20

9. Управление vsftpd

Основные команды управления

  • Запуск vsftpd:
sudo systemctl start vsftpd
  • Остановка vsftpd:
sudo systemctl stop vsftpd
  • Перезапуск vsftpd:
sudo systemctl restart vsftpd
  • Проверка статуса:
sudo systemctl status vsftpd
  • Проверка конфигурации:
sudo vsftpd -olisten=NO /etc/vsftpd.conf

Управление пользователями

1. Добавьте пользователя в разрешенные:

echo "newuser" | sudo tee -a /etc/vsftpd.userlist

2. Удалите пользователя из разрешенных:

sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist

3. Заблокируйте пользователя:

echo "blockeduser" | sudo tee -a /etc/vsftpd.denied

10. Мониторинг и логирование

Настройка логирования

1. Отредактируйте конфигурацию:

sudo nano /etc/vsftpd.conf

2. Добавьте настройки логирования:

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

3. Создайте файл логов:

sudo touch /var/log/vsftpd.log
sudo chown ftp:ftp /var/log/vsftpd.log

Просмотр логов

1. Просмотрите логи vsftpd:

sudo tail -f /var/log/vsftpd.log

2. Просмотрите системные логи:

sudo journalctl -u vsftpd -f

3. Просмотрите логи аутентификации:

sudo tail -f /var/log/auth.log | grep vsftpd

Создание скрипта мониторинга

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/ftp-monitor.sh

2. Добавьте содержимое:

if systemctl is-active --quiet vsftpd; then
echo "vsftpd is running"
CONNECTIONS=$(netstat -an | grep :21 | wc -l)
echo "Active FTP connections: $CONNECTIONS"
MEMORY=$(ps aux | grep vsftpd | grep -v grep | awk '{print $6}')
echo "Memory usage: $MEMORY KB"
else
echo "vsftpd is not running"
echo "vsftpd is down" | mail -s "FTP Alert" admin@example.com
fi

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/ftp-monitor.sh

11. Устранение неполадок

Частые проблемы

1. FTP сервер не запускается:

  • Проверьте конфигурацию:
    sudo vsftpd -olisten=NO /etc/vsftpd.conf
  • Проверьте логи:
    sudo journalctl -u vsftpd
  • Проверьте права на файлы:
    ls -la /etc/vsftpd.conf

2. Пользователи не могут подключиться:

  • Проверьте файрвол:
    sudo ufw status
  • Проверьте порты:
    sudo netstat -tlnp | grep :21
  • Проверьте пользователей:
    cat /etc/vsftpd.userlist

3. Ошибка "500 Illegal PORT command":

  • Проверьте настройки пассивного режима
  • Проверьте файрвол для пассивных портов

Диагностика

1. Проверьте статус сервиса:

sudo systemctl status vsftpd

2. Проверьте подключения:

sudo netstat -an | grep :21

3. Проверьте логи:

sudo tail -f /var/log/vsftpd.log

12. Дополнительные настройки

Настройка ограничений

1. Добавьте ограничения в конфигурацию:

max_clients=50
max_per_ip=5
local_max_rate=1000000
anon_max_rate=500000

Настройка баннеров

1. Создайте файл баннера:

sudo nano /etc/vsftpd/banner

2. Добавьте содержимое:

Welcome to FTP Server
Authorized users only

3. Добавьте в конфигурацию:

ftpd_banner=/etc/vsftpd/banner

Настройка автоматического отключения

1. Добавьте настройки таймаутов:

idle_session_timeout=600
data_connection_timeout=120

Заключение

FTP сервер vsftpd успешно установлен и настроен! Теперь вы можете предоставлять файловые услуги.

Для размещения ваших FTP серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой FTP и обеспечением безопасности вашего сервера!