Linux
Шрифт:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $NEWS_SERVER 119 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $NEWS_SERVER 119 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
В том случае, если у вас в локальной сети есть свой собственный сервер новостей, и вы хотите разрешить извне доступ определенным хостам – воспользуйтесь следующими правилами:
ipchains -A output -i $EXTERNAL_INTERFACE -р tcp -s <ip.clients> $UNIPRIVPORTS -d $NEWS_SERVER 119 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $NEWS_SERVER 119 -d <ip.clients> $UNIPRIVPORTS -j ACCEPT
А поскольку вашему локальному серверу новостей необходимо получать и передавать статьи от сервера новостей провайдера – воспользуйтесь следующими правилами:
ipchains -A output -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $NEWS_SERVER 119 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $NEWS_SERVER 119 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
Telnet
Telnet
SSH
Протокол SSH использует порт 22 и протокол TCP. Защищенная замена Telnet и r-командам. При функционировании использует привилегированные порты 513—1023.
Чтобы применять протокол SSH для доступа из локальной сети к Интернету SSH-серверам необходимо ввести следующие правила:ipchains -A output -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNIPRIVPORTS -d $ANYWHERE 22 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE 22 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $SSH_PORTS -d $IPADDR 22 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 22 -d $ANYWHERE $SSH_PORTS -j ACCEPTСледующие правила разрешают доступ удаленным клиентам к вашим локальным SSH-серверам:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $ANYWERE $UNIPRIVPORTS -d $IPADDR 22 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 22 -d $ANYWHERE $UNIPRIVPORTS -j ACCEPT
ipchains -A -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $SSH_PORTS -d $ANYWERE 22 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE 22 -d $IPADDR $SSH_PORTS -j ACCEPTFTP
Пожалуй один из сложных протоколов, поскольку использует несколько портов (TCP 21, 20). Протокол предусматривает два режима передачи – активный и пассивный канал передачи, что несколько осложняет конфигурацию брандмауэра.
Следующие правила разрешают доступ к удаленным FTP-серверам:ipchains -A output -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNPRIVPORTS -d $ANYWERE 21 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE 21 -d $IPADDR $ UNPRIVPORTS -j ACCEPT
Следующие правила разрешают устанавливать соединения в режиме активного канала передачи данных:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp! -y -s $ANYWHERE 20 -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWERE 20 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWERE $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE $UNPRIVPORTS -d $IPADDR $UNPRIVPORTS -j ACCEPTДля того чтобы к вашему локальному FTP-серверу был доступ извне – необходимо ввести следующие правила:
ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $ ANYWERE $UNPRIVPORTS -d $IPADDR 21 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 21 -d $ANYWERE $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR 20 -d $ANYWERE $UNPRIVPORTS -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 20 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR $UNPRIVPORTS -d $ANYWHERE $UNPRIVPORTS -j ACCEPTHTTP Протокол HTTP использует порт 80 и протокол TCP. Для того чтобы локальные клиенты могли получить доступ к Web-серверам Интернета, необходимо ввести следующие правила:
ipchains -A output -i $EXTERNAL_INTERFACE -р tcp -s $IPADDR $UNPRIVPORT -d $ANYWHERE 80 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp! -y -s $ANYWHERE 80 -d $IPADDR $UNIPRIVPORTS -j ACCEPT
В том случае, если у вас в локальной сети есть свой собственный Web-сервер,
и вы хотите разрешить доступ извне – воспользуйтесь следующими правилами:ipchains -A input -i $EXTERNAL_INTERFACE -р tcp -s $ANYWHERE $UNIPRIVPORTS -d $IPADDR 80 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp! -y -s $IPADDR 80 -d $ANYWHERE $UNIPRIVPORTS -j ACCEPT
Помимо перечисленных сервисов у вас могут действовать и другие, однако, зная протокол, используемые порты и опираясь на ранее приведенные правила, не составит труда добавить соответствующие правила для нормального функционирования ваших сервисов. Запрет доступа с «неблагонадежных» узлов
Если вы обнаружите попытки сканирования портов или другие сомнительные действия, которые периодически предпринимаются с одного и того же хоста, желательно вовсе запретить обращение к системе с этого адреса.
Пример запрещающего правила приведен ниже:ipchains -I input -i $EXTERNAL_INTERFACE -s <адрес/маска> -j DENY
Согласно этому правилу удаляется любой пакет, независимо от протокола и номера исходного порта или порта назначения.
Поддержка обмена в локальной сети
Для поддержки локальной сети, стоящей за брандмауэром, следует добавить некоторые правила. Эти правила необходимы для того, чтобы разрешить доступ к внутреннему сетевому интерфейсу брандмауэра и направить трафик в глобальную сеть. Как только на компьютере-брандмауэре будет реализована поддержка двух или более интерфейсов, он превратится в бастион.
Разрешение доступа к внутреннему сетевому интерфейсу брандмауэра
При работе с небольшими сетями вряд ли есть основание ограничивать доступ к брандмауэру из локальной сети. Следующие правила разрешают все виды взаимодействия между брандмауэром и локальной сетью:ipchains -A input -i $INTERNAL_INTERFACE -s LAN -j ACCEPT ipchains -A output -i $Internal_INTERFACE -s LAN_1 -j ACCEPT
Обратите внимание, что данные правила разрешают обмен лишь с брандмауэром. Доступ к Интернету отсутствует, поскольку по умолчанию компьютер, выполняющий роль брандмауэра, не производит динамической маршрутизации пакетов и не поддерживает статических маршрутов. Чтобы обеспечить маршрутизацию пакетов через брандмауэр, надо задать дополнительные правила.
Выбор конфигурации для пользующейся доверием локальной сети
Пакеты, передаваемые компьютерами локальной сети, можно условно разбить на две категории. Первая категория представляет собой данные, которыми локальные узлы обмениваются с брандмауэром. Вторая категория – это данные, направляемые через внешний интерфейс брандмауэра в Интернет.
При работе небольшой сети вряд ли может возникнуть потребность в фильтрации пакетов, проходящих через внутренний интерфейс брандмауэра, однако некоторая обработка все-таки необходима. Речь идет о маскировке.
Если компьютер, выполняющий роль брандмауэра, имеет реальный IP-адрес, а всем остальным машинам, подключенным к локальной сети, присвоены адреса, предназначенные для внутреннего использования, то для обеспечения доступа локальных машин в Интернет брандмауэр должен взять на себя функции proxy-сервера.
По сути, компьютер, выполняющий маскировку пакетов, представляет собой низкоуровневый proxy-сервер. Такой сервер обслуживает клиентов, устанавливая соединения с удаленными узлами от своего имени. Поскольку исходный адрес в пакете, передаваемом в Интернет, заменяется исходным адресом компьютера, выполняющего маскировку, то с точки зрения удаленного узла обмен данными с ним проводит proxy-сервер. В пакетах, передаваемых удаленным узлом, адрес назначения заменяется на адрес локального компьютера.
Организация доступа из локальной сети к брандмауэру бастионного типа
Если вы занимаетесь администрированием небольшой сети, то, скорее всего, вы не захотите ограничивать доступ локальных компьютеров к брандмауэру бастионного типа. Следующее правило организует неограниченный доступ к внутреннему сетевому интерфейсу брандмауэра:ipchains -A input -i $INTERNAL_INTERFACE -S LAN_1 -j ACCEPT
ipchains -A output -i $INTERNAL_INTERFACE -d LAN_1 -j ACCEPT
Перенаправление трафика
Если несколько локальных сетей должны обмениваться информацией, вам необходимо разрешить передачу пакетов между соответствующими интерфейсами. Конечно, делать это надо лишь в том случае, если маршрутизация не выполняется какими-либо другими средствами.
Чтобы брандмауэр можно было использовать в качестве маршрутизатора, объединяющего две локальные сети, необходимо добавить следующие правила: