Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/article.php on line 21

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 218

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 192

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 169
Ограничение доступа пользователей - Сайт Дениса Колисниченко
 

Ограничение доступа пользователей


Денис Колисниченко

В статье рассматривается ограничение доступа с помощью демона tcpd, таблиц доступа пользователей, программы sendmail, а также с помощью сервера ProFTPD. Естественно, существуют многие способы ограничения доступа. Практически у каждой службы есть директивы, запрещающие или разрешающие отдельным пользователям доступ к ней. Например, можно ограничить доступ к серверу Apache или прокси-серверу Squid, а также задать время работы сервиса с помощью суперсервера xinetd, но рассмотрение всего этого выходит за рамки данной статьи.

Ограничение доступа к узлу

Демон tcpd аутентифицирует удаленных пользователей и проверяет корректность их запросов. С помощью этого демона можно ограничить запросы с удаленных компьютеров. Файл hosts.allow содержит список хостов, которым разрешено подключаться к вашей системе, а hosts.deny - запрещено. Записи имеют формат

служба:хост.домен
Если вы хотите разрешить или запретить доступ всем, используйте модификатор ALL. Запись ALL:ALL открывает или закрывает доступ к вашей машине всем компьютерам для всех видов сервисов (см. листинг 1).

Листинг 1. Файл /etc/hosts.allow

http:ALL
ftp:ALL
ALL:main.dhsilabs.com

В листинге 1 доступ к http и ftp разрешен всем, доступ ко ВСЕМ сервисам разрешен только компьютеру main.dhsilabs.com.

Обычно настройку доступа рекомендуется проводить следующим образом. Сначала запрещается доступ всем узлам, а потом разрешается отдельным узлам (или подсетям) по мере необходимости.

Ограничения пересылки почты

Для ограничения пересылки почты через ваш сервер используется файл /etc/mail/access (точнее access.db, в который преобразуется файл access). Данный файл используется программой sendmail. В нем вы можете указать узлы, которым разрешено (запрещено) использовать ваш сервер SMTP. Формат этого файла такой:

узел | сеть | пользователь действие
Например:
localhost.localdomain	RELAY
localhost		RELAY
127.0.0.1		OK
spammer@spamworld.com   REJECT
spamworld.com           ERROR:"550 Access denied"
192.168.1		RELAY
host.mydomain.ru	REJECT
mydomain.ru		RELAY

В первой-третьей строках мы разрешаем самим себе использовать SMTP сервер. Затем мы запрещаем пересылку почты пользователю spammer@spamworld.com, а также всему домену spamworld.com. Шестая строка разрешает пересылку почты всей нашей локальной подсети - 192.168.1.*. Последняя строка разрешает использовать сервер SMTP нашему домену, а предпоследняя запрещает использовать наш сервер одному узлу из домена mydomain.ru - host.

Разница между действием OK и RELAY заключается в том, что в первом случае (ОК) пересылка разрешается, даже если другие правила sendmail запретили пересылку почты, например, имя узла не разрешено (при использовании DNS).

Для запрещения пересылки можно просто использовать REJECT. Тогда пользователь увидит сообщение Access denied. Действие ERROR более информативно, так как вы можете указать любое свое сообщение (установить реакцию на ошибку). Действие ERROR можно записать по-другому: ERROR:D.S.N:Message, где D.S.N - это код ошибки в соответствии с RFC 1893.

Для того чтобы новые правила доступа вступили в силу, введите команду:

makemap hash /etc/mail/access < /etc/mail/access

Р