С помощью файлов hosts.{deny,allow} можно закрывать и открывать нужным хостам/подсетям доступ к сервису. Обычно это делают с помощью iptables. Но с помощью этих файлов можно произвести какие-то дополнительные действия. Например можно записать лог файл, отправить письмо, сообщить клиенту почему ему запрещен доступ к хосту. И такое можно применить к любому сервису. Если же использовать эти файлы как firewall, то это плохая идея. Iptables справится с этим лучше.
Простой пример как запретить доступ ко всем сервисам:
Если надо открыть доступ только для ssh (для всех):
Или если надо открыть доступ к ssh только для подсети:
Или только для хоста:
Как видно синтаксис прост:
Теперь давайте сообщать пользователю почему ему запрещен доступ к сервису.
Простой пример как запретить доступ ко всем сервисам:
file hosts.deny ALL : ALL file hosts.allow <must be empty>
Если надо открыть доступ только для ssh (для всех):
file hosts.allow sshd : ALL
Или если надо открыть доступ к ssh только для подсети:
file hosts.allow sshd : 192.168.1.
Или только для хоста:
file hosts.allow sshd : 192.168.1.41Т.е. в начале читается файл hosts.allow, если есть совпадение правил поиск прекращается, доступ разрешается. Если совпадений нет, поиск производится уже в hosts.deny.
Как видно синтаксис прост:
daemon_list : client_list : option : option ... daemon_list - список сервисов через пробел client_list - список клиентов через пробел option - ALLOW, DENY, spawn, twist, severityВот spawn, twist уже куда интересней. Хотя severity тож интересно. Итак надо писать лог-файл когда кто-то заходит по ssh. Напишем скрипт который будет писать лог-файл:
file /root/test #!/bin/bash echo `date`" $1" >> /root/log file hosts.deny ALL : ALL file hosts.allow sshd : 192.168.1.41 : spawn (/root/test "%d(%p) client_ip=%a usename=%u access=allow")В результате получим файл /root/log:
Thu Jan 3 02:55:43 MSK 2013 sshd(2448) client_ip=192.168.1.41 usename=unknown access=allowДа, да sshd сам пишет лог. Но это, так сказать, для себя, просто понятней. Это простой пример как можно использовать свой скрипт. При помощи этого инструмента можно поменять PATH для пользователя. Или отправить письмо или еще какие действия в системе сотворить. В общем применение широкое.
Теперь давайте сообщать пользователю почему ему запрещен доступ к сервису.
file /root/test #!/bin/bash echo `date`" $1" >> /root/log file hosts.deny ALL : ALL spawn (/root/test "%d(%p) client_ip=%a usename=%u access=deny") : twist /bin/echo "You are not welcome to use %d from %h." file hosts.allow sshd : ALL EXCEPT 192.168.1.41Смысл такой - разшеить всем доступ к сервису, запретить только для хоста 192.168.1.41. Чтоб увидеть сообщение надо запустить ssh с ключом -v:
debug1: ssh_exchange_identification: You are not welcome to use sshd from 192.168.1.41.А в лог-файле будет:
Thu Jan 3 03:14:50 MSK 2013 sshd(2494) client_ip=192.168.1.41 usename=unknown access=denyВ общем широкое применение. Дополнительно надо читать:
man 5 hosts_options man 5 hosts_access man tcpd
Best 20 Casinos in MI (2021) - Mapyro
ОтветитьУдалитьList of 화성 출장샵 Casinos in MI (2021) 김해 출장마사지 — › 남양주 출장샵 › Michigan Casinos › 의정부 출장마사지 › Michigan 경상북도 출장샵 Casinos