Реферат: Безопасность Linux. Удаленные атаки
Теперь о том, как надо настраивать firewall.
а)Во-первых, необходимо проверить, включен ли tcpd (именно он работает с файлами hosts.allow и hosts.deny). Для этого рассмотрим файл etc/inetd.conf. К каждой строке, где указывается включение службы должен стоять такой фрагмент:
/usr/sbin/tcpd
Кстати, расскажу подробнее про inetd. Данный демон запускает различные сетевые службы (telnet и др.) при запросе к ним, он указывает к какому порту они подключены и необходим для работы в сети.
Файл hosts.allow лучше настроить так:
All: 127.0.0.01
All: компьютеры, которым вы доверяете.
Файл hosts.deny настраивается аналогично.
В новую версию inet - xinet уже встроен такой проверщик. Для работы с ним лучше почитайте документацию.
К сожалению, не все службы запускаются через демон inetd. Однако они поддерживают запуск с tcpd. Рассмотрим пример на ssh. Для того, чтобы она запускалась с включенным tcpd необходимо запустить ее configure с ключом -with-tcp-wrappers Осталось только в hosts.allow (.deny) добавить строку:
sshd: имена_компьютеров_которым_можно_доверять
Что делать, если программный продукт не поддерживает tcpd? Мы же под linux! А линукс - синоним открытого исходного кода! Лично я бы не смог написать необходимый код, если бы не одна книга. Привожу листинг из нее:
// В начале заголовка программы необходимо разместить:
#ifdef USE LIBWRAP
#include <tcpd.h>
int allow_severity=LOG_NOTICE;
int deny_severity=LOG_WARNING;
#endif
// В функции, которая управляет соединением, добавим следующую
// строку при объявлении переменной:
#indef USE_LIBWRAP
struct request_info request;
#endif;
// После установки соединения, но перед выполнением каких-либо действий с данными:
#ifdef USE_LIBWRAP
request_init(&request, RQ_DAEMON, options.servername, RQ_file, local, 0);
fromhost(&request);
if (!hosts_access(&recuest)) {
log(LOG_WARNING, "Connection from %s:%d REFUSED by libwrap",