Допустим, что у нас используется публичный Web-сервер, и нужно разрешить всем пользователям работать с 80 портом (именно его используют Web-серверы по умолчанию). Для решения этой проблемы выполняем команды:
ipchains -I input 1 -р tcp -d 192.168.77.1 80 -j ACCEPT
ipchains -I output 1 -p tcp -s 192.168.77.1 80 -j ACCEPT
В качестве порта можно указывать как числовое значение, так и имя. Это значит, что приведенные выше команды можно записать таким образом:
ipchains -I input 1 -р tcp -d 192.168.77.1 web -j ACCEPT
ipchains -I output 1 -p tcp -s 192.168.77.1 web -j ACCEPT
Здесь вместо 80 порта указано его имя web
Рассмотрим каждый ключ первой строки в отдельности:
□ -I input 1
-I
указывает на необходимость вставки правила под заданным номером. Потом показываем цепочку, в которую надо вставить правило, в данном случае это input. Цифра 1 обозначает номер, под которым вставляется правило, т.е. оно будет первым;□ -р tcp
-р
мы в явном виде указываем протокол. Не забывайте делать это. В противном случае вы откроете одновременно доступ к сервисам на двух портах (TCP и UDP). Хорошо, если на 80 порту UDP в этот момент не будет работать какая-нибудь программа;□ -d 192.168.77.1 80
□ -j ACCEPT
В соответствии с первой строкой посылать на сервер запросы разрешается всем. Но Web-сервер должен иметь возможность возвращать страницы на запросы клиентов. Для этого нужно открыть 80 порт моего сервера (192.168.77.1) для всех исходящих пакетов. Именно это делает вторая строка.
Выполните команду ipchains -L
Chain input (policy DENY):
target prot opt source destination ports
ACCEPT tcp ------ anywhere flenovm.ru any -> http
Chain forward (policy DENY):
Chain output (policy DENY):
target prot opt source destination ports
ACCEPT tcp ------ flenovm.ru anywhere http -> any
Chain icmp (0 references):
В цепочках input и output появилось по одной строке. Обратите внимание, что в колонках source
destination
обеих цепочек IP-адрес заменился на доменное имя моего компьютера flenovm.ru
. Если сервер может определить имя, то он делает такую подмену. Посмотрите на колонку ports
, здесь номер порта 80 заменен на http.Я советую вам внимательно проанализировать созданный нами список фильтров, чтобы вы четко понимали каждую его колонку. Рассмотрим структуру строк на примере цепочки input:
target prot opt source destination ports
ACCEPT tcp ------ anywhere flenottro.ru any -> http
Первая строка — имена столбцов, а вторая — это фильтр, содержащий реальные значения. Здесь у нас 6 колонок:
□ target
ACCEPT
, т.е. пропустить дальше, в противном случае пакет уничтожается;□ prot
tcp
;□ opt
□ source
□ destination
□ ports
источник -> назначение
. В данном случае у источника может быть любой порт (используется слово any), а пункт назначения должен работать только через http (80 порт).Как это часто бывает, Web-сервер должен кто-то обновлять, и обычно это делается через FTP-сервис. Всем доступ открывать нельзя, поэтому пропишем правило, по которому подключаться к FTP-серверу (21 порт) сможет только один компьютер с адресом 192.168.77.10. Для этого выполняем следующие команды:
ipchains -I input 1 -р tcp -d 192.168.77.1 21 \