Linux
Шрифт:
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 11 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 11 -d $MY_ISP -j ACCEPT
Если требуется, чтобы ваша система отвечала на входящие запросы traceroute, необходимо разрешить передачу исходящих ICMP-сообщений Time Exceeded. Приведенные выше правила допускают обращения traceroute лишь с компьютера провайдера. Если вы хотите использовать traceroute на локальном узле, вы должны разрешить входящие сообщения Time Exceeded. Так как описываемая конфигурация брандмауэра не является маршрутизатором общего назначения, сообщения Time Exceeded используются только с описанной выше целью.
Программа ping: сообщения Echo Request и Echo Reply
Программа ping использует два типа ICMP-сообщений: Echo Request (эхо-запрос)
ipchains -A output -i $EXTERNAL_INTERFACE -р icmp -s $IPADDR 11 -d $MY_ISP -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 11-d $IPADDR -j ACCEPT
Приведенные ниже правила позволяют принимать пакеты ping только с определенных узлов, а конкретно – из сети вашего провайдера:
ipchains -A input -i $EXTERNAL_INTERFACE -р icmp -s $MY_ISP 8 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 0 -d $MY_ISP -j ACCEPT
В данном примере набор внешних узлов, которым разрешена передача вашей системе пакетов ping, ограничен компьютерами провайдера. Сделано это для того, чтобы администратор провайдера мог в любой момент проверить, как происходит обмен данными с внешним интерфейсом вашего компьютера. Прием ping с остальных хостов запрещен. Противодействие smurf-атакам
При организации атаки типа sniuif пакеты ping, содержащие сообщения Echo Request, передаются в широковещательном режиме. Исходный IP-адрес в составе пакета подменяется IP-адресом «жертвы» – IP-адресом того узла, против которого направлена атака. В результате все узлы сети, получившие сообщения Echo Request, передают ответы по адресу «жертвы», загружая линии связи ICMP-пакетами. В результате, если у вас наружный канал не очень широкий – вы лишаетесь доступа в Интернет.
Приведенные ниже правила предназначены для протоколирования попыток smurf-атаки. Поскольку прохождение широковещательных ICMP-пакетов явно не разрешено ни одним из правил, эти пакеты будут удалены по умолчанию. Обратите внимание, что в правилах указаны не только Echo Request, но и другие типы сообщений. Дело в том, что возможности для атаки не ограничиваются сетевыми пактами ping.# Противодействие smurf-атаке
ipchains -A input -i $EXTERNAL_INTERFACE -р icmp -d $BROADCAST_DEST -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $BROADCAST_DEST -j REJECT -l# Маска сети
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -d $NETMASK -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $NETMASK -j REJECT -l# Адрес сети
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -d $NETWORK -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $NETWORK -j REJECT -l
Разрешение функционирования службВыше мы определили правила, позволяющие отклонять сетевые пакеты с сомнительными адресами, а также разрешили локальному компьютеру работать через интерфейс обратной петли. В результате мы получили нормально функционирующий локальный компьютер с полностью отсутствующим доступом в Интернет. Наша дальнейшая задача – обеспечить нормальное функционирование локального компьютера (сети) в Интернете. Для того чтобы ваш компьютер мог принимать и отправлять почту, работать по FTP, HTTP и т. п., необходимо разрешить прохождение сетевых пакетов с определенными портами. На первый взгляд – задача объемная, впрочем, необходимо обеспечить прохождение пакетов всего от десятка служб, что не так уж и много.
Служба DNS
Служба DNS использует в работе порт 53 и протоколы UDP и TCP. Соединение может устанавливаться как между клиентом и сервером, так и между двумя серверами. Для разрешения взаимодействия между клиентом и сервером необходимо добавить следующее правило:ipchains -A input -i $EXTERNAL_INTERFACE -р udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT
В том случае, если ответ сервера не помещается в одной UDP-датаграмме, между клиентом и сервером устанавливается TCP-соединение. Обычно это происходит при
передаче данных зоны между первичным и вторичным DNS-серверами. Для этого случая необходимо в цепочку правил добавить следующее правило:ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT
В том случае, если у вас есть локальный DNS-сервер, и вы предоставляете его услуги каким-либо клиентам (например, компьютерам вашей локальной сети), желательно ограничить конкретным списком компьютеров доступ к вашему локальному DNS-серверу. Для этого воспользуйтесь следующими правилами:
# разрешение обмена между клиентом и DNS-сервером
ipchains -A input -i $EXTERNAL_INTERFACE -р udp -s Cclients.addr> $UNPRIVPORTS -d $IPADDR 53 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s cclients.addr> $UNPRIVPORTS -d $IPADDR 53 -j ACCEPT# разрешение обмена между DNS-серверами
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s cclients.addr> 53 -d $IPADDR -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s cclients.addr> 53 -d $IPADDR -j ACCEPTСледующие правила используются тогда, кода необходима передача с использованием протокола TCP:
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s <dns.sec> $UNIPRIVPORTS -d $IPADDR 53 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 53 -d <dns.sec> $UNIPRIVPORTS -j ACCEPT
Для приема и пересылки электронной почты используются следующие протоколы:
• SMTP порт 25 TCP;
• POP3 порт 110 TCP;
• IMAP порт 143 TCP.
При создании правил, разрешающих функционирование SMTP-протокола, будем считать, что наша почта отправляется через провайдера.
Для передачи почты по SMTP-протоколу на почтовый сервер провайдера необходимо добавить следующие правила:ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $SMTP_GATEWAY 25 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $ SMT P_GATEWAY 25 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
В том случае, если у вас в локальной сети присутствует свой собственный SMTP-сервер, правила фильтрации несколько изменяются и принимают следующий вид:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $ANYWHERE 25 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE 25 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
Для получения электронной почты используется протокол POP3 или протокол IMAP. Для нормального функционирования POP3-протокола необходимо для нашего брандмауэра добавить следующие правила:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $POP_SERVER 110 -j ACCEPT ipchains -A output -i $EXTERNAL_INTEREACE -p tcp! -y -s $POP_SERVER 110 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
Если вы хотите предоставить некоторым внешним хостам доступ к вашему POP3-серверу – используйте следующие правила:
ipchains -A input -i $EXTERNAL_INTEREACE -р tcp -s <pop.clients> $UNIPRIVPORTS -d $IPADDR 110 -j ACCEPT ipchains -A output -i $EXTERNAL_INTEREACE -p tcp! -y -s $IPADDR 110 -d <pop.clients> $UNIPRIVPORTS -j ACCEPT
В том случае, если у вас используется IMАР-протокол, добавьте следующие правила:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $IMAP_SERVER 143 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IMAP_SERVER 143 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
Если вы хотите предоставить некоторым внешним хостам доступ к вашему IMАР-серверу – используйте следующие правила:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s <pop.clients> $UNIPRIVPORTS -d $IPADDR 143 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 143 -d <pop.clients> $UNIPRIVPORTS -j ACCEPT
NNTP
Сервер новостей использует порт 119 и протокол TCP. Для обеспечения нормального функционирования сервера новостей необходимо добавить три набора правил.
Если вы используете сервер новостей вашего провайдера, то для получения и отправки статей в группы новостей необходимо добавить следующие правила: