Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Linux Network Administrators Guide
Назад Глава 16. Управление Taylor UUCP Вперед

Настройка системы для приема входящих звонков (Dial In)

Если Вы хотите настроить систему для вызова извне, Вы должны разрешить вход в систему по последовательному порту и настроить некоторые системные файлы, чтобы обеспечить логины UUCP. Это будет обсуждаться в следующем разделе.

Предоставление UUCP-доступа

Вы должны установить имена пользователей, которые разрешают удаленной системе регистрацию в Вашей системе и устанавливают соединение UUCP. Вообще, необходимо дать отдельное имя каждой системе, которая взаимодействует с Вами. При установке имени для системы pablo, Вы (например) можете дать ей имя Upablo, как имя пользователя.

Для систем, которые подключаются через последовательный порт, Вы должны добавить эти имена в файл паролей системы, /etc/passwd . Хорошим вкусом считается поместить все имена UUCP в специальную группу типа uuguest. Домашний каталог такого пользователя должен находиться в общем каталоге /var/spool/uucppublic, оболочка входа в систему uucico.

Для обслуживания систем UUCP, которые связываются с Вашим сайтом через TCP, нужно настроить на их обработку inetd. Он должен быть нацелен на порт uucp добавлением следующей строки к файлу /etc/inetd.conf:
uucp   stream   tcp   nowait  root  /usr/sbin/tcpd  /usr/lib/uucp/uucico -l
С опцией Опция –l uucico выполняет собственную проверку на вход в систему. Она запросит имя и пароль также, как и стандартная программа login, но положится на собственный файл паролей вместо /etc/passwd . Этот файл паролей называется /etc/uucp/passwd и содержит пары имен входа в систему и паролей:
Upablo  IslaNegra
Ulorca  co'rdoba

Конечно, этот файл должен принадлежать пользователю uucp и иметь права доступа 600.

Если эта база данных так хороша, почему бы не использовать ее на нормальных последовательных входах в систему? Хорошо, в некоторых случаях Вы можете это устроить. Сначала Вам понадобится getty, которой Вы можете сообщить вызвать uucico вместо обычного /bin/login для Ваших UUCP-пользователей. Вызов uucico выглядит так:
/usr/lib/uucp/uucico -l -u user
Опция -u предписывает использовать переданное имя пользователя, а не запрашивать его.

Для защиты пользователей UUCP от тех, кто мог бы давать неправильное имя системы и обрушить их почту, Вы должны добавить команду called-login для каждой системной записи в файле sys. Это описано ниже.

Защита от перехватчиков почты

Одна из самых больших проблем UUCP в том, что вызывающая система может назвать не свое имя; она объявляет имя вызываемой системе после фактического входа, но сервер не может проверить этого. Таким образом, нападающий может войти под своим именем UUCP, симулировать, что был кем-то еще, и прочитать чужую почту. Это особенно опасно, если Вы предлагаете вход в систему через анонимный UUCP, чей пароль общеизвестен.

Вы должны принять меры против самозванцев! Для этого необходимо потребовать, чтобы каждая система использовала имя входа в Вашу систему, заданное called-login в sys. Например:
system          pablo
... usual options ...
called-login    Upablo

В результате этого всякий раз, когда система говорит, что она pablo, uucico проверит, регистрировалась ли она как Upablo. Если нет, вызов будет отвергнут, а соединение разорвано. Вы должны сделать привычкой добавлять команду called-login к каждой записи системы, которую Вы добавляете к Вашему файлу sys . Важно, что Вы делаете это для всех систем, независимо от того, будут ли они когда-либо вызывать Вас или нет. Для тех машин, которые никогда не вызывают Вас, Вы, возможно, должны установить called-login на некоторое полностью поддельное имя пользователя, типа neverlogsin , дабы никто точно не мог зайти.

.

Будьте бдительны: проверки последовательности обращения

Другой способ отражать и обнаружить самозванцев состоит в том, чтобы использовать проверки последовательности обращения. Проверки последовательности помогают Вам защититься от злоумышленников, которые сумели выяснить пароль, с которым Вы регистрируетесь в Вашей системе UUCP.

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

Но проверки последовательности обращения делают для Вас еще больше: даже если некоторый очень умный человек обнаружит Ваш порядковый номер обращения также, как Ваш пароль, Вы заметите это. Когда нападавший вызывает Вашу передачу UUCP и захватывает почту, это увеличит порядковый номер обращения на один. Когда в следующий раз Вы вызываете Вашу передачу и пробуете регистрироваться, удаленный uucico откажется от Вас, потому что числа не соответствуют!

Если Вы включили проверки последовательности обращения, Вы должны регулярно проверять Ваши регистрационные файлы на сообщения об ошибках, которые намекают на возможные причины. Если Ваша система отклоняет порядковый номер обращения, который вызывающая система предлагает, uucico поместит в регистрационный файл сообщение, говорящее что-нибудь вроде "Out of sequence call rejected". Если Ваша система не допущена, потому что порядковые номера находятся вне синхронизации, в регистрационном файле будет примерно следующее "Handshake failed (RBADSEQ)".

Чтобы включить проверку последовательности обращения, Вы должны добавить следующую команду к записи системы:
# enable call sequence checks
sequence        true
Еще Вы должны создать файл, содержащий порядковый номер. Taylor UUCP хранит порядковый номер в файле .Sequence в каталоге spool удаленной системы. Он должен принадлежать uucp и иметь режим доступа 600 (то есть, чтение и запись разрешены только самому uucp). Самое лучшее инициализировать этот файл произвольным согласованным начальным значением. Иначе нападающий может подобрать номер, пробуя все значения меньше, скажем, 60. Простой пример создания файла:
# cd /var/spool/uucp/pablo
# echo 94316 > .Sequence
# chmod 600 .Sequence
# chown uucp.uucp .Sequence

Конечно, удаленная система должна дать возможность проверки последовательности обращения и использовать то же самое начальное значение, что и Вы.

Анонимный UUCP

Если Вы хотите обеспечивать анонимный UUCP-доступ к системе, Вы сначала должны саздать специальное имя для него (см. выше). Общей практикой является дать ему имя входа в систему и пароль uucp.

Кроме того, Вы должны установить несколько опций защиты для неизвестных систем. Например, Вы можете запретить им выполнение любых команд на Вашей системе. Однако, Вы не можете задать эти параметры в файле sys, потому что команда требует имени system, которое Вы не знаете. Taylor UUCP решает эту проблему через команду unknown. Команда unknown может использоваться в файле config, чтобы определить любую команду, которая может обычно появляться в записи системы:
unknown         remote-receive /incoming
unknown         remote-send /pub
unknown         max-remote-debug none
unknown         command-path /usr/lib/uucp/anon-bin
unknown         commands rmail

Это ограничит неизвестные системы скачиванием файлов из подкаталогов pub и закачиванием файлов в каталог incoming ниже /var/spool/uucppublic. Следующая строка говорит uucico игнорировать любые запросы из удаленной системы, чтобы включить отладку локально. Последние две строки разрешают неизвестным системам выполнять rmail, но путь команды разрешает uucico искать команду rmail в частном каталоге, с именем anon-bin. Это позволяет Вам обеспечить некоторый специальный rmail, который, например, может передавать всю почту суперпользователю для исследования. Это разрешает анонимным пользователям писать администратору системы, но в то же время предотвращает отправление любой почты в другие места.

Чтобы включить анонимный UUCP, Вы должны определить по крайней мере один параметр unknown в файле config. Иначе uucico отклонит неизвестные системы.