Iptables Tutorial 1.1.19
ModernLib.Net / Интернет / Andreasson Oskar / Iptables Tutorial 1.1.19 - Чтение
(стр. 4)
Автор:
|
Andreasson Oskar |
Жанр:
|
Интернет |
-
Читать книгу полностью
(355 Кб)
- Скачать в формате fb2
(446 Кб)
- Скачать в формате doc
(104 Кб)
- Скачать в формате txt
(96 Кб)
- Скачать в формате html
(445 Кб)
- Страницы:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
|
|
Таблица: filter
Описание: Таблица
filterиспользуется главным образом для фильтрации пакетов. Для примера, здесь мы можем выполнить
DROP,
LOG,
ACCEPTили
REJECTбез каких либо ограничений, которые имеются в других таблицах. Имеется три встроенных цепочки. Первая –
FORWARD, используемая для фильтрации пакетов, идущих транзитом через брандмауэр. Цепочку
INPUTпроходят пакеты, которые предназначены локальным приложениям (брандмауэру). И цепочка
OUTPUT– используется для фильтрации исходящих пакетов, сгенерированных приложениями на самом брандмауэре.
Выше мы рассмотрели основные отличия трех имеющихся таблиц. Каждая из них должна использоваться только в своих целях, и вы должны это понимать. Нецелевое использование таблиц может привести к ослаблению защиты брандмауэра и сети, находящейся за ним. Позднее, в главе
Порядок прохождения таблиц и цепочек, мы подробнее остановимся на этом.
6.3. Команды
Ниже приводится список команд и правила их использования. Посредством команд мы сообщаем
iptablesчто мы предполагаем сделать. Обычно предполагается одно из двух действий – добавление нового правила в цепочку или удаление существующего правила из той или иной таблицы. Далее приведены команды, которые используются в
iptables.
Таблица 6-2. Команды
(Команда – Пример – Описание)
Команда:
-A,
–append
Пример:
iptables -A INPUT ...
Описание: Добавляет новое правило в конец заданной цепочки.
Команда:
-D,
–delete
Пример:
iptables -D INPUT –dport 80 -j DROP,
iptables -D INPUT 1
Описание: Удаление правила из цепочки. Команда имеет два формата записи, первый – когда задается критерий сравнения с опцией -D (см. первый пример), второй – порядковый номер правила. Если задается критерий сравнения, то удаляется правило, которое имеет в себе этот критерий, если задается номер правила, то будет удалено правило с заданным номером. Счет правил в цепочках начинается с 1.
Команда:
-R,
–replace
Пример:
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Описание: Эта команда заменяет одно правило другим. В основном она используется во время отладки новых правил.
Команда: -I,
–insert
Пример: iptables -I INPUT 1 –dport 80 -j ACCEPT
Описание: Вставляет новое правило в цепочку. Число, следующее за именем цепочки указывает номер правила, перед которым нужно вставить новое правило, другими словами число задает номер для вставляемого правила. В примере выше, указывается, что данное правило должно быть 1-м в цепочке
INPUT.
Команда: -L,
–list
Пример: iptables -L INPUT
Описание: Вывод списка правил в заданной цепочке, в данном примере предполагается вывод правил из цепочки
INPUT. Если имя цепочки не указывается, то выводится список правил для всех цепочек. Формат вывода зависит от наличия дополнительных ключей в команде, например
-n,
-v, и пр.
Команда: -F,
–flush
Пример:
iptables -F INPUT
Описание: Сброс (удаление) всех правил из заданной цепочки (таблицы). Если имя цепочки и таблицы не указывается, то удаляются все правила, во всех цепочках.
(Хочется от себя добавить, что если не указана таблица ключом
-t (–table), то очистка цепочек производится только в таблице filter,
прим. перев.)
Команда:
-Z,
–zero
Пример:
iptables -Z INPUT
Описание: Обнуление всех счетчиков в заданной цепочке. Если имя цепочки не указывается, то подразумеваются все цепочки. При использовании ключа
-vсовместно с командой
-L, на вывод будут поданы и состояния счетчиков пакетов, попавших под действие каждого правила. Допускается совместное использование команд
-Lи
-Z. В этом случае будет выдан сначала список правил со счетчиками, а затем произойдет обнуление счетчиков.
Команда:
-N,
–new-chain
Пример:
iptables -N allowed
Описание: Создается новая цепочка с заданным именем в заданной таблице В выше приведенном примере создается новая цепочка с именем
allowed. Имя цепочки должно быть уникальным и не должно совпадать с зарезервированными именами цепочек и действий (такими как
DROP,
REJECTи т.п.)
Команда:
-X,
–delete-chain
Пример:
iptables -X allowed
Описание: Удаление заданной цепочки из заданной таблицы. Удаляемая цепочка не должна иметь правил и не должно быть ссылок из других цепочек на удаляемую цепочку. Если имя цепочки не указано, то будут удалены все цепочки заданной таблице кроме встроенных.
Команда:
-P,
–policy
Пример:
iptables -P INPUT DROP
Описание: Задает политику по-умолчанию для заданной цепочки. Политика по-умолчанию определяет действие, применяемое к пакетам не попавшим под действие ни одного из правил в цепочке. В качестве политики по умолчанию допускается использовать
DROPи
ACCEPT.
Команда:
-E,
–rename-chain
Пример:
iptables -E allowed disallowed
Описание: Команда
-Eвыполняет переименование пользовательской цепочки. В примере цепочка allowed будет переименована в цепочку disallowed. Эти переименования не изменяют порядок работы, а носят только косметический характер.
Команда должна быть указана всегда. Список доступных команд можно просмотреть с помощью команды
iptables -hили, что тоже самое,
iptables –help. Некоторые команды могут использоваться совместно с дополнительными ключами. Ниже приводится список дополнительных ключей и описывается результат их действия. При этом заметьте, что здесь не приводится дополнительных ключей, которые используются при построении критериев (matches) или действий (targets). Эти опции мы будем обсуждать далее.
Таблица 6-3. Дополнительные ключи
(Ключ – Команды, с которыми используется – Описание)
Ключ:
-v,
–verbose
Команды, с которыми используется:
–list,
–append,
–insert,
–delete,
–replace
Описание: Используется для повышения информативности вывода и, как правило, используется совместно с командой
–list. В случае использования с командой
–list, в вывод этой команды включаются так же имя интерфейса, счетчики пакетов и байт для каждого правила. Формат вывода счетчиков предполагает вывод кроме цифр числа еще и символьные множители K (x1000), M (x1,000,000) и G (x1,000,000,000). Для того, чтобы заставить команду
–listвыводить полное число (без употребления множителей) требуется применять ключ
-x, который описан ниже. Если ключ
-v,
–verboseиспользуется с командами
–append,
–insert,
–deleteили
–replace, то будет выведен подробный отчет о произведенной операции.
Ключ:
-x,
–exact
Команды, с которыми используется:
–list
Описание: Для всех чисел в выходных данных выводятся их точные значения без округления и без использования множителей K, M, G. Этот ключ используется только с командой
–listи не применим с другими командами.
Ключ:
-n,
–numeric
Команды, с которыми используется:
–list
Описание: Заставляет iptables выводить IP-адреса и номера портов в числовом виде предотвращая попытки преобразовать их в символические имена. Данный ключ используется только с командой
–list.
Ключ:
–line-numbers
Команды, с которыми используется:
–list
Описание:Ключ
–line-numbersвключает режим вывода номеров строк при отображении списка правил командой
–list. Номер строки соответствует позиции правила в цепочке. Этот ключ используется только с командой
–list.
Ключ:
-c,
–set-counters
Команды, с которыми используется:
–insert,
–append,
–replace
Описание: Этот ключ используется для установки начального значения счетчиков пакетов и байт в заданное значение при создании нового правила. Например, ключ –set-counters 20 4000 установит счетчик пакетов = 20, а счетчик байт = 4000.
Ключ:
–modprobe
Команды, с которыми используется: Все
Описание: Ключ
–modprobeопределяет команду загрузки модуля ядра. Данный ключ может использоваться в случае, когда модули ядра находится вне пути поиска (search path). Этот ключ может использоваться с любой командой.
6.4. Критерии
Здесь мы подробнее остановимся на критериях выделения пакетов. Я разбил все критерии на пять групп. Первая –
общие критериикоторые могут использоваться в любых правилах. Вторая –
TCP критериикоторые применяются только к
TCPпакетам. Третья –
UDP критериикоторые применяются только к
UDPпакетам. Четвертая –
ICMP критериидля работы с
ICMPпакетами. И наконец пятая – специальные критерии, такие как state, owner, limit и пр.
6.4.1. Общие критерии
Здесь мы рассмотрим
Общие критерии. Общие критерии допустимо употреблять в любых правилах, они не зависят от типа протокола и не требуют подгрузки модулей расширения. К этой группе я умышленно отнес критерий
–protocolнесмотря на то, что он используется в некоторых специфичных от протокола расширениях. Например, мы решили использовать
TCP критерий, тогда нам необходимо будет использовать и критерий
–protocolкоторому в качестве дополнительного ключа передается название протокола – TCP. Однако критерий
–protocolсам по себе является критерием, который используется для указания типа протокола.
Таблица 6-4. Общие критерии
(Критерий – Пример – Описание)
Критерий:
-p,
–protocol
Пример:
iptables -A INPUT -p tcp
Описание: Этот критерий используется для указания типа протокола. Примерами протоколов могут быть
TCP,
UDPи
ICMP. Список протоколов можно посмотреть в файле /etc/protocols. Прежде всего, в качестве имени протокола в данный критерий можно передавать один из трех вышеупомянутых протоколов, а также ключевое слово ALL. В качестве протокола допускается передавать число – номер протокола, так например, протоколу ICMP соответствует число 1, TCP – 6 и UDP – 17. Соответствия между номерами протоколов и их именами вы можете посмотреть в файле /etc/protocols, который уже упоминался. Критерию может передаваться и список протоколов, разделенных запятыми, например так:
udp,tcp
(Хотя автор и указывает на возможность передачи списка протоколов, тем не менее вам врят ли удастся это сделать! Кстати, man iptables явно оговаривает, что в данном критерии может быть указан только один протокол. Может быть это расширение имеется в patch-o-matic?
прим. перев.)Если данному критерию передается числовое значение 0, то это эквивалентно использованию спецификатора ALL, который подразумевается по умолчанию, когда критерий
–protocolне используется. Для логической инверсии критерия, перед именем протокола (списком протоколов) используется символ
!, например
–protocol ! tcpподразумевает пакеты протоколов,
UDPи
ICMP.
Критерий:
-s,
–src,
–source
Пример:
iptables -A INPUT -s 192.168.1.1
Описание: IP-адрес(а) источника пакета. Адрес источника может указываться так, как показано в примере, тогда подразумевается единственный IP-адрес. А можно указать адрес в виде address/mask, например как
192.168.0.0/255.255.255.0, или более современным способом
192.168.0.0/24, т.е. фактически определяя диапазон адресов Как и ранее, символ !, установленный перед адресом, означает логическое отрицание, т.е.
–source ! 192.168.0.0/24означает любой адрес кроме адресов
192.168.0.x.
Критерий:
-d,
–dst,
–destination
Пример:
iptables -A INPUT -d 192.168.1.1
Описание: IP-адрес(а) получателя. Имеет синтаксис схожий с критерием
–source, за исключением того, что подразумевает адрес места назначения. Точно так же может определять как единственный IP-адрес, так и диапазон адресов. Символ ! используется для логической инверсии критерия.
Критерий:
-i,
–in-interface
Пример:
iptables -A INPUT -i eth0
Описание: Интерфейс, с которого был получен пакет. Использование этого критерия допускается только в цепочках
INPUT,
FORWARDи
PREROUTING, в любых других случаях будет вызывать сообщение об ошибке. При отсутствии этого критерия предполагается любой интерфейс, что равносильно использованию критерия
-i +. Как и прежде, символ ! инвертирует результат совпадения. Если имя интерфейса завершается символом
+, то критерий задает все интерфейсы, начинающиеся с заданной строки, например
-i PPP+обозначает любой PPP интерфейс, а запись
-i ! eth+– любой интерфейс, кроме любого eth.
Критерий:
-o,
–out-interface
Пример:
iptables -A FORWARD -o eth0
Описание: Задает имя выходного интерфейса. Этот критерий допускается использовать только в цепочках
OUTPUT,
FORWARDи
POSTROUTING, в противном случае будет генерироваться сообщение об ошибке. При отсутствии этого критерия предполагается любой интерфейс, что равносильно использованию критерия
-o +. Как и прежде, символ ! инвертирует результат совпадения. Если имя интерфейса завершается символом
+, то критерий задает все интерфейсы, начинающиеся с заданной строки, например
-o eth+обозначает любой eth интерфейс, а запись
-o ! eth+– любой интерфейс, кроме любого eth.
Критерий:
-f,
–fragment
Пример:
iptables -A INPUT -f
Описание: Правило распространяется на все фрагменты фрагментированного пакета, кроме первого, сделано это потому, что нет возможности определить исходящий/входящий порт для фрагмента пакета, а для ICMP-пакетов определить их тип. С помощью фрагментированных пакетов могут производиться атаки на ваш брандмауэр, так как фрагменты пакетов могут не отлавливаться другими правилами. Как и раньше, допускается использования символа ! для инверсии результата сравнения. только в данном случае символ ! должен предшествовать критерию
-f, например
! -f. Инверсия критерия трактуется как «все первые фрагменты фрагментированных пакетов и/или нефрагментированные пакеты, но не вторые и последующие фрагменты фрагментированных пакетов».
6.4.2. Неявные критерии
В этом разделе мы рассмотрим
неявные критерии, точнее, те критерии, которые подгружаются неявно и становятся доступны, например при указании критерия
–protocol tcp. На сегодняшний день существует три автоматически подгружаемых расширения, это
TCP критерии,
UDP критериии
ICMP критерии
(при построении своих правил я столкнулся с необходимостью явного указания ключа
-m tcp, т.е. о неявности здесь говорить не приходится, поэтому будьте внимательнее при построении своих правил, если что-то не идет – пробуйте явно указывать необходимое расширение.
прим. перев.). Загрузка этих расширений может производиться и явным образом с помощью ключа -m, -match, например -m tcp.
6.4.2.1. TCP критерии
Этот набор критериев зависит от типа протокола и работает только с
TCPпакетами. Чтобы использовать их, вам потребуется в правилах указывать тип протокола
–protocol tcp. Важно: критерий
–protocol tcpобязательно должен стоять перед специфичным критерием. Эти расширения загружаются автоматически как для
tcpпротокола, так и для
udpи
icmpпротоколов.
(О неявной загрузке расширений я уже упоминал выше
прим. перев.).
Таблица 6-5. TCP критерии
(Критерий – Пример – Описание)
Критерий:
–sport,
–source-port
Пример:
iptables -A INPUT -p tcp –sport 22
Описание: Исходный порт, с которого был отправлен пакет. В качестве параметра может указываться номер порта или название сетевой службы. Соответствие имен сервисов и номеров портов вы сможете найти в файле /etc/services. При указании номеров портов правила отрабатывают несколько быстрее. однако это менее удобно при разборе листингов скриптов. Если же вы собираетесь создавать значительные по объему наборы правил, скажем порядка нескольких сотен и более, то тут предпочтительнее использовать номера портов. Номера портов могут задаваться в виде интервала из минимального и максимального номеров, например
–source-port 22:80. Если опускается минимальный порт, т.е. когда критерий записывается как
–source-port :80, то в качестве начала диапазона принимается число 0. Если опускается максимальный порт, т.е. когда критерий записывается как
–source-port 22:, то в качестве конца диапазона принимается число 65535. Допускается такая запись
–source-port 80:22, в этом случае
iptablesпоменяет числа 22 и 80 местами, т.е. подобного рода запись будет преобразована в
–source-port 22:80. Как и раньше, символ
!используется для инверсии. Так критерий
–source-port ! 22подразумевает любой порт, кроме 22. Инверсия может применяться и к диапазону портов, например
–source-port ! 22:80. За дополнительной информацией обращайтесь к описанию критерия multiport.
Критерий:
–dport,
–destination-port
Пример:
iptables -A INPUT -p tcp –dport 22
Описание: Порт или диапазон портов, на который адресован пакет. Аргументы задаются в том же формате, что и для
–source-port.
Критерий:
–tcp-flags
Пример:
iptables -p tcp –tcp-flags SYN,FIN,ACK SYN
Описание: Определяет маску и флаги tcp-пакета. Пакет считается удовлетворяющим критерию, если из перечисленных флагов в первом списке в единичное состояние установлены флаги из второго списка. Так для вышеуказанного примера под критерий подпадают пакеты у которых флаг
SYNустановлен, а флаги
FINи
ACKсброшены. В качестве аргументов критерия могут выступать флаги
SYN, ACK, FIN, RST, URG, PSH, а так же зарезервированные идентификаторы
ALLи
NONE.
ALL– значит
ВСЕфлаги и
NONE– НИ ОДИН флаг. Так, критерий
–tcp-flags ALL NONEозначает –
«все флаги в пакете должны быть сброшены». Как и ранее, символ
!означает инверсию критерия Важно: имена флагов в каждом списке должны разделяться запятыми, пробелы служат для разделения списков.
Критерий:
–syn
Пример:
iptables -p tcp –syn
Описание: Критерий
–synявляется по сути реликтом, перекочевавшим из ipchains. Критерию соответствуют пакеты с установленным флагом
SYNи сброшенными флагами
ACKи
FIN. Этот критерий аналогичен критерию
–tcp-flags SYN,ACK,FIN SYN. Такие пакеты используются для открытия соединения
TCP. Заблокировав такие пакеты, вы надежно заблокируете все входящие запросы на соединение, однако этот критерий не способен заблокировать исходящие запросы на соединение. Как и ранее, допускается инвертирование критерия символом
!. Так критерий
! –synозначает –
«все пакеты, не являющиеся запросом на соединение», т.е. все пакеты с установленными флагами
FINили
ACK.
Критерий:
–tcp-option
Пример:
iptables -p tcp –tcp-option 16
Описание: Удовлетворяющим условию данного критерия будет будет считаться пакет,
TCPпараметр которого равен заданному числу.
TCP Option– это часть заголовка пакета. Она состоит из 3 различных полей. Первое 8-ми битовое поле содержит информацию об опциях, используемых в данном соединении. Второе 8-ми битовое поле содержит длину поля опций. Если следовать стандартам до конца, то следовало бы реализовать обработку всех возможных вариантов, однако, вместо этого мы можем проверить первое поле и в случае, если там указана неподдерживаемая нашим брандмауэром опция, то просто перешагнуть через третье поле (длина которого содержится во втором поле). Пакет, который не будет иметь полного
TCPзаголовка, будет сброшен автоматически при попытке изучения его
TCPпараметра. Как и ранее, допускается использование флага инверсии условия
!. Дополнительную информацию по
TCP Optionsвы сможете найти на
6.4.2.2. UDP критерии
В данном разделе будут рассматриваться критерии, специфичные только для протокола
UDP. Эти расширения подгружаются автоматически при указании типа протокола
–protocol udp. Важно отметить, что пакеты
UDPне ориентированы на установленное соединение, и поэтому не имеют различных флагов которые дают возможность судить о предназначении датаграмм. Получение
UDPпакетов не требует какого либо подтверждения со стороны получателя. Если они потеряны, то они просто потеряны (не вызывая передачу
ICMPсообщения об ошибке). Это предполагает наличие значительно меньшего числа дополнительных критериев, в отличие от
TCPпакетов. Важно: Хороший брандмауэр должен работать с пакетами любого типа,
UDPили
ICMP, которые считаются не ориентированными на соединение, так же хорошо как и с
TCPпакетами. Об этом мы поговорим позднее, в следующих главах.
Таблица 6-6. UDP критерии
(Критерий – Пример – Описание)
Критерий:
–sport,
–source-port
Пример:
iptables -A INPUT -p udp –sport 53
Описание: Исходный порт, с которого был отправлен пакет. В качестве параметра может указываться номер порта или название сетевой службы. Соответствие имен сервисов и номеров портов вы сможете найти в файле other/services.txt. При указании номеров портов правила отрабатывают несколько быстрее. однако это менее удобно при разборе листингов скриптов. Если же вы собираетесь создавать значительные по объему наборы правил, скажем порядка нескольких сотен и более, то тут предпочтительнее использовать номера портов. Номера портов могут задаваться в виде интервала из минимального и максимального номеров, например
-source-port 22:80. Если опускается минимальный порт, т.е. когда критерий записывается как
–source-port :80, то в качестве начала диапазона принимается число 0. Если опускается максимальный порт, т.е. когда критерий записывается как
–source-port 22:, то в качестве конца диапазона принимается число 65535. Допускается такая запись
–source-port 80:22, в этом случае iptables поменяет числа 22 и 80 местами, т.е. подобного рода запись будет преобразована в
–source-port 22:80. Как и раньше, символ
!используется для инверсии. Так критерий
–source-port ! 22подразумевает любой порт, кроме 22. Инверсия может применяться и к диапазону портов, например
–source-port ! 22:80.
Критерий:
–dport,
–destination-port
Пример:
iptables -A INPUT -p udp –dport 53
Описание: Порт, на который адресован пакет. Формат аргументов полностью аналогичен принятому в критерии
–source-port.
6.4.2.3. ICMP критерии
Этот протокол используется, как правило, для передачи сообщений об ошибках и для управления соединением. Он не является подчиненным
IPпротоколу, но тесно с ним взаимодействует, поскольку помогает обрабатывать ошибочные ситуации. Заголовки
ICMPпакетов очень похожи на
IPзаголовки, но имеют и отличия. Главное свойство этого протокола заключается в типе заголовка, который содержит информацию о том, что это за пакет. Например, когда мы пытаемся соединиться с недоступным хостом, то мы получим в ответ сообщение
ICMP host unreachable. Полный список типов
ICMPсообщений, вы можете посмотреть в приложении
Типы ICMP. Существует только один специфичный критерий для
ICMPпакетов. Это расширение загружается автоматически, когда мы указываем критерий
–protocol icmp. Заметьте, что для проверки
ICMPпакетов могут употребляться и общие критерии, поскольку известны и адрес источника и адрес назначения и пр.
Таблица 6-7. ICMP критерии
(Критерий – Пример – Описание)
Критерий:
–icmp-type
Пример:
iptables -A INPUT -p icmp –icmp-type 8
Описание: Тип сообщения
ICMPопределяется номером или именем. Числовые значения определяются в RFC 792. Чтобы получить список имен
ICMPзначений выполните команду
iptables –protocol icmp –help, или посмотрите приложение
Типы ICMP. Как и ранее, символ
!инвертирует критерий, например
–icmp-type ! 8.
6.4.3. Явные критерии
Перед использованием этих расширений, они должны быть загружены явно, с помощью ключа
-mили
–match. Так, например, если мы собираемся использовать критерии state, то мы должны явно указать это в строке правила:
-m stateлевее используемого критерия. Некоторые из этих критериев пока еще находятся в стадии разработки, а посему могут работать не всегда, однако, в большинстве случаев, они работают вполне устойчиво. Все отличие между явными и неявными критериями заключается только в том, что первые нужно подгружать явно, а вторые подгружаются автоматически.
6.4.3.1. Критерий Limit
Должен подгружаться явно ключом
-m limit. Прекрасно подходит для правил, производящих запись в системный журнал (logging) и т.п. Добавляя этот критерий, мы тем самым устанавливаем предельное число пакетов в единицу времени, которое способно пропустить правило. Можно использовать символ
!для инверсии, например
-m limit ! –limit 5/s. В этом случае подразумевается, что пакеты будут проходить правило только после превышения ограничения. Более наглядно этот критерий можно представить себе как некоторую емкость с выпускным отверстием, через которое проходит определенное число пакетов за единицу времени (т.е. скорость «вытекания»). Скорость «вытекания» как раз и определяет величина
–limit. Величина
–limit-burstзадает общий «объем емкости». А теперь представим себе правило
–limit 3/minute –limit-burst 5, тогда после поступления 5 пакетов (за очень короткий промежуток времени), емкость «наполнится» и каждый последующий пакет будет вызывать «переполнение» емкости, т.е. «срабатывание» критерия. Через 20 секунд «уровень» в емкости будет понижен (в соответствии с величиной –limit), таким образом она готова будет принять еще один пакет, не вызывая «переполнения» емкости, т.е. срабатывания критерия. Рассмотрим еще подробнее. 1. Предположим наличие правила, содержащего критерий -m limit –limit 5/second –limit-burst 10. Ключ limit-burst установил объем «емкости» равный 10-ти. Каждый пакет, который подпадает под указанное правило, направляется в эту емкость. 2. Допустим, в течение 1/1000 секунды, мы получили 10 пакетов, тогда с получением каждого пакета «уровень» в «емкости» будет возрастать: 1-2-3-4-5-6-7-8-9-10. 3. Емкость наполнилась. Теперь пакеты, подпадающие под наше ограничительное правило, больше не смогут попасть в эту «емкость» (там просто нет места), поэтому они (пакеты) пойдут дальше по набору правил, пока не будут явно восприняты одним из них, либо подвергнутся политике по-умолчанию. 4. Каждые 1/5 секунды «уровень» в воображаемой емкости снижается на 1, и так до тех пор, пока «емкость» не будет опустошена. Через секунду, после приема 10-ти пакетов «емкость» готова будет принять еще 5 пакетов. 5. Само собой разумеется, что «уровень» в «емкости» возрастает на 1 с каждым вновь пришедшим пакетом.
От переводчика:Очень долгое время мое понимание критериев
limitнаходилось на интуитивном уровне, пока
(снимаю шляпу в глубочайшем поклоне) не объяснил мне просто и понятно его суть. Постараюсь передать его пояснения:
1. Расширение -m limit подразумевает наличие ключей –limit и –limit-burst. Если вы не указываете эти ключи, то они принимают значение по-умолчанию.
2. Ключ –limit-burst – это максимальное значение счетчика пакетов, при котором срабатывает ограничение.
3. Ключ –limit – это скорость, с которой счетчик burst limit «откручивается назад».
Принцип, который просто реализуется на C и широко используется во многих алгоритмах-ограничителях.
Таблица 6-8. Ключи критерия limit
(Ключ – Пример – Описание)
Ключ:
–limit
Пример:
iptables -A INPUT -m limit –limit 3/hour
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
|
|