Налаштування FTP-сервера
FTP, другий за популярністю в інтернет протокол після HTTP, призначений для обміну файлами. Він призначений тільки для передачі файлів, зате робить це добре. На жаль, спочатку протокол спроектований так, що паролі, дані і все інше передаються відкритим текстом і їх можна легко перехопити - однак більшість серверів надають тільки анонімний доступ, так що це не проблема.
У цьому документі викладені рекомендації, які допоможуть вам правильно налаштувати FTP-сервер і звести до мінімуму загрозу проникнення в систему зловмисників через цей вид сервісу.
Налаштування анонімного FTP-сервера
Для початку вам необхідно створити бюджет користувача ftp. Для цього слід додати дані користувача в системний файл паролів, якщо це не зроблено пакетом ftp-сервера при установці. Бюджет ftp не повинен використовуватися будь-ким для входу в систему, тому ставити реальний пароль для нього не слід; група користувача також може бути будь-який, яка не має будь-яких прав на файлову систему - наприклад, власне ftp (якщо група ще не існує, то створіть її), вкажіть робочий каталог для нього, наприклад / var / ftp. а замість інтерпретатора командного рядка вкажіть / bin / false. Таким чином, запис у файлі / etc / passwd для користувача ftp матиме приблизно такий вигляд:
Отже, після того, як "офіційний" користувач майбутнього FTP-сервера створений, можна звернути увагу і на його домашній каталог. Домашнім каталогом користувача ftp є
ftp - це повний шлях до каталогу, який буде "кореневих" для всіх анонімних користувачів. У нашому випадку це / var / ftp. Власником цього каталогу буде користувач root. Так-так, саме він, а не ftp. Це повинно бути зроблено в цілях вашої ж (FTP-сервера і системи в цілому) безпеки - інакше одного разу ви можете дізнатися неприємну новину, що більше не є господарем в своїй системі.
Для нормального функціонування майбутнього сервера непогано було б створити дерево підкаталогів, в яких будуть розміщуватися деякі необхідні в роботі файли. це
ftp / pub. На всі перераховані вище каталоги необхідно розмежувати права доступу. для
ftp / lib це повинні бути 711, а для
ftp / pub - 775. Власником для всіх каталогів буде root - це робиться для того, щоб вміст перших трьох каталогів було доступно тільки для виконання, щоб уникнути копіювання виконуваних файлів знаходяться в них з метою вивчення їх на предмет уразливості - на відміну від
ftp / pub. який повинен бути доступний для всіх користувачів FTP-сервера, щоб вони могли безперешкодно (зрозуміло, в рамках дозволеного) використовувати ті файли, які ви хочете зробити доступними публічно.
Групу, якій належить
ftp / pub. краще змінити з root на спеціальну, в яку включені користувачі, які мають право зміни вмісту цього каталогу - цим не варто займатися від імені root.
Для чого потрібні ці каталоги і що в них має бути - запитаєте ви. Оскільки сеанс роботи з анонімним FTP-сервером виконується в ізольованому середовищі виконання (chrooted environment), то каталог
ftp стає кореневим каталогом, а каталоги
ftp / pub маскуються відповідно під / bin. / Etc. / Lib і / pub. Таким чином, ваш сервіс виявляється відрізаним від системних бібліотек та інших "небезпечних" програм, які, тим не менш, йому потрібні в роботі і їх потрібно надати, не порушуючи при цьому безпеки системи. Які саме програми та бібліотеки необхідні - залежить від того, який FTP-сервер ви будете використовувати, так як у більшості з них свої специфічні особливості. Деяким, наприклад, потрібна наявність
ftp / etc / passwd для отримання імен власників і груп файлів. Тому ви повинні будете покласти копію вашого системного файлу / etc / passwd. попередньо видаливши звідти всі зайві записи.
Для того, щоб дозволити користувачам вашого сервера доступ на запис, створіть каталог
Порада: для запобігання атаки на ваш сервер через ftp шляхом переповнення диска інформацією з метою заблокувати роботу всієї системи створюйте каталог
ftp / pub / incoming на окремому розділі.
Особливості FTP-серверів, що входять в комплект поставки ALT Linux Master
У комплект поставки нашого дистрибутива входять такі FTP-сервери:
libra-ftpd (Libra FTP daemon) - для організації FTP-сервера з анонімним доступом до наданих ресурсів, подібного до описаного в попередньому розділі;
vsftpd (Very Secure FTP Daemon) - повнофункціональний FTP-сервер.
Зрозуміло, "Very Secure" в його назві не є гарантією, однак свідчить про те, що при написанні коду метою стояло створення максимально безпечною і акуратно виконаної програми, мінімально чутливою до атак з боку.
Якщо вам досить анонімного FTP-сервера, то вам підійде libra-ftpd в поєднанні з anonftp. Цей пакет містить дерево каталогів і набір файлів необхідних для організації сервера з анонімним доступом, який не вимагає додаткової настройки - якщо тільки ви не захочете, наприклад, надати користувачам доступ на запис. Всю передачу даних цей сервер здійснює в пасивному режимі, що найвищою мірою безпечно, проте не завжди зручно. Хорошим рішенням буде застосування libra-ftpd як локального сервера в організації. Його використання в якості публічного сервера не зовсім виправдано, так як його система безпеки налаштована дуже параноїдально для цього завдання.
Якщо ж вам необхідний надійний, захищений і водночас надзвичайно швидкий і масштабований FTP-сервер, що надає не тільки анонімний доступ до ресурсів вашого сервера, але і доступ локально зареєстрованим користувачам, то вам безумовно знадобиться більш серйозне засіб, таке як vsftpd. Прикладом такого використання може послужити серверний пул ftp.redhat.com. обробляє по 15000 з'єднань одночасно.
Що ж надає йому таку популярність? По-перше, звичайно ж безпеку роботи. Кожен рядок його коду неодноразово піддавалася найжорсткішим перевіркам з боку фахівців в питаннях безпеки. Іншою стороною його привабливості безумовно є простота і гнучкість настройки. Всі необхідні настройки здійснюються шляхом редагування єдиного конфігураційного файлу /etc/vsftpd.conf.
З метою безпеки сервер за замовчуванням налаштований для надання тільки анонімного доступу. Заборонені будь-які команди запису. Від адміністратора потрібно тільки вказати за допомогою директиви nopriv_user ім'я користувача, яке vsftpd буде використовувати для організації безпечних з'єднань. Це повинен бути абсолютно ізольований і позбавлений будь-яких привілеїв користувач.
загальні рекомендації
Для отримання додаткової інформації по використанню xinetd дивіться сторінки керівництва xinetd і xinetd.conf.