Лучше всего доступ по FTP запретить всем системным учетным записям, ID которых менее 500. Для этого достаточно в файле ftpaccess добавить следующую строку:
deny-uid %-500
В этом случае можно быть уверенным, что никого не забыли. Тем более что с одним идентификатором (например, с ID, равным нулю) может быть несколько пользователей.
10.5.2. Компьютерам вход запрещен
Как говорит великая администраторская мудрость — на сетевой экран надейся, а сам не плошай. Firewall позволяет запретить доступ к серверу на определенные порты с конкретных компьютеров. Конфигурационный файл /etc/ftphostsвыполняет схожие задачи — разрешает или запрещает доступ с указанных IP-адресов или целой сети.
По умолчанию файл пустой, потому что разработчики дистрибутива не могут знать, как вы планируете организовать доступ. Вы можете прописать в нем следующие директивы:
allow имя шаблон
deny имя шаблон
Например, если вы хотите запретить доступ анонимным пользователям с адреса 192.168.1.1, то добавьте строку:
deny anonymous 192.168.1.1
Если исходить из нашего принципа "Что не разрешено, то запрещено", то может показаться, что строка с директивой denyне нужна. Это неверно, потому что необходимо закрепить разрешение на доступ с указанного адреса для определенного типа пользователей, чтобы остальным закрыть возможность входа на FTP.
В файле ftpgroups находятся описания групп (равносильны правам доступа), при создании которых можно использовать команды SITE GROUPи SITE GPASS. Это нестандартные директивы FTP, и мало кем из производителей поддерживаются, поэтому для пользователей работа с этими командами может оказаться слишком неудобной.
Файл ftpgroups содержит строки примерно следующего вида:
test:ENCRYPTED PASSWORD HERE:archive
Строка-описание состоит из трех параметров, разделенных двоеточием: имя группы, пароль и реальное (системное) имя группы.
10.6. Гостевые учетные записи
Если сейчас попытаться войти в систему под любым аккаунтом, то вы сможете путешествовать по всей файловой системе. Но в большинстве случаев пользователям нужно работать только с собственными документами, поэтому для всех своих FTP-пользователей я завожу гостевые учетные записи. Давайте рассмотрим на примере, как это происходит.
Для начала нужно создать новую учетную запись для пользователя, например robert_ftp. Для этого выполняем команду:
add robert_ftp
Теперь посмотрим на созданную для него строку в файле /etc/passwd. Она должна выглядеть примерно следующим образом:
robert_ftp:x:507:507::/home/robert_ftp:/bin/bash
Классическая запись для нового пользователя. Но через нее можно входить в систему локально, а мы должны ограничиться только FTP-доступом. Изменим командную оболочку (shell) для этого пользователя на /bin/ftponly. Такой оболочки пока нет, и мы ее еще создадим чуть позже. Помимо этого, необходимо директорию /home/robert_ftpсделать корневой. Для этого нужно добавить в конце пути папку с именем в виде точки.
Отредактируйте соответствующим образом строку, и вы получите такой результат:
robert_ftp:x:507:507::/home/robert_ftp/.:/bin/ftponly
Обратите внимание, что в качестве командной оболочки указан файл /bin/ftponly, который не существует. Давайте его создадим. Это делается только один раз и потом используется всеми гостевыми учетными записями. Для создания файла можно воспользоваться командой cat:
cat >> /bin/ftponly
В ответ на это все команды, которые теперь будут вводиться в консоли, попадут в файл /bin/ftponly. Наберите следующий текст:
#! /bin/sh
echo 'You are not allowed to log in interactively'
exit 0
Для завершения ввода в файл нужно нажать сочетание клавиш +, и вы вернетесь в нормальный режим работы.
В файле /bin/ftponlyу нас хранится всего две команды: первая выводит на экран эхо-сообщение о том, что нельзя входить в систему интерактивно, вторая — завершает сеанс.
Теперь необходимо сделать наш скрипт /bin/ftponlyисполняемым. Для этого выполните команду:
chmod 755 /bin/ftponly
Итак, у нас создан файл командной оболочки и пользователь, который использует ее. Если сейчас попытаться войти в систему как пользователь robert_ftp, то на секунду появится сообщение "You are not allowed to log in interactively" и произойдет выход из системы. Таким образом, работать под учетной записью robert_ftp нельзя.
Вместо файла /bin/ftponlyможно использовать в качестве командного интерпретатора /dev/null— нулевое устройство, которое не может обрабатывать команды и не позволит входить в систему под этой учетной записью. Оно определено в качестве консоли в файле /etc/passwdдля всех системных учетных записей, которые не предназначены для локальной работы.
Читать дальше
Конец ознакомительного отрывка
Купить книгу