Книга: Linux глазами хакера

10.3.1. Доступ

10.3.1. Доступ

Такие директивы определяют основные права доступа к FTP-серверу. Давайте рассмотрим основные из них:

class имя type адреса — позволяет организовать классы пользователей по их типу и адресу. В нашем конфигурационном файле указана следующая строка:

class all anonymous,guest,real *

В качестве имени класса здесь указано all. После этого идет перечисление через запятую типов пользователей, которые будут отнесены к этому классу. В данном случае присутствуют все категории: anonymous, guest и real (анонимные, гости и авторизованные пользователи). Последний параметр — это шаблон адреса, на месте которого стоит звездочка, т.е. любой адрес. Получается, что к классу all относятся любые пользователи с произвольными адресами.

Классы — очень удобная вещь. Это как группы. Вы объединяете определенных пользователей и можете назначать им права. Например, можно создать класс пользователей, у которых IP-адрес относится к зоне вашей компании, офиса или страны. Затем только этому классу открываете полноценный доступ к FTP, а всем остальным — запрещаете или ограничиваете использование. Назначить права сразу целому классу намного удобнее, чем расписывать разрешение каждому пользователю в отдельности;

noretrieve тип класс файл — запрещает чтение указанного файла. Параметр тип указывает на абсолютную (absolute) или относительную (relative) адресацию (путь) к файлу. Далее идет определение класса в формате class=имя класса, к которому относится данный запрет. Можно явно указать описанный выше класс all или вообще его опустить, тогда запрет будет относиться ко всем пользователям. Если в качестве файла указан конкретный путь, то доступа не будет только к этому файлу. Если в параметре указано лишь его имя (например, passwd), то будет закрыт доступ ко всем файлам с таким названием в любой директории.

Рассмотрим пример, запрещающий доступ к любым файлам с именем passwd:

noretrieve relative passwd

Попробуйте добавить эту строку в свой конфигурационный файл. Теперь подключитесь к серверу с помощью FTP-клиента. Для тестирования из X Window я в графическом режиме Linux использовал программу gftp. Подключившись к серверу, я создал файл passwd в директории /home и попытался его скачать в каталог /home/flenov. В ответ на это FTP-клиент только создал пустой файл, но скачать ничего не смог, из-за установленного запрета программа завершилась аварийно. Такое окончание — это, конечно же, особенность gftp, а другой FTP-клиент должен правильно обработать ошибку и сохранить работоспособное состояние.

Если FTP-сервер находится на одном физическом сервере с Web-сервером, то вполне логичным будет запретить чтение файла .htaccess, в котором прописываются права доступа на директории для Web-сервера. Пользователи FTP не должны иметь права даже смотреть их. Лучше прописать разрешение только конкретным клиентам, чтобы каждый из них мог работать только со своими файлами .htaccess, или предоставить другой способ редактирования прав.

Работу с системными каталогами можно вообще отменить. Например, следующая строка запретит получение любого файла из директории /etc:

noretrieve /etc

После этого нельзя будет скачать ни один файл не только из директории /etc, но и из ее поддиректорий;

loginfails число — количество неудачных попыток входа на сервер, после которого в журнале будет создана соответствующая запись. В нашем примере стоит число 5. Если пользователь не смог войти на сервер 5 раз, то это уже говорит о попытке взломщиком подобрать пароль случайным образом или по словарю (атака brute force);

private параметр — возможность использовать команды wu-ftp-сервера SITE GROUP и SITE GPASS (в других FTP-серверах этих команд может и не быть) для смены группы (значение параметра yes). Если пользователь укажет верную группу и пароль, то он получит права группы из файла ftpgroups;

deny адрес файл — запрет доступа клиентов с указанного адреса. В случае попытки подключения выводится сообщение из текстового файла, указанного в качестве последнего параметра. Адрес может указываться в виде шаблона;

defumask mask — маска прав доступа, используемая при создании новых файлов. О команде umask для ОС Linux (задает текущее значение маски) мы говорили в разд. 4.1;

limit-time тип минуты — ограничение времени сессии. Например, вы хотите, чтобы определенные пользователи не засиживались на вашем FTP-сервере. Используя эту директиву, в качестве типа можно указать звездочку (*) для всех пользователей, real, anonymous или guest. Последний параметр — это количество минут сессии. По прошествии указанного времени соединение будет разорвано;

file-limit направление число класс — ограничение на число передаваемых файлов. В качестве направления можно указать in (входящие), out (исходящие) и total (всего). Чтобы запретить работу более чем с 10 файлами, воспользуйтесь командой file-limit total 10;

byte-limit направление число класс — ограничение на число передаваемых байт. Работа директивы схожа с file-limit;

anonymous-root каталог — задание в явном виде корневой директории для анонимных пользователей, т.к. у них не может быть собственного каталога в отличие от реального пользователя, для которого при подключении к системе корнем является его домашняя директория;

guest-root каталог — аналогична предыдущей команде. Директива необходима, если вы хотите, чтобы все гости могли работать с одной и той же директорией. Если у каждого гостя должен быть свой каталог, то лучше для каждого из них явно создавать учетную запись (см. разд. 10.6).

passwd-check тип сообщение — определяет проверку правильности пароля для анонимных пользователей. В данном случае имеется в виду контроль E-mail-адреса, который они используют. В качестве типа может указываться одно из трех значений: none (нет проверки), trivial (простая проверка на содержания в адресе символа "@)" или rfc882 (полная проверка, на соответствие стандарту rfc 822). Параметру сообщение можно присваивать значение warn (выводить предупреждение, но продолжать работу) или enforce (отказать в доступе);

deny-email адрес — отказ в доступе, если в качестве пароля используется указанный адрес. В большинстве FTP-клиентов в настройках прописан для анонимного доступа какой-либо почтовый ящик, например, [email protected]. Мало кто меняет этот адрес. Так как он соответствует всем правилам, то сервер не определит, что это обманка. Но можно прописать его в этом параметре, и тогда пользователю придется поменять в настройках FTP-клиента адрес на другой, иначе он не сможет подключиться. Но даже это не будет гарантировать, что анонимный пользователь указал именно свой E-mail в качестве пароля;

deny-uid идентификаторы — запрещает доступ к FTP пользователям с указанными идентификаторами. Те же самые функции выполняет файл ftpusers, который мы рассмотрим в разд. 10.5. Удобство этой команды в том, что можно задать диапазоны. Например, deny-uid %-500. Данная директива запретит доступ всем пользователям, у которых идентификатор менее 500;

deny-gid идентификаторы — запрещает доступ к FTP пользователям группы, с указанными идентификаторами. Те же самые функции выполняет файл ftpusers;

restricted_uid идентификаторы — разрешает гостевому пользователю с указанным ID получать доступ к директориям вне его домашнего каталога;

restricted_gid идентификаторы — дает право группе пользователей с указанным ID получать доступ к директориям вне домашнего каталога;

unrestricted_uid идентификаторы — запрещает гостевому пользователю с указанным ID получать доступ к директориям вне его домашнего каталога;

unrestricted_gid идентификаторы — запрещает группе пользователей с указанным ID получать доступ к директориям вне домашнего каталога;

dns refuse_no_reverse файл override — выдать сообщение, если клиент не имеет обратного адреса. При отсутствии параметра override соединение будет завершено;

dns refuse_mismatch файл override — выдать сообщение, если прямой и обратный адреса не совпадают. Если не указать параметр override, то соединение будет завершено. По умолчанию я всегда включаю эту опцию, а отключаю, только если у действительных пользователей возникают проблемы при работе с сервером. Это необходимо для того, чтобы взломщик не мог подделать IP-адрес для входа в систему и обхода соответствующей проверки.

Оглавление книги


Генерация: 0.059. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз