Установка и настройка FTP сервера (vsftpd) — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Установка и настройка FTP сервера (vsftpd) = == 1. Подготовка системы == * Войдите в систему под…») |
Admin (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 11: | Строка 11: | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
− | < | + | <pre>sudo apt update</pre> |
− | sudo apt update | ||
− | </ | ||
2. Установите vsftpd: | 2. Установите vsftpd: | ||
− | < | + | <pre>sudo apt install vsftpd</pre> |
− | sudo apt install vsftpd | ||
− | </ | ||
3. Запустите и включите автозапуск vsftpd: | 3. Запустите и включите автозапуск vsftpd: | ||
− | < | + | <pre>sudo systemctl start vsftpd</pre> |
− | sudo systemctl start vsftpd | + | <pre>sudo systemctl enable vsftpd</pre> |
− | sudo systemctl enable vsftpd | ||
− | </ | ||
=== Проверка установки === | === Проверка установки === | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
− | < | + | <pre>sudo systemctl status vsftpd</pre> |
− | sudo systemctl status vsftpd | ||
− | </ | ||
2. Проверьте, что vsftpd слушает на порту 21: | 2. Проверьте, что vsftpd слушает на порту 21: | ||
− | < | + | <pre>sudo netstat -tlnp | grep :21</pre> |
− | sudo netstat -tlnp | grep :21 | ||
− | </ | ||
3. Проверьте версию vsftpd: | 3. Проверьте версию vsftpd: | ||
− | < | + | <pre>vsftpd -v</pre> |
− | vsftpd -v | ||
− | </ | ||
== 3. Базовая настройка vsftpd == | == 3. Базовая настройка vsftpd == | ||
Строка 48: | Строка 36: | ||
1. Создайте резервную копию конфигурации: | 1. Создайте резервную копию конфигурации: | ||
− | < | + | <pre>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup</pre> |
− | sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup | ||
− | </ | ||
2. Отредактируйте файл конфигурации: | 2. Отредактируйте файл конфигурации: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.conf</pre> |
− | sudo nano /etc/vsftpd.conf | ||
− | </ | ||
3. Настройте основные параметры: | 3. Настройте основные параметры: | ||
− | < | + | <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 | ||
− | </ | ||
=== Настройка безопасности === | === Настройка безопасности === | ||
1. Добавьте настройки безопасности: | 1. Добавьте настройки безопасности: | ||
− | < | + | <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 | ||
− | </ | ||
2. Создайте файл пользователей: | 2. Создайте файл пользователей: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.userlist</pre> |
− | sudo nano /etc/vsftpd.userlist | ||
− | </ | ||
3. Добавьте разрешенных пользователей: | 3. Добавьте разрешенных пользователей: | ||
− | < | + | <pre>ftpuser1</pre> |
− | + | <pre>ftpuser2</pre> | |
− | ftpuser1 | ||
− | ftpuser2 | ||
− | </ | ||
== 4. Настройка пользователей FTP == | == 4. Настройка пользователей FTP == | ||
Строка 107: | Строка 80: | ||
1. Создайте пользователя для FTP: | 1. Создайте пользователя для FTP: | ||
− | < | + | <pre>sudo useradd -m -s /bin/bash ftpuser1</pre> |
− | sudo useradd -m -s /bin/bash ftpuser1 | ||
− | </ | ||
2. Установите пароль: | 2. Установите пароль: | ||
− | < | + | <pre>sudo passwd ftpuser1</pre> |
− | sudo passwd ftpuser1 | ||
− | </ | ||
3. Добавьте пользователя в файл разрешений: | 3. Добавьте пользователя в файл разрешений: | ||
− | < | + | <pre>echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist</pre> |
− | echo "ftpuser1" | sudo tee -a /etc/vsftpd.userlist | ||
− | </ | ||
=== Настройка домашних директорий === | === Настройка домашних директорий === | ||
1. Создайте директорию для FTP: | 1. Создайте директорию для FTP: | ||
− | < | + | <pre>sudo mkdir -p /home/ftpuser1/ftp</pre> |
− | sudo mkdir -p /home/ftpuser1/ftp | ||
− | </ | ||
2. Установите права доступа: | 2. Установите права доступа: | ||
− | < | + | <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 | ||
− | </ | ||
3. Создайте директории для загрузки и скачивания: | 3. Создайте директории для загрузки и скачивания: | ||
− | < | + | <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} | ||
− | </ | ||
− | == 5. Настройка виртуальных пользователей | + | == 5. Настройка виртуальных пользователей == |
=== Создание виртуальных пользователей === | === Создание виртуальных пользователей === | ||
1. Создайте директорию для виртуальных пользователей: | 1. Создайте директорию для виртуальных пользователей: | ||
− | < | + | <pre>sudo mkdir -p /etc/vsftpd/virtual_users</pre> |
− | sudo mkdir -p /etc/vsftpd/virtual_users | ||
− | </ | ||
2. Создайте файл с паролями: | 2. Создайте файл с паролями: | ||
− | < | + | <pre>sudo nano /etc/vsftpd/virtual_users/passwd</pre> |
− | sudo nano /etc/vsftpd/virtual_users/passwd | ||
− | </ | ||
3. Добавьте пользователей (пользователь:пароль): | 3. Добавьте пользователей (пользователь:пароль): | ||
− | < | + | <pre>virtualuser1:password1</pre> |
− | virtualuser1:password1 | + | <pre>virtualuser2:password2</pre> |
− | virtualuser2:password2 | ||
− | </ | ||
4. Создайте базу данных пользователей: | 4. Создайте базу данных пользователей: | ||
− | < | + | <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 | ||
− | </ | ||
5. Установите права доступа: | 5. Установите права доступа: | ||
− | < | + | <pre>sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db</pre> |
− | sudo chmod 600 /etc/vsftpd/virtual_users/passwd.db | ||
− | </ | ||
=== Настройка PAM для виртуальных пользователей === | === Настройка PAM для виртуальных пользователей === | ||
1. Создайте файл PAM: | 1. Создайте файл PAM: | ||
− | < | + | <pre>sudo nano /etc/pam.d/vsftpd_virtual</pre> |
− | sudo nano /etc/pam.d/vsftpd_virtual | ||
− | </ | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <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 | ||
− | </ | ||
=== Настройка конфигурации для виртуальных пользователей === | === Настройка конфигурации для виртуальных пользователей === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.conf</pre> |
− | sudo nano /etc/vsftpd.conf | ||
− | </ | ||
2. Добавьте настройки виртуальных пользователей: | 2. Добавьте настройки виртуальных пользователей: | ||
− | < | + | <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 | ||
− | </ | ||
3. Создайте директории для виртуальных пользователей: | 3. Создайте директории для виртуальных пользователей: | ||
− | < | + | <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} | ||
− | </ | ||
− | == 6. Настройка SSL/TLS | + | == 6. Настройка SSL/TLS == |
=== Генерация SSL сертификата === | === Генерация SSL сертификата === | ||
1. Создайте приватный ключ: | 1. Создайте приватный ключ: | ||
− | < | + | <pre>sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048</pre> |
− | sudo openssl genrsa -out /etc/ssl/private/vsftpd.key 2048 | ||
− | </ | ||
2. Создайте запрос на сертификат: | 2. Создайте запрос на сертификат: | ||
− | < | + | <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 | ||
− | </ | ||
3. Создайте самоподписанный сертификат: | 3. Создайте самоподписанный сертификат: | ||
− | < | + | <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 | ||
− | </ | ||
=== Настройка SSL в vsftpd === | === Настройка SSL в vsftpd === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.conf</pre> |
− | sudo nano /etc/vsftpd.conf | ||
− | </ | ||
2. Добавьте настройки SSL: | 2. Добавьте настройки SSL: | ||
− | < | + | <pre>ssl_enable=YES</pre> |
− | + | <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 | ||
− | </ | ||
3. Перезапустите vsftpd: | 3. Перезапустите vsftpd: | ||
− | < | + | <pre>sudo systemctl restart vsftpd</pre> |
− | sudo systemctl restart vsftpd | ||
− | </ | ||
− | == 7. Настройка файрвола | + | == 7. Настройка файрвола == |
=== Настройка UFW === | === Настройка UFW === | ||
1. Разрешите FTP трафик: | 1. Разрешите FTP трафик: | ||
− | < | + | <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 | ||
− | </ | ||
2. Проверьте статус: | 2. Проверьте статус: | ||
− | < | + | <pre>sudo ufw status</pre> |
− | sudo ufw status | ||
− | </ | ||
=== Настройка iptables === | === Настройка iptables === | ||
1. Разрешите FTP порты: | 1. Разрешите FTP порты: | ||
− | < | + | <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 | ||
− | </ | ||
2. Сохраните правила: | 2. Сохраните правила: | ||
− | < | + | <pre>sudo iptables-save > /etc/iptables/rules.v4</pre> |
− | sudo iptables-save > /etc/iptables/rules.v4 | ||
− | </ | ||
− | == 8. Настройка пассивного режима | + | == 8. Настройка пассивного режима == |
=== Настройка пассивного FTP === | === Настройка пассивного FTP === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.conf</pre> |
− | sudo nano /etc/vsftpd.conf | ||
− | </ | ||
2. Добавьте настройки пассивного режима: | 2. Добавьте настройки пассивного режима: | ||
− | < | + | <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 | ||
− | </ | ||
3. Замените YOUR_SERVER_IP на IP адрес вашего сервера. | 3. Замените YOUR_SERVER_IP на IP адрес вашего сервера. | ||
Строка 307: | Строка 221: | ||
1. Добавьте настройки активного режима: | 1. Добавьте настройки активного режима: | ||
− | < | + | <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 | ||
− | </ | ||
== 9. Управление vsftpd == | == 9. Управление vsftpd == | ||
Строка 319: | Строка 230: | ||
* '''Запуск vsftpd''': | * '''Запуск vsftpd''': | ||
− | < | + | <pre>sudo systemctl start vsftpd</pre> |
− | sudo systemctl start vsftpd | ||
− | </ | ||
* '''Остановка vsftpd''': | * '''Остановка vsftpd''': | ||
− | < | + | <pre>sudo systemctl stop vsftpd</pre> |
− | sudo systemctl stop vsftpd | ||
− | </ | ||
* '''Перезапуск vsftpd''': | * '''Перезапуск vsftpd''': | ||
− | < | + | <pre>sudo systemctl restart vsftpd</pre> |
− | sudo systemctl restart vsftpd | ||
− | </ | ||
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
− | < | + | <pre>sudo systemctl status vsftpd</pre> |
− | sudo systemctl status vsftpd | ||
− | </ | ||
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
− | < | + | <pre>sudo vsftpd -olisten=NO /etc/vsftpd.conf</pre> |
− | sudo vsftpd -olisten=NO /etc/vsftpd.conf | ||
− | </ | ||
=== Управление пользователями === | === Управление пользователями === | ||
1. Добавьте пользователя в разрешенные: | 1. Добавьте пользователя в разрешенные: | ||
− | < | + | <pre>echo "newuser" | sudo tee -a /etc/vsftpd.userlist</pre> |
− | echo "newuser" | sudo tee -a /etc/vsftpd.userlist | ||
− | </ | ||
2. Удалите пользователя из разрешенных: | 2. Удалите пользователя из разрешенных: | ||
− | < | + | <pre>sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist</pre> |
− | sudo sed -i '/^newuser$/d' /etc/vsftpd.userlist | ||
− | </ | ||
3. Заблокируйте пользователя: | 3. Заблокируйте пользователя: | ||
− | < | + | <pre>echo "blockeduser" | sudo tee -a /etc/vsftpd.denied</pre> |
− | echo "blockeduser" | sudo tee -a /etc/vsftpd.denied | ||
− | </ | ||
− | == 10. Мониторинг и логирование | + | == 10. Мониторинг и логирование == |
=== Настройка логирования === | === Настройка логирования === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/vsftpd.conf</pre> |
− | sudo nano /etc/vsftpd.conf | ||
− | </ | ||
2. Добавьте настройки логирования: | 2. Добавьте настройки логирования: | ||
− | < | + | <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 | ||
− | </ | ||
3. Создайте файл логов: | 3. Создайте файл логов: | ||
− | < | + | <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 | ||
− | </ | ||
=== Просмотр логов === | === Просмотр логов === | ||
1. Просмотрите логи vsftpd: | 1. Просмотрите логи vsftpd: | ||
− | < | + | <pre>sudo tail -f /var/log/vsftpd.log</pre> |
− | sudo tail -f /var/log/vsftpd.log | ||
− | </ | ||
2. Просмотрите системные логи: | 2. Просмотрите системные логи: | ||
− | < | + | <pre>sudo journalctl -u vsftpd -f</pre> |
− | sudo journalctl -u vsftpd -f | ||
− | </ | ||
3. Просмотрите логи аутентификации: | 3. Просмотрите логи аутентификации: | ||
− | < | + | <pre>sudo tail -f /var/log/auth.log | grep vsftpd</pre> |
− | sudo tail -f /var/log/auth.log | grep vsftpd | ||
− | </ | ||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
− | < | + | <pre>sudo nano /usr/local/bin/ftp-monitor.sh</pre> |
− | sudo nano /usr/local/bin/ftp-monitor.sh | ||
− | </ | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>if systemctl is-active --quiet vsftpd; then</pre> |
− | + | <pre>echo "vsftpd is running"</pre> | |
− | + | <pre>CONNECTIONS=$(netstat -an | grep :21 | wc -l)</pre> | |
− | + | <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> |
− | + | <pre>echo "Memory usage: $MEMORY KB"</pre> | |
− | + | <pre>else</pre> | |
− | + | <pre>echo "vsftpd is not running"</pre> | |
− | + | <pre>echo "vsftpd is down" | mail -s "FTP Alert" admin@example.com</pre> | |
− | + | <pre>fi</pre> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | else | ||
− | |||
− | |||
− | |||
− | fi | ||
− | </ | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>sudo chmod +x /usr/local/bin/ftp-monitor.sh</pre> |
− | sudo chmod +x /usr/local/bin/ftp-monitor.sh | ||
− | </ | ||
− | == 11. Устранение неполадок | + | == 11. Устранение неполадок == |
=== Частые проблемы === | === Частые проблемы === | ||
1. '''FTP сервер не запускается''': | 1. '''FTP сервер не запускается''': | ||
− | * Проверьте конфигурацию: < | + | * Проверьте конфигурацию: <pre>sudo vsftpd -olisten=NO /etc/vsftpd.conf</pre> |
− | * Проверьте логи: < | + | * Проверьте логи: <pre>sudo journalctl -u vsftpd</pre> |
− | * Проверьте права на файлы: < | + | * Проверьте права на файлы: <pre>ls -la /etc/vsftpd.conf</pre> |
2. '''Пользователи не могут подключиться''': | 2. '''Пользователи не могут подключиться''': | ||
− | * Проверьте файрвол: < | + | * Проверьте файрвол: <pre>sudo ufw status</pre> |
− | * Проверьте порты: < | + | * Проверьте порты: <pre>sudo netstat -tlnp | grep :21</pre> |
− | * Проверьте пользователей: < | + | * Проверьте пользователей: <pre>cat /etc/vsftpd.userlist</pre> |
3. '''Ошибка "500 Illegal PORT command"''': | 3. '''Ошибка "500 Illegal PORT command"''': | ||
Строка 456: | Строка 323: | ||
1. Проверьте статус сервиса: | 1. Проверьте статус сервиса: | ||
− | < | + | <pre>sudo systemctl status vsftpd</pre> |
− | sudo systemctl status vsftpd | ||
− | </ | ||
2. Проверьте подключения: | 2. Проверьте подключения: | ||
− | < | + | <pre>sudo netstat -an | grep :21</pre> |
− | sudo netstat -an | grep :21 | ||
− | </ | ||
3. Проверьте логи: | 3. Проверьте логи: | ||
− | < | + | <pre>sudo tail -f /var/log/vsftpd.log</pre> |
− | sudo tail -f /var/log/vsftpd.log | ||
− | </ | ||
− | == 12. Дополнительные настройки | + | == 12. Дополнительные настройки == |
=== Настройка ограничений === | === Настройка ограничений === | ||
1. Добавьте ограничения в конфигурацию: | 1. Добавьте ограничения в конфигурацию: | ||
− | < | + | <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 | ||
− | </ | ||
=== Настройка баннеров === | === Настройка баннеров === | ||
1. Создайте файл баннера: | 1. Создайте файл баннера: | ||
− | < | + | <pre>sudo nano /etc/vsftpd/banner</pre> |
− | sudo nano /etc/vsftpd/banner | ||
− | </ | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>Welcome to FTP Server</pre> |
− | Welcome to FTP Server | + | <pre>Authorized users only</pre> |
− | Authorized users only | ||
− | </ | ||
3. Добавьте в конфигурацию: | 3. Добавьте в конфигурацию: | ||
− | < | + | <pre>ftpd_banner=/etc/vsftpd/banner</pre> |
− | ftpd_banner=/etc/vsftpd/banner | ||
− | </ | ||
=== Настройка автоматического отключения === | === Настройка автоматического отключения === | ||
1. Добавьте настройки таймаутов: | 1. Добавьте настройки таймаутов: | ||
− | < | + | <pre>idle_session_timeout=600</pre> |
− | + | <pre>data_connection_timeout=120</pre> | |
− | idle_session_timeout=600 | ||
− | data_connection_timeout=120 | ||
− | </ | ||
== Заключение == | == Заключение == |
Текущая версия на 10:42, 15 октября 2025
Содержание
- 1 Установка и настройка FTP сервера (vsftpd)
- 1.1 1. Подготовка системы
- 1.2 2. Установка vsftpd
- 1.3 3. Базовая настройка vsftpd
- 1.4 4. Настройка пользователей FTP
- 1.5 5. Настройка виртуальных пользователей
- 1.6 6. Настройка SSL/TLS
- 1.7 7. Настройка файрвола
- 1.8 8. Настройка пассивного режима
- 1.9 9. Управление vsftpd
- 1.10 10. Мониторинг и логирование
- 1.11 11. Устранение неполадок
- 1.12 12. Дополнительные настройки
- 1.13 Заключение
Установка и настройка 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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных FTP серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой FTP и обеспечением безопасности вашего сервера!