Linux-сервер своими руками — страница 51 из 119

server.com nameserver = comp2.server.com 

server.com nameserver = comp3.server.com 

comp1.server.com internet address = 323.111.200.1 

comp2.server.com internet address = 323.111.200.2 

comp3.server.com internet address = 323.555.200.3

Теперь получим сведения о зоне и почтовиках.

>server comp1.server.com

Default Server: comp1.server.com

Address: 323.111.200.1

>server.com.

Server: comp1.server.com

Address: 323.111.200.1

server.com internet address = 123.111.200.2

server.com nameserver = comp1.server.com

server.com nameserver = comp2.server.com

server.com nameserver = comp3.server.com

server.com

origin = comp2.server.com

mail addr = root.server.com

serial = 19

refresh = 10800 (3 hours)

retry = 7200 (2 hours)

expire = 86400 (1 day)

minimum ttl = 3600 (1 hour)

server.com preference = 10, mail exchanger = mail.server.com

comp1.server.com internet address = 323.111.200.1

comp2.server.com internet address = 323.111.200.1

comp3.server.com internet address = 323.111.200.3

mail.server.com internet address = 323.111.200.17

А сейчас посмотрим информацию о других узлах в этой сети:

ls server.com. 

[comp2.server.com] 

server.com. 323.111.200.2 

server.com. server = comp1.server.com 

server.com. server = comp2.server.com 

server.com. server = comp3.server.com 

mail 323.111.200.17 

gold 323.111.200.22 

www.ie 323.111.200.11

jersild 323.111.200.25 

comp1 323.111.200.1 

comp3 323.111.200.3 

parasit3 323.111.200.20 

www.press 323.111.200.30 

comp1 323.111.200.1 

www 323.111.200.2

Теперь вам понятно, почему не нужно вообще использовать запись HINFO? Если при реальной атаке злоумышленник выяснит, какая операционная система используется на компьютерах в вашей сети, ему будет проще нанести удар. Я не отрицаю, существует много способов выяснить тип ОС, но зачем же сообщать это самому?

Примечание. В записи HINFO обычно указывается информация об аппаратном обеспечении, платформе компьютера и его операционной системе.

Несколько замечаний:

1. IP-адреса использовались учебные.

2. Не всегда все так просто: иногда настройки сервера DNS и firewall не разрешат вам просмотреть некоторую информацию о зоне, например ту, которую мы получали с помощью команды Is server.com.

Разрешить передачу зоны (трансфер зоны) определенным узлам, а значит, запретить всем остальным, вы можете с помощью директивы allow-transfer. В следующем примере трансфер зоны разрешен узлам 10.1.1.1 и 10.1.2.1. Другими словами, на узлах 10.1.1.1 и 10.1.2.1 можно будет использовать команду nslookup ls для просмотра зоны.

allow-transfer

{

 10.1.1.1;

 10.1.2.1;

};

11Настройка FTP

Сервер FTP (File Transfer Protocol) используется для обмена файлами между системами. Обычно на FTP-сервере размещают большое количество файлов, например, какой-нибудь программный комплекс или набор музыкальных файлов. Примером FTP-сервера может послужить сервер ftp://ftp.redhat.com. На этом сервере вы можете найти как саму операционную систему Linux Red Hat, так и обновления ее пакетов, а также дополнительные программы.

Доступ к серверу FTP осуществляется с помощью FTP-клиента. В любой сетевой операционной системе есть простейший FTP-клиент — программа ftp (см. п. 19.3). Обычно для того, чтобы начать работу с FTP-сервером, вы должны зарегистрироваться на нем, другими словами, ввести имя пользователя и пароль. После регистрации вы получаете доступ к своему каталогу. Над файлами и каталогами вы можете производить обычные операции: создание, удаление, копирование, перемещение, переименование. Как правило, при выполнении операции копирования вы либо копируете файлы на сервер (команда put) — загружаете на сервер, либо копируете файлы с сервера на свою локальную машину (команда get) — скачиваете с сервера.

Существуют также так называемые общедоступные (анонимные) серверы, к которым имеют доступ все пользователи. На таких серверах размещается свободно распространяемое программное обеспечение, обновление программ, драйверы, документация и прочая публичная информация. Для регистрации на таких серверах обычно нужно использовать имя пользователя anonymous, а в качестве пароля — адрес электронной почты. Создание анонимного сервера рассмотрено в пункте 11.3.

В главе 19.3 рассмотрены все команды клиента FTP. Сейчас же просто рассмотрим регистрацию пользователя на сервере и что при этом происходит. Допустим, имеется некий FTP-сервер, к которому могут подключаться не только обычные пользователи, но и анонимные (см. рис. 11.1).

Рис. 11.1. FTP-клиент в окне терминала


Перед самой регистрацией сначала FTP-клиент сообщит, что соединение с сервером FTP установлено, а затем вас поприветствует сам сервер — сообщение 220: ProFTPD 1.2.0 Server. Далее, в ответ на приглашение Name введите имя пользователя (пусть будет den). Так как пользователь не является анонимным, сервер сообщит вам, что нужно ввести пароль для этого пользователя. Правильно введя пароль, вы успешно зарегистрируетесь на сервере, о чем вам сообщит сервер — сообщение 230. Также сервер вам сообщит, что удаленной системой является UNIX и что сейчас используется двоичный (binary) режим передачи файлов. Я не рекомендую изменять этот режим на текстовый, потому что при передаче нетекстовой информации, например, пакетов RPM, двоичные файлы будут повреждены.

11.1. Сервер FTP wu-ftpd

Сервер FTP wu-ftpd является разработкой Вашингтонского университета. Этот сервер очень распространен и входит в состав практически каждого дистрибутива Linux. Для его установки нужно установить пакет wu-ftpd. Как и любой другой сервер, wu-fptd может быть постоянно загруженным в память или вызываться суперсервером inetd по мере необходимости. Первый режим называется standalone и применяется, как правило, если FTP-серверу нужно часто обрабатывать запросы клиентов. Второй режим используется в целях экономии памяти и если нагрузка на FTP-сервер не очень велика.

Если вы решите настроить работу сервера FTP во втором режиме, в файле inetd.conf должна быть соответствующая запись (см. листинг 11.1)

Листинг 11.1. Фрагмент файла inetd.conf

ftp stream top nowait root/usr/sbin/tcpd in.ftpd -l -a

Из листинга 11.1 видно, что FTP-сервер вызывается не напрямую, а через демон tcpd, чем обеспечивается дополнительная безопасность. В том случае, если вы используете новую версию inetd — xinetd, формат записи у вас будет другой (см. листинг 11.2).

Листинг 11.2. Фрагмент файла xinetd.conf

service ftp

{

 socket_type = stream

 wait = no

 user = root

 server = /usr/etc/in.ftpd

 server_args = -l

 instances = 4

 log_on_success += DURATION USERID

 log_on_fallure += USERID

 access_times = 2:00-8:59 12:00-23:59

 nice = 10

}

Опция -l сервера FTP регистрирует все сеансы FTP в файле syslog.

Кроме этой опции, сервер ftp имеет ряд других опций, указанных в табл. 11.1.

Опции командной строки сервера wu-ftpd Таблица 11.1

Опция Описание
-d Записывает отладочную информацию в журнал syslog
–lРегистрирует все FTP-сеансы в журнале syslog
-L Регистрирует в журнале syslog все команды, отправленные серверу FTP
-t секунды Устанавливает предел времени ожидания для пассивных клиентов (по умолчанию 15 минут). Если за этот промежуток времени от клиента не поступит ни одной команды, то FTP-сеанс с сервером будет разорван
-Т секунды Максимально допустимое время сеанса FTP (по умолчанию 2 часа)
Разрешает использование файла конфигурации ftpaccess
Запрещает использование файла конфигурации ftpaccess. Эта опция установлена по умолчанию
-i Регистрирует в журнале xferlog файлы, полученные сервером FTP
Регистрирует в журнале xferlog файлы, переданные сервером во время сеанса

Сервер wu-ftp использует пять файлов конфигурации: ftpaccess, ftphosts, ftpusers, ftpgroups, ftpconversions. В этой главе мы подробно рассмотрим каждый из них.

11.1.1. Файл ftpaccess

Основным файлом конфигурации является ftpaccess. Как и другие файлы конфигурации, он располагается в каталоге /etc. Пример файла /etc/ftpaccess приведен в листинге 11.3.

Листинг 11.3. Пример файла ftpaccess

class all real,guest,anonymous *

email rootdlocalhost loginfails 3

readme README* login 

readme README* cwd=*

message /welcome.msg login

message .message cwd=*

compress yes all

tar yes all

chmod no guest,anonymous

delete no guest,anonymous

overwrite no guest, anonymous

rename no guest, anonymous

log transfers anonymous,real inbound,outbound 

shutdown /etc/shutmsg 

passwd-check rfc822 warn

Файл ftpaccess определяет возможности доступа к FTP-серверу, которые будут иметь различные группы пользователей. В этом файле задаются параметры доступа, разрешенные операции, виды регистрируемых событий.

Директива class определяет класс пользователей, которые будут иметь доступ к серверу FTP. В листинге 11.3 задан класс all, который состоит из следующих типов пользователей: настоящие (real), гости (guest), анонимные (anonymous). Под настоящими пользователями подразумеваются те, которые зарегистрированы на сервере, то есть их учетные записи хранятся в файле /etc/passwd.

С помощью директивы email можно указать адрес администратора сервера.

Директива loginfails задает максимальное количество попыток регистрации. Если это количество превышено, пользователь автоматически будет отключен. Значение по умолчанию для этой директивы равно 5.

Директива message определяет файл и событие, когда он должен быть отображен. Например, можно создать несколько файлов, один из которых будет отображаться при регистрации пользователя, а другой — при входе его в определенный каталог.

Директивы chmod и delete определяют, могут ли пользователи использовать одноименные команды FTP. А директивы overwrite или delete разрешают или запрещают определенным пользователям перезаписывать или удалять файлы на сервере. В приведенном примере (см. листинг 11.3) пользователи классов guest и anonymous не могут выполнять ни одну из упомянутых операций. Общие директивы сервера wu-ftpd перечислены в табл. 11.2.

Директивы сервера wu-ftpd Таблица 11.2

Директива Описание
autogroup имя_группы имя_класса […] Разрешает доступ анонимным пользователям определенных классов к файлам, которые принадлежат к указанной группе
alias псевдоним каталог Создает псевдоним для каталога на FTP-сервере. Псевдоним позволяет быстро (указав только псевдоним) перейти в соответствующий ему каталог из любого другого каталога на сервере
anonymous-root каталог [имя_класса] Указывает каталог, который будет использоваться в качестве корневого для заданного класса пользователей. После успешной регистрации пользователя на FTP-сервере он автоматически попадет в соответствующий его классу каталог. Если имя класса не указано, то данная директива будет задавать корневой каталог для анонимных пользователей, для которых корневой каталог не определен явно
banner файл Перед регистрацией клиента ему будет показано сообщение из указанного файла. В качестве параметра файла задается полное (абсолютное) имя файла
bit-limit [raw] in|out|total макс_кол_байт [имя_класса] Устанавливает ограничение на количество пересылаемой информации в байтах для пользователей указанного класса. Если имя класса не указать, то данное ограничение будет применяться ко всем пользователям, для которых нет явных указаний по этому поводу. Необязательный параметр raw позволяет ограничить весь объем пересылаемой информации (в том числе и служебной), а не только пересылаемых файлов. Значения in, out, total указывают поток данных (на сервер, от сервера или и тот, и другой одновременно), подлежащий учету
class имя_класса типы_пользователей адреса_хостов Создает класс пользователей с указанным именем. В качестве типа пользователей используются ключевые слова anonymous (анонимные пользователи), guest (гостевые пользователи) и real (зарегистрированные пользователи). Если указывается несколько типов, то они перечисляются через запятую без пробелов. В поле адреса_хостов указываются адреса хостов, только пользователи которых будут принадлежать данному классу. Символ звездочка «*» означает все хосты (см. листинг 11.3). Адреса хостов могут указываться в виде одного из следующих форматов: IP-адрес — отдельный IP-адрес. IP-адрес: маска_сети — IP-адрес с маской сети. IP-адрес/cidr — IP-адрес с информацией CIDR. !nameserved — указание этого идентификатора приводит к запрету доступа со всех хостов, имена которых не удается получить от DNS-сервера. /имя_файла — Указывается абсолютное имя текстового файла, в котором содержится список IP-адресов (по одному в каждой строке)
cdpath каталог Определяет для директивы cdpath выражение, с помощью которого задается путь поиска при переходе в указанный каталог
compress yes|no имя_класса Разрешает или запрещает сжатие данных перед отправкой (команда compress) для указанного класса пользователей
defaultserver private Запрещает анонимный доступ к серверу
deny адреса_хостов файл_сообщения Запрещает доступ к серверу для хостов с указанными адресами. При этом будет отображено сообщение из файла_сообщения. При указании файла необходимо использовать полное (абсолютное) имя. Адреса хостов могут указываться в виде одного из следующих форматов: IP-адрес — отдельный IP-адрес. IP-адрес: маска_сети — IP-адрес с маской сети. IP-aflpec/cidr — IP-адрес с информацией CIDR. !nameserved — указание этого идентификатора приводит к запрету доступа со всех хостов, имена которых не удается получить от DNS-сервера. /имя_файла — указывается абсолютное имя текстового файла, в котором содержится список IP-адресов (по одному в каждой строке)
email адрес почты Почтовый адрес администратора сервера
file-limit [raw] in|out|total количество_файлов [имя_класса] Устанавливает ограничение на количество пересылаемых файлов для пользователей указанного класса. Параметр количество_файлов как раз и задает максимально допустимое количество файлов. Значение остальных параметров такое же как и для директивы bit-limit
guestgroup имя_группы [имя_группы…] Всем пользователям, входящим в группу с указанным именем, будет разрешен гостевой доступ к серверу FTP
limit имя_класса максимум периоды файл_сообщения Ограничивает число одновременно работающих пользователей, принадлежащих указанному классу, в определенное время суток. Параметр максимум задает максимально допустимое количество одновременно работающих пользователей. Параметр периоды задает временные интервалы. Клиенту, которому запрещается доступ к FTP-серверу в результате действия данной директивы, будет показано сообщение из файла файл_сообщения
loginfails количество Определяет максимальное число неудачных попыток регистрации пользователя, после которых он будет отключен. По умолчанию количество попыток равно 5
log commands типы_пользователей Регистрирует в журнале команды, которые вводились пользователями указанных типов. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)
log transfers тип_пользователей список_направлений Регистрирует в журнале акты передачи файлов пользователями указанных типов. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class). В поле список_направлений задается направление передачи, подлежащее протоколированию: inbound (входящие файлы), outbound (исходящие). Если указываются оба направления, то они должны быть разделены запятой без пробела (см. листинг 11.3)
message файл_сообщения действие Отображает файл_сообщения во время регистрации или при переходе в другой каталог. Соответственно значение в поле действие может быть либо LOGIN (регистрация) или CWD=каталог (переход в каталог). Запись cwd=* задает любой каталог (см. листинг 11.3)
noretrieve [class=имя_класса] список_файлов Запрещает получение указанных в списке файлов. Если указан параметр class, то этот запрет распространяется только на пользователей заданного класса
readme файл действие Во время регистрации или при смене каталога пользователь получит сообщение о существовании и времени модификации указанного файла. Параметр действие определяется так же, как и в директиве message
tar yes|no имя_класса Разрешает или запрещает использование команды tar для указанного класса пользователей, то есть разрешает или запрещает архивирование файлов архиватором tar перед их пересылкой
virtual адресРазрешает использование виртуального FTP-узла

Кроме общих директив, сервер wu-ftp имеет директивы, которые управляют правами доступа. Директивы прав доступа определяют, какие операции могут выполнять пользователи того или иного типа. Эти директивы указаны в табл. 11.3.

Директивы прав доступа Таблица 11.3

Директива Описание
chmod yes|no типы_пользователей Разрешает или запрещает выполнять команду chmod для пользователей указанных типов. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)
delete yes|no типы_пользователей Разрешает или запрещает выполнять команду delete для пользователей указанных типов. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)
overwrite yes|no типы_пользователей Разрешает или запрещает пользователям указанных типов перезаписывать файлы на сервере. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)
rename yes|no типы_пользователей Разрешает или запрещает пользователям указанных типов переименовывать файлы на сервере. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)
password-check rfc822|trivial|none enforce|warn Задает уровень проверки пароля. При этом в качестве первого параметра указывается метод проверки пароля: none — отключает проверку паролей; trivial — все пароли должны обязательно содержать символ '@'; rfs822 — в качестве паролей должны указываться адреса электронной почты, задаваемые согласно стандарту RFC822 (рекомендую использовать именно это значение). Вторым параметром задается действие, которое должно производиться в тех случаях, когда пользователь введет неправильный пароль. Значение warm говорит о том, что пользователь просто будет проинформирован об ошибке в пароле и далее ему будет позволено заново зарегистрироваться на FTP-сервере. Если указать значение enforce, то пользователю будет выдано сообщение о неправильном пароле и ему в дальнейшем будет запрещен доступ к серверу
upload yes|no типы_пользователейРазрешает или запрещает выгрузку файлов на сервер пользователям указанных типов. В качестве типов пользователей указываются ключевые слова anonymous, guest, real (см. описание опции class)

11.1.2. Файл ftphosts

Файл ftphosts используется для разрешения или запрещения доступа определенных пользователей с указанных узлов. Например, вы можете разрешить доступ пользователю admin только с компьютера admm.domain.ru и запретить со всех остальных. А для других пользователей разрешить доступ со всех компьютеров. Таким образом, в файле могут быть записи двух видов: разрешающие и запрещающие. Формат записей в файле ftphosts следующий:

allow|deny user hosts [host…]

Разрешающая запись allow разрешает пользователю регистрироваться с хостов, указанных в списке hosts, но запрещает регистрацию со всех остальных. Запись deny, наоборот, запрещает доступ с определенных хостов, но разрешает со всех остальных. В листинге 11.4 приведен пример файла ftphosts.

Листинг 11.4. Пример файла ftphosts

allow admin 192.168.1.1

deny user 192.168.1.2 192.168.1.3

В приведенном примере пользователь admin может регистрироваться на сервере только с компьютера с IP-адресом 192.168.1.1. Если этот пользователь попробует зарегистрироваться с другого компьютера, то ему будет отказано в доступе. Пользователю user запрещено регистрироваться с компьютеров 192.168.1.2 и 192.168.1.3, но он может зарегистрироваться с любого другого компьютера сети.

11.1.3. Файл ftpusers

Файл ftpusers содержит список пользователей, которым запрещено использовать команду ftp. Эти пользователи не могут зарегистрироваться на сервере. При попытке регистрации будет выведено сообщение об ошибке Login Incorrect, даже если пользователь ввел правильный пароль. Из соображений безопасности этот файл должен содержать хотя бы имена пользователей root, bin, news, uucp. Пустые строки, а также строки, начинающиеся с символа #, игнорируются. Полностью корректный с точки зрения безопасности файл представлен в листинге 11.5.

Листинг 11.5. Файл ftpusers

root

bin

daemon

adm

IP

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

11.1.4. Файл ftpgroups

Файл ftpgroups содержит специальные пароли, с помощью которых пользователи FTP будут рассматриваться как пользователи определенной группы. Такое разрешение получит пользователь, для которого запись в файле ftpgroups содержит выражение yes. Более подробную информацию об этом файле вы можете получить в справочной системе, введя команду man ftpgroups.

11.1.5. Файл ftpconversions

В файле ftpconversions заданы операции сжатия, разрешенные пользователям для выполнения во время сеанса FTP. Стандартный файл ftpconversions представлен в листинге 11.6.

Листинг 11.6. Файл ftpconversions

:.Z: : :/bin/compress –d –с %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS

: : :.Z:/bin/compress. –c %s:T_REG:0_COMPRESS:COMPRESS

:.gz: : :/bin/gzip –cd %s:T_REG|T_ASCII:0_UNCOMPRESSrGUNZIP

: :.gz:/bin/gzip –9 –c %s:T_REG:0_COMPRESS:GZIP

: :. tar  :/bin/tar –c –f – %s:T_REG|T_DIR:O_TAR:TAR

: :.tar.Z :/bin/tar –c –Z –f –%s:T_REG|T_DIR:0_COMPRESS|0_TAR:TAR+COMPRESS

: :.tar.gz:/bin/tar –c –z –f –%s:T_REG|T_DIR:0_COMPRESS|0_TAR:TAR+GZIP

Каждая запись этого файла состоит из восьми полей. Поля разделяются с помощью символа двоеточия. Эти поля содержат префиксы и постфиксы удаления и добавления, внешнюю команду, тип операции и описание. Например, сжатый программой gzip файл должен иметь имя с суффиксом gz. Чтобы к имени файла был добавлен суффикс gz, запись в файле ftpconversions должна иметь постфикс gz. Я специально не использую здесь термин «расширение», так как он отсутствует в терминологии UNIX, потому что файлы в ОС Linux не имеют расширения.

11.1.6. Файл xferlog

Файл xferlog является журналом сервера FTP, в который записываются все транзакции, которые были произведены в результате работы пользователей. С помощью опций -о и –i сервера FTP можно выбрать тип транзакций, записываемых в журнал (см. табл. 11.1).

Примечание. Транзакция — это обработка запроса, то есть прием порции данных от пользователя, ее обработка и выдача результата пользователю. В базах данных и файловых системах — это выполнение элементарной целостной операции над данными, например, удаление записи.

Рассмотрим листинг 11.7, в котором представлен фрагмент файла xferlog.

Листинг 11.7. Фрагмент файла xferlog

Wed Jan 9 11:49:35 2002 1 localhost.localdomain 1490 /home/den/vmware.html a _ o r den ftp 0 * с

Wed Jan 9 11:50:08 2002 1 localhost.localdomain 281 /home/den/w.out a _ o r den ftp 0 * с

Wed Jan 9 11:50:15 2002 1 localhost.localdomain 281 /home/den/w.out a _ i r den ftp 0 * c-

Wed Jan 9 11:52:08 2002 1 localhost.localdomain 888 /home/den/ftphosts.html b _ i r den ftp 0 * с

Теперь проанализируем записи. Из первой записи вы можете узнать, что пользователь den был зарегистрирован с удаленного узла localhost.localdomain. Начало передачи файла /home/den/vmware.html произошло в среду, 9 января 2002 года в 11:49. Общее время передачи — одна секунда. Общий объем переданной информации составляет 1490 байт. Для передачи файла использовался режим ASCII (а), не было произведено никаких специальных операций (_). Файл vmware.html пользователь загружал с сервера, на что указывает направление передачи (о). Пользователь den является реальным (зарегистрированным) пользователем системы (r). Название службы, которая производила операцию — ftp.

Теперь рассмотрим четвертую запись. Тот же пользователь den передал на сервер файл ftphosts.html. Направление передачи — на сервер (i). Режим передачи — двоичный (b). Вторая и третья записи сообщают о загрузке с сервера и на сервер файла w.out в текстовом (а) режиме.

Тип пользователя обозначается символом возле имени пользователя. Символ r обозначает зарегистрированного в системе пользователя, у которого есть своя запись в файле /etc/passwd. Символ g означает гостевую регистрацию, а символ а — анонимную.

Направление передачи, как вы уже догадались, обозначается символами о — прием файла пользователем и i — прием файла сервером. Остается только отметить, что файл xferlog используется обоими серверами FTP — wu-ftpd и  ProFTPD.

11.2.СерверProFTP