vsftpd — це дуже безпечний FTP-демон (FTP — це протокол передачі файлів). Він доступний протягом багатьох років і є демоном FTP за умовчанням у Rocky Linux та багатьох інших дистрибутивах Linux.
vsftpd дозволяє використовувати віртуальних користувачів із підключеними модулями автентифікації (PAM). Ці віртуальні користувачі не існують у системі та не мають інших дозволів, окрім FTP. Якщо віртуального користувача скомпрометовано, особа з такими обліковими даними не матиме інших дозволів після отримання доступу як цей користувач. Це налаштування є дуже безпечним, але вимагає додаткової роботи.
Розгляньте sftp
Навіть з налаштуваннями безпеки, які використовуються тут для налаштування vsftpd, ви можете розглянути sftp замість цього. sftp зашифрує весь потік з’єднання та є більш безпечним. Ми створили документ під назвою Захищений сервер - sftp, який стосується налаштування sftp і блокування SSH.
Ви також повинні переконатися, що встановлено openssl. Якщо ви використовуєте веб-сервер, можливо, є вже встановлено, але для перевірки ви можете виконати:
Ви бажаєте вимкнути деякі параметри та ввімкнути інші. Як правило, встановлення vsftpd включає в себе найбільш розумні параметри, які вже встановлені. Це все ще гарна ідея перевірити їх.
Щоб перевірити файл конфігурації та за потреби внести зміни, запустіть:
vi /etc/vsftpd/vsftpd.conf
Знайдіть рядок «anonymous_enable=" і переконайтеся, що він «НІ» та НЕ закоментований. (Коментування цього рядка увімкне анонімний вхід). Рядок виглядатиме так, якщо він правильний:
anonymous_enable=NO
Переконайтеся, що «local_enable» має значення «yes»:
local_enable=YES
Додайте рядок для локального користувача root. Якщо сервер є веб-сервером, і ви використовуєте налаштування веб-сервера Apache Multi-Site, це відображатиме ваш локальний корень. Якщо ваші налаштування відрізняються або це не веб-сервер, змініть параметр "local_root":
local_root=/var/www/sub-domains
Також переконайтеся, що «write_enable» має значення «yes»:
write_enable=YES
Знайдіть рядок "chroot_local_user" і видаліть зауваження. Додайте два рядки після показаного тут:
Під цим ви хочете додати розділ, який стосуватиметься віртуальних користувачів:
# Virtual User Settings
user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd
Вам потрібно додати розділ у нижній частині файлу, щоб примусово шифрувати паролі, надіслані через Інтернет. Вам потрібно встановити openssl і створити сертифікат для цього.
Почніть із додавання цих рядків у нижній частині файлу:
Вам потрібно створити файл сертифіката RSA vsftpd. Автор взагалі вважає, що сервер служить 4-5 років. Встановіть дні для цього сертифіката на основі років, за якими ви вважаєте, що сервер буде працювати на цьому обладнанні.
Відредагуйте кількість днів, як вважаєте за потрібне, і використовуйте формат цієї команди, щоб створити файли сертифіката та закритого ключа:
Як і всі процеси створення сертифікатів, це запустить сценарій із запитом на певну інформацію. Це не складний процес. Ви залишите багато полів порожніми.
Перше поле – поле коду країни; заповніть цей дволітерний код вашої країни:
Country Name (2 letter code) [XX]:
Далі йде штат або провінція, заповніть це, ввівши повну назву, а не абревіатуру:
State or Province Name (full name) []:
Далі йде назва населеного пункту. Це твоє місто:
Locality Name (eg, city) [Default City]:
Далі йде назва компанії або організації. Ви можете залишити це поле порожнім або заповнити його. Це необов'язково:
Organization Name (eg, company) [Default Company Ltd]:
Далі вказується назва організаційного підрозділу. Ви можете заповнити це поле, якщо сервер призначено для певного підрозділу, або залишити поле порожнім:
Organizational Unit Name (eg, section) []:
Наступне поле потрібно заповнити, але ви можете вирішити, як вам це потрібно. Це загальна назва вашого сервера. Приклад: webftp.domainname.ext:
Common Name (eg, your name or your server's hostname) []:
Як було сказано раніше, використання віртуальних користувачів для vsftpd набагато безпечніше, оскільки вони не мають системних привілеїв. Тим не менш, вам потрібно додати користувача для віртуальних користувачів. Також потрібно додати групу:
Користувач має відповідати рядку guest_username= у файлі vsftpd.conf.
Перейдіть до каталогу конфігурації для vsftpd:
cd /etc/vsftpd
Потрібно створити базу паролів. Ви використовуєте цю базу даних для автентифікації наших віртуальних користувачів. Вам потрібно створити файл для читання віртуальних користувачів і паролів. Це створить базу даних.
У майбутньому, додаючи користувачів, ви захочете повторити цей процес знову:
vi vusers.txt
Користувач і пароль розділені рядками, введіть користувача, натисніть ENTER і введіть пароль. Продовжуйте, доки не додасте всіх користувачів, яким наразі потрібно надати доступ до системи. Приклад:
Після завершення створення текстового файлу ви хочете створити базу даних паролів, яку vsftpd використовуватиме для віртуальних користувачів. Зробіть це за допомогою команди db_load. db_load надається libdb-utils, який має бути завантажений у вашій системі, але якщо це не так, ви можете просто встановити його за допомогою:
dnf install libdb-utils
Створіть базу даних із текстового файлу за допомогою:
Приділіть хвилинку, щоб переглянути, що робить db_load:
Параметр -T дозволяє імпортувати текстовий файл до бази даних
Параметр -t каже, що потрібно вказати основний метод доступу
Хеш є основним методом доступу, який ви вказуєте
Параметр -f говорить про читання з указаного файлу
Указаний файл — vusers.txt
А база даних, яку ви створюєте чи додаєте, це vsftpd-virtual-user.db
Змініть дозволи за замовчуванням для файлу бази даних:
chmod 600 vsftpd-virtual-user.db
Видаліть файл "vusers.txt":
rm vusers.txt
Додаючи користувачів, використовуйте vi, щоб створити ще один файл «vusers.txt», і повторно запустіть команду db_load, яка додасть користувачів до бази даних.
vsftpd встановлює файл pam за умовчанням, коли ви встановлюєте пакет. Ви збираєтеся замінити це своїм вмістом. Завжди спочатку створюйте резервну копію старого файлу.
Створіть каталог для файлу резервної копії в /root:
mkdir /root/backup_vsftpd_pam
Скопіюйте файл pam до цього каталогу:
cp /etc/pam.d/vsftpd /root/backup_vsftpd_pam/
Відредагуйте вихідний файл:
vi /etc/pam.d/vsftpd
Видаліть у цьому файлі все, крім "#%PAM-1.0", і додайте такі рядки:
Кожен віртуальний користувач має конфігураційний файл із зазначенням власного каталогу "local_root". Власником цього локального кореня є користувач "vsftpd" і група "nogroup".
Ви можете перевірити налаштування за допомогою командного рядка на машині та спробувати отримати доступ до машини за допомогою FTP. Тим не менш, найпростіший спосіб тестування — це перевірка за допомогою клієнта FTP, наприклад FileZilla.
Коли ви тестуєте віртуального користувача на сервері, на якому працює vsftpd, ви отримаєте повідомлення про довіру сертифіката SSL/TLS. Це довірче повідомлення повідомляє особі, що сервер використовує сертифікат, і просить її підтвердити його перед продовженням. Ви можете розміщувати файли в папці "local_root", якщо підключилися як віртуальний користувач.
Якщо ви не можете завантажити файл, вам, можливо, доведеться повернутися та ще раз перевірити кожен із кроків. Наприклад, можливо, права власності для "local_root" не встановлено для користувача "vsftpd" і групи "nogroup".
vsftpd є популярним і поширеним FTP-сервером, який може бути окремим сервером або частиною захищеного веб-сервера Apache. Це досить безпечно, якщо налаштовано використовувати віртуальних користувачів і сертифікат.
Ця процедура містить багато кроків для налаштування vsftpd. Додатковий час для правильного налаштування гарантує, що ваш сервер буде максимально безпечним.