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

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Установка и настройка FTP сервера (vsftpd) = == 1. Подготовка системы == * Войдите в систему под…»)
 
Строка 11: Строка 11:
  
 
1. Обновите список пакетов:
 
1. Обновите список пакетов:
<code>
+
<code>sudo apt update</code>
sudo apt update
 
</code>
 
  
 
2. Установите vsftpd:
 
2. Установите vsftpd:
<code>
+
<code>sudo apt install vsftpd</code>
sudo apt install vsftpd
 
</code>
 
  
 
3. Запустите и включите автозапуск vsftpd:
 
3. Запустите и включите автозапуск vsftpd:
<code>
+
<code>sudo systemctl start vsftpd</code>
sudo systemctl start vsftpd
+
<code>sudo systemctl enable vsftpd</code>
sudo systemctl enable vsftpd
 
</code>
 
  
 
=== Проверка установки ===
 
=== Проверка установки ===
  
 
1. Проверьте статус сервиса:
 
1. Проверьте статус сервиса:
<code>
+
<code>sudo systemctl status vsftpd</code>
sudo systemctl status vsftpd
 
</code>
 
  
 
2. Проверьте, что vsftpd слушает на порту 21:
 
2. Проверьте, что vsftpd слушает на порту 21:
<code>
+
<code>sudo netstat -tlnp | grep :21</code>
sudo netstat -tlnp | grep :21
 
</code>
 
  
 
3. Проверьте версию vsftpd:
 
3. Проверьте версию vsftpd:
<code>
+
<code>vsftpd -v</code>
vsftpd -v
 
</code>
 
  
 
== 3. Базовая настройка vsftpd ==
 
== 3. Базовая настройка vsftpd ==
Строка 48: Строка 36:
  
 
1. Создайте резервную копию конфигурации:
 
1. Создайте резервную копию конфигурации:
<code>
+
<code>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup</code>
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
 
</code>
 
  
 
2. Отредактируйте файл конфигурации:
 
2. Отредактируйте файл конфигурации:
<code>
+
<code>sudo nano /etc/vsftpd.conf</code>
sudo nano /etc/vsftpd.conf
 
</code>
 
  
 
3. Настройте основные параметры:
 
3. Настройте основные параметры:
<code>
+
<code>listen=YES</code>
# Основные настройки
+
<code>listen_ipv6=NO</code>
listen=YES
+
<code>anonymous_enable=NO</code>
listen_ipv6=NO
+
<code>local_enable=YES</code>
anonymous_enable=NO
+
<code>write_enable=YES</code>
local_enable=YES
+
<code>local_umask=022</code>
write_enable=YES
+
<code>dirmessage_enable=YES</code>
local_umask=022
+
<code>use_localtime=YES</code>
dirmessage_enable=YES
+
<code>xferlog_enable=YES</code>
use_localtime=YES
+
<code>connect_from_port_20=YES</code>
xferlog_enable=YES
+
<code>chroot_local_user=YES</code>
connect_from_port_20=YES
+
<code>secure_chroot_dir=/var/run/vsftpd/empty</code>
chroot_local_user=YES
+
<code>pam_service_name=vsftpd</code>
secure_chroot_dir=/var/run/vsftpd/empty
+
<code>rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem</code>
pam_service_name=vsftpd
+
<code>rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key</code>
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
+
<code>ssl_enable=NO</code>
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
 
ssl_enable=NO
 
</code>
 
  
 
=== Настройка безопасности ===
 
=== Настройка безопасности ===
  
 
1. Добавьте настройки безопасности:
 
1. Добавьте настройки безопасности:
<code>
+
<code>userlist_enable=YES</code>
# Настройки безопасности
+
<code>userlist_file=/etc/vsftpd.userlist</code>
userlist_enable=YES
+
<code>userlist_deny=NO</code>
userlist_file=/etc/vsftpd.userlist
+
<code>tcp_wrappers=YES</code>
userlist_deny=NO
+
<code>hide_ids=YES</code>
tcp_wrappers=YES
 
hide_ids=YES
 
</code>
 
  
 
2. Создайте файл пользователей:
 
2. Создайте файл пользователей:
<code>
+
<code>sudo nano /etc/vsftpd.userlist</code>
sudo nano /etc/vsftpd.userlist
 
</code>
 
  
 
3. Добавьте разрешенных пользователей:
 
3. Добавьте разрешенных пользователей:
<code>
+
<code>ftpuser1</code>
# Разрешенные пользователи FTP
+
<code>ftpuser2</code>
ftpuser1
 
ftpuser2
 
</code>
 
  
 
== 4. Настройка пользователей FTP ==
 
== 4. Настройка пользователей FTP ==
Строка 107: Строка 80:
  
 
1. Создайте пользователя для FTP:
 
1. Создайте пользователя для FTP:
<code>
+
<code>sudo useradd -m -s /bin/bash ftpuser1</code>
sudo useradd -m -s /bin/bash ftpuser1
 
</code>
 
  
 
2. Установите пароль:
 
2. Установите пароль:
<code>
+
<code>sudo passwd ftpuser1</code>
sudo passwd ftpuser1
 
</code>
 
  
 
3. Добавьте пользователя в файл разрешений:
 
3. Добавьте пользователя в файл разрешений:
<code>
+
<code>echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist</code>
echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist
 
</code>
 
  
 
=== Настройка домашних директорий ===
 
=== Настройка домашних директорий ===
  
 
1. Создайте директорию для FTP:
 
1. Создайте директорию для FTP:
<code>
+
<code>sudo mkdir -p /home/ftpuser1/ftp</code>
sudo mkdir -p /home/ftpuser1/ftp
 
</code>
 
  
 
2. Установите права доступа:
 
2. Установите права доступа:
<code>
+
<code>sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp</code>
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp
+
<code>sudo chmod 755 /home/ftpuser1/ftp</code>
sudo chmod 755 /home/ftpuser1/ftp
 
</code>
 
  
 
3. Создайте директории для загрузки и скачивания:
 
3. Создайте директории для загрузки и скачивания:
<code>
+
<code>sudo mkdir -p /home/ftpuser1/ftp/{upload,download}</code>
sudo mkdir -p /home/ftpuser1/ftp/{upload,download}
+
<code>sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/{upload,download}</code>
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/{upload,download}
+
<code>sudo chmod 755 /home/ftpuser1/ftp/{upload,download}</code>
sudo chmod 755 /home/ftpuser1/ftp/{upload,download}
 
</code>
 
  
 
== 5. Настройка виртуальных пользователей ===
 
== 5. Настройка виртуальных пользователей ===
Строка 146: Строка 107:
  
 
1. Создайте директорию для виртуальных пользователей:
 
1. Создайте директорию для виртуальных пользователей:
<code>
+
<code>sudo mkdir -p /etc/vsftpd/virtual_users</code>
sudo mkdir -p /etc/vsftpd/virtual_users
 
</code>
 
  
 
2. Создайте файл с паролями:
 
2. Создайте файл с паролями:
<code>
+
<code>sudo nano /etc/vsftpd/virtual_users/passwd</code>
sudo nano /etc/vsftpd/virtual_users/passwd
 
</code>
 
  
 
3. Добавьте пользователей (пользователь:пароль):
 
3. Добавьте пользователей (пользователь:пароль):
<code>
+
<code>virtualuser1:password1</code>
virtualuser1:password1
+
<code>virtualuser2:password2</code>
virtualuser2:password2
 
</code>
 
  
 
4. Создайте базу данных пользователей:
 
4. Создайте базу данных пользователей:
<code>
+
<code>sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/passwd /etc/vsftpd/virtual_users/passwd.db</code>
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/passwd /etc/vsftpd/virtual_users/passwd.db
 
</code>
 
  
 
5. Установите права доступа:
 
5. Установите права доступа:
<code>
+
<code>sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db</code>
sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db
 
</code>
 
  
 
=== Настройка PAM для виртуальных пользователей ===
 
=== Настройка PAM для виртуальных пользователей ===
  
 
1. Создайте файл PAM:
 
1. Создайте файл PAM:
<code>
+
<code>sudo nano /etc/pam.d/vsftpd_virtual</code>
sudo nano /etc/pam.d/vsftpd_virtual
 
</code>
 
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>
+
<code>auth required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd</code>
auth required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd
+
<code>account required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd</code>
account required pam_userdb.so db=/etc/vsftpd/virtual_users/passwd
 
</code>
 
  
 
=== Настройка конфигурации для виртуальных пользователей ===
 
=== Настройка конфигурации для виртуальных пользователей ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>
+
<code>sudo nano /etc/vsftpd.conf</code>
sudo nano /etc/vsftpd.conf
 
</code>
 
  
 
2. Добавьте настройки виртуальных пользователей:
 
2. Добавьте настройки виртуальных пользователей:
<code>
+
<code>guest_enable=YES</code>
# Настройки виртуальных пользователей
+
<code>guest_username=ftp</code>
guest_enable=YES
+
<code>virtual_use_local_privs=YES</code>
guest_username=ftp
+
<code>pam_service_name=vsftpd_virtual</code>
virtual_use_local_privs=YES
+
<code>user_sub_token=$USER</code>
pam_service_name=vsftpd_virtual
+
<code>local_root=/home/vftp/$USER</code>
user_sub_token=$USER
 
local_root=/home/vftp/$USER
 
</code>
 
  
 
3. Создайте директории для виртуальных пользователей:
 
3. Создайте директории для виртуальных пользователей:
<code>
+
<code>sudo mkdir -p /home/vftp/{virtualuser1,virtualuser2}</code>
sudo mkdir -p /home/vftp/{virtualuser1,virtualuser2}
+
<code>sudo chown ftp:ftp /home/vftp/{virtualuser1,virtualuser2}</code>
sudo chown ftp:ftp /home/vftp/{virtualuser1,virtualuser2}
+
<code>sudo chmod 755 /home/vftp/{virtualuser1,virtualuser2}</code>
sudo chmod 755 /home/vftp/{virtualuser1,virtualuser2}
 
</code>
 
  
 
== 6. Настройка SSL/TLS ===
 
== 6. Настройка SSL/TLS ===
Строка 214: Строка 154:
  
 
1. Создайте приватный ключ:
 
1. Создайте приватный ключ:
<code>
+
<code>sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048</code>
sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048
 
</code>
 
  
 
2. Создайте запрос на сертификат:
 
2. Создайте запрос на сертификат:
<code>
+
<code>sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr</code>
sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr
 
</code>
 
  
 
3. Создайте самоподписанный сертификат:
 
3. Создайте самоподписанный сертификат:
<code>
+
<code>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>
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>
+
<code>sudo nano /etc/vsftpd.conf</code>
sudo nano /etc/vsftpd.conf
 
</code>
 
  
 
2. Добавьте настройки SSL:
 
2. Добавьте настройки SSL:
<code>
+
<code>ssl_enable=YES</code>
# SSL настройки
+
<code>allow_anon_ssl=NO</code>
ssl_enable=YES
+
<code>force_local_data_ssl=YES</code>
allow_anon_ssl=NO
+
<code>force_local_logins_ssl=YES</code>
force_local_data_ssl=YES
+
<code>ssl_tlsv1=YES</code>
force_local_logins_ssl=YES
+
<code>ssl_sslv2=NO</code>
ssl_tlsv1=YES
+
<code>ssl_sslv3=NO</code>
ssl_sslv2=NO
+
<code>rsa_cert_file=/etc/ssl/certs/vsftpd.crt</code>
ssl_sslv3=NO
+
<code>rsa_private_key_file=/etc/ssl/private/vsftpd.key</code>
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
 
rsa_private_key_file=/etc/ssl/private/vsftpd.key
 
</code>
 
  
 
3. Перезапустите vsftpd:
 
3. Перезапустите vsftpd:
<code>
+
<code>sudo systemctl restart vsftpd</code>
sudo systemctl restart vsftpd
 
</code>
 
  
 
== 7. Настройка файрвола ===
 
== 7. Настройка файрвола ===
Строка 259: Строка 186:
  
 
1. Разрешите FTP трафик:
 
1. Разрешите FTP трафик:
<code>
+
<code>sudo ufw allow 20/tcp</code>
sudo ufw allow 20/tcp
+
<code>sudo ufw allow 21/tcp</code>
sudo ufw allow 21/tcp
+
<code>sudo ufw allow 1024:65535/tcp</code>
sudo ufw allow 1024:65535/tcp
 
</code>
 
  
 
2. Проверьте статус:
 
2. Проверьте статус:
<code>
+
<code>sudo ufw status</code>
sudo ufw status
 
</code>
 
  
 
=== Настройка iptables ===
 
=== Настройка iptables ===
  
 
1. Разрешите FTP порты:
 
1. Разрешите FTP порты:
<code>
+
<code>sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
+
<code>sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT</code>
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
 
</code>
 
  
 
2. Сохраните правила:
 
2. Сохраните правила:
<code>
+
<code>sudo iptables-save > /etc/iptables/rules.v4</code>
sudo iptables-save > /etc/iptables/rules.v4
 
</code>
 
  
 
== 8. Настройка пассивного режима ===
 
== 8. Настройка пассивного режима ===
Строка 289: Строка 208:
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>
+
<code>sudo nano /etc/vsftpd.conf</code>
sudo nano /etc/vsftpd.conf
 
</code>
 
  
 
2. Добавьте настройки пассивного режима:
 
2. Добавьте настройки пассивного режима:
<code>
+
<code>pasv_enable=YES</code>
# Пассивный режим
+
<code>pasv_min_port=21100</code>
pasv_enable=YES
+
<code>pasv_max_port=21110</code>
pasv_min_port=21100
+
<code>pasv_address=YOUR_SERVER_IP</code>
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>
+
<code>port_enable=YES</code>
# Активный режим
+
<code>connect_from_port_20=YES</code>
port_enable=YES
+
<code>ftp_data_port=20</code>
connect_from_port_20=YES
 
ftp_data_port=20
 
</code>
 
  
 
== 9. Управление vsftpd ==
 
== 9. Управление vsftpd ==
Строка 319: Строка 230:
  
 
* '''Запуск vsftpd''':
 
* '''Запуск vsftpd''':
<code>
+
<code>sudo systemctl start vsftpd</code>
sudo systemctl start vsftpd
 
</code>
 
  
 
* '''Остановка vsftpd''':
 
* '''Остановка vsftpd''':
<code>
+
<code>sudo systemctl stop vsftpd</code>
sudo systemctl stop vsftpd
 
</code>
 
  
 
* '''Перезапуск vsftpd''':
 
* '''Перезапуск vsftpd''':
<code>
+
<code>sudo systemctl restart vsftpd</code>
sudo systemctl restart vsftpd
 
</code>
 
  
 
* '''Проверка статуса''':
 
* '''Проверка статуса''':
<code>
+
<code>sudo systemctl status vsftpd</code>
sudo systemctl status vsftpd
 
</code>
 
  
 
* '''Проверка конфигурации''':
 
* '''Проверка конфигурации''':
<code>
+
<code>sudo vsftpd -olisten=NO /etc/vsftpd.conf</code>
sudo vsftpd -olisten=NO /etc/vsftpd.conf
 
</code>
 
  
 
=== Управление пользователями ===
 
=== Управление пользователями ===
  
 
1. Добавьте пользователя в разрешенные:
 
1. Добавьте пользователя в разрешенные:
<code>
+
<code>echo "newuser" | sudo tee -a /etc/vsftpd.userlist</code>
echo "newuser" | sudo tee -a /etc/vsftpd.userlist
 
</code>
 
  
 
2. Удалите пользователя из разрешенных:
 
2. Удалите пользователя из разрешенных:
<code>
+
<code>sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist</code>
sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist
 
</code>
 
  
 
3. Заблокируйте пользователя:
 
3. Заблокируйте пользователя:
<code>
+
<code>echo "blockeduser" | sudo tee -a /etc/vsftpd.denied</code>
echo "blockeduser" | sudo tee -a /etc/vsftpd.denied
 
</code>
 
  
 
== 10. Мониторинг и логирование ===
 
== 10. Мониторинг и логирование ===
Строка 365: Строка 260:
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>
+
<code>sudo nano /etc/vsftpd.conf</code>
sudo nano /etc/vsftpd.conf
 
</code>
 
  
 
2. Добавьте настройки логирования:
 
2. Добавьте настройки логирования:
<code>
+
<code>xferlog_enable=YES</code>
# Логирование
+
<code>xferlog_file=/var/log/vsftpd.log</code>
xferlog_enable=YES
+
<code>log_ftp_protocol=YES</code>
xferlog_file=/var/log/vsftpd.log
 
log_ftp_protocol=YES
 
</code>
 
  
 
3. Создайте файл логов:
 
3. Создайте файл логов:
<code>
+
<code>sudo touch /var/log/vsftpd.log</code>
sudo touch /var/log/vsftpd.log
+
<code>sudo chown ftp:ftp /var/log/vsftpd.log</code>
sudo chown ftp:ftp /var/log/vsftpd.log
 
</code>
 
  
 
=== Просмотр логов ===
 
=== Просмотр логов ===
  
 
1. Просмотрите логи vsftpd:
 
1. Просмотрите логи vsftpd:
<code>
+
<code>sudo tail -f /var/log/vsftpd.log</code>
sudo tail -f /var/log/vsftpd.log
 
</code>
 
  
 
2. Просмотрите системные логи:
 
2. Просмотрите системные логи:
<code>
+
<code>sudo journalctl -u vsftpd -f</code>
sudo journalctl -u vsftpd -f
 
</code>
 
  
 
3. Просмотрите логи аутентификации:
 
3. Просмотрите логи аутентификации:
<code>
+
<code>sudo tail -f /var/log/auth.log | grep vsftpd</code>
sudo tail -f /var/log/auth.log | grep vsftpd
 
</code>
 
  
 
=== Создание скрипта мониторинга ===
 
=== Создание скрипта мониторинга ===
  
 
1. Создайте скрипт мониторинга:
 
1. Создайте скрипт мониторинга:
<code>
+
<code>sudo nano /usr/local/bin/ftp-monitor.sh</code>
sudo nano /usr/local/bin/ftp-monitor.sh
 
</code>
 
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>
+
<code>if systemctl is-active --quiet vsftpd; then</code>
#!/bin/bash
+
<code>echo "vsftpd is running"</code>
 
+
<code>CONNECTIONS=$(netstat -an | grep :21 | wc -l)</code>
# Проверка статуса vsftpd
+
<code>echo "Active FTP connections: $CONNECTIONS"</code>
if systemctl is-active --quiet vsftpd; then
+
<code>MEMORY=$(ps aux | grep vsftpd | grep -v grep | awk '{print $6}')</code>
    echo "vsftpd is running"
+
<code>echo "Memory usage: $MEMORY KB"</code>
   
+
<code>else</code>
    # Проверка подключений
+
<code>echo "vsftpd is not running"</code>
    CONNECTIONS=$(netstat -an | grep :21 | wc -l)
+
<code>echo "vsftpd is down" | mail -s "FTP Alert" admin@example.com</code>
    echo "Active FTP connections: $CONNECTIONS"
+
<code>fi</code>
   
 
    # Проверка использования памяти
 
    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>
+
<code>sudo chmod +x /usr/local/bin/ftp-monitor.sh</code>
sudo chmod +x /usr/local/bin/ftp-monitor.sh
 
</code>
 
  
 
== 11. Устранение неполадок ===
 
== 11. Устранение неполадок ===
Строка 456: Строка 323:
  
 
1. Проверьте статус сервиса:
 
1. Проверьте статус сервиса:
<code>
+
<code>sudo systemctl status vsftpd</code>
sudo systemctl status vsftpd
 
</code>
 
  
 
2. Проверьте подключения:
 
2. Проверьте подключения:
<code>
+
<code>sudo netstat -an | grep :21</code>
sudo netstat -an | grep :21
 
</code>
 
  
 
3. Проверьте логи:
 
3. Проверьте логи:
<code>
+
<code>sudo tail -f /var/log/vsftpd.log</code>
sudo tail -f /var/log/vsftpd.log
 
</code>
 
  
 
== 12. Дополнительные настройки ===
 
== 12. Дополнительные настройки ===
Строка 475: Строка 336:
  
 
1. Добавьте ограничения в конфигурацию:
 
1. Добавьте ограничения в конфигурацию:
<code>
+
<code>max_clients=50</code>
# Ограничения
+
<code>max_per_ip=5</code>
max_clients=50
+
<code>local_max_rate=1000000</code>
max_per_ip=5
+
<code>anon_max_rate=500000</code>
local_max_rate=1000000
 
anon_max_rate=500000
 
</code>
 
  
 
=== Настройка баннеров ===
 
=== Настройка баннеров ===
  
 
1. Создайте файл баннера:
 
1. Создайте файл баннера:
<code>
+
<code>sudo nano /etc/vsftpd/banner</code>
sudo nano /etc/vsftpd/banner
 
</code>
 
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>
+
<code>Welcome to FTP Server</code>
Welcome to FTP Server
+
<code>Authorized users only</code>
Authorized users only
 
</code>
 
  
 
3. Добавьте в конфигурацию:
 
3. Добавьте в конфигурацию:
<code>
+
<code>ftpd_banner=/etc/vsftpd/banner</code>
ftpd_banner=/etc/vsftpd/banner
 
</code>
 
  
 
=== Настройка автоматического отключения ===
 
=== Настройка автоматического отключения ===
  
 
1. Добавьте настройки таймаутов:
 
1. Добавьте настройки таймаутов:
<code>
+
<code>idle_session_timeout=600</code>
# Таймауты
+
<code>data_connection_timeout=120</code>
idle_session_timeout=600
 
data_connection_timeout=120
 
</code>
 
  
 
== Заключение ==
 
== Заключение ==

Версия 20:00, 14 октября 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 и обеспечением безопасности вашего сервера!