Tcpd: средства управления доступом

Начиная с открытия компьютера к сети, средство вовлекает много защиты. Приложения разработаны так, чтобы принять меры против различных типов решений. Некоторые из них, однако, могут быть с ошибками (наиболее ярко продемонстрированными RTM Internet worm), или не различают между безопасными хостами, от которых просьбы о частном обслуживании будут приняты, и опасными хостами, чьи запросы должны быть отклонены. Мы уже кратко обсуждали услуги finger и tftp выше.

# inetd services
ftp       stream tcp nowait root   /usr/sbin/ftpd    in.ftpd -l
telnet    stream tcp nowait root   /usr/sbin/telnetd in.telnetd -b/etc/issue
#finger    stream tcp nowait bin    /usr/sbin/fingerd in.fingerd
#tftp      dgram  udp wait   nobody /usr/sbin/tftpd   in.tftpd
#tftp      dgram  udp wait   nobody /usr/sbin/tftpd   in.tftpd /boot/diskless
login     stream tcp nowait root   /usr/sbin/rlogind in.rlogind
shell     stream tcp nowait root   /usr/sbin/rshd    in.rshd
exec      stream tcp nowait root   /usr/sbin/rexecd  in.rexecd

Чтобы ограничить доступ к этим услугам "доверенным множествам" только, которые невозможны с обычной установкой, где inetd обеспечивает эту защиту всей клиентуре.

1. Написано Wietse Venema, wietse@wzv.win.tue.nl.
# wrap finger daemon
finger   stream  tcp     nowait   root    /usr/sbin/tcpd   in.fingerd

Без добавления какого-либо контроля доступа, это будет представлено клиенту точно так же, как и обычная установка finger, за исключением того, что любые запросы будут регистрироваться в syslog's auth facility. Управление доступом осуществляется посредством двух файлов, названных /etc/hosts.allow и /etc/hosts.deny. Они содержат разрешение входов и отрицание доступа, соответственно, к различным услугам и хостам. Когда tcpd обрабатывает просьбу об обслуживании finger от клиентского хоста, именованного Biff.foobar.com, он просматривает hosts.allow и hosts.deny (в этом порядке) для соответствующей записи.

Для отказа в доступе к услугам finger и tftp, кроме локальных хостов, поместите следующее в /etc/hosts.deny, и оставьте /etc/hosts.allow пустым:

in.tftpd, in.fingerd: ALL EXCEPT  LOCAL, .your.domain

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

in.ftpd: ALL EXCEPT LOCAL, .vbrew.com :
echo "request from %d@%h" >> /var/log/finger.log;
if [ %h != "vlager.vbrew.com" ]; then
finger -l @%h >> /var/log/finger.log;
fi

Область псевдонимов позволяет точно определить альтернативные имена для одного и того же обслуживания. Обычно, вы не должны менять файл услуг, который приходит наряду с сетевым программным обеспечением на вашей Linux системе. Однако, мы даем небольшой пример из этого файла ниже:

# The services file:
# well-known services
echo            7/tcp                 # Echo
echo            7/udp
discard         9/tcp  sink null      # Discard
discard         9/udp  sink null
daytime        13/tcp                 # Daytime
daytime        13/udp
chargen        19/tcp  ttytst source  # Character Generator
chargen        19/udp  ttytst source
ftp-data       20/tcp                 # File Transfer Protocol (Data)
ftp            21/tcp                 # File Transfer Protocol (Control)
telnet         23/tcp                 # Virtual Terminal Protocol
smtp           25/tcp                 # Simple Mail Transfer Protocol
nntp          119/tcp  readnews       # Network News Transfer Protocol
# UNIX services
exec          512/tcp                 # BSD rexecd
biff          512/udp  comsat         # mail notification
login         513/tcp                 # remote login
who           513/udp  whod           # remote who and uptime
shell         514/tcp  cmd            # remote command, no passwd used
syslog        514/udp                 # remote system logging
printer       515/tcp  spooler        # remote print spooling
route         520/udp  router routed  # routing information protocol

Заметьте, что, например, обслуживание ECHO предлагается на порте 7 для обоих, и TCP, и UDP. Порт 512 используется для двух различных услуг: для СИСТЕМЫ СПУТНИКОВОЙ СВЯЗИ КОМСАТ daemon (которые сообщают пользователям о новой почте, см. xbiff(1x)) через UDP и для удаленного выполнения (rexec(1)) с использованием TCP.

# Internet (IP) protocols
ip       0       IP              # internet protocol, pseudo protocol number
icmp     1       ICMP            # internet control message protocol
igmp     2       IGMP            # internet group multicast protocol
tcp      6       TCP             # transmission control protocol
udp      17      UDP             # user datagram protocol
raw      255     RAW             # RAW IP interface