Современная электронная библиотека ModernLib.Net

Iptables Tutorial 1.1.19

ModernLib.Net / Интернет / Andreasson Oskar / Iptables Tutorial 1.1.19 - Чтение (стр. 5)
Автор: Andreasson Oskar
Жанр: Интернет

 

 


       Описание: Устанавливается средняя скорость «освобождения емкости» за единицу времени. В качестве аргумента указывается число пакетов и время. Допустимыми считаются следующие единицы измерения времени: /second /minute /hour /day. По умолчанию принято значение 3 пакета в час, или 3/hour. Использование флага инверсии условия !в данном критерии недопустим.
 
       Ключ: –limit-burst
       Пример: iptables -A INPUT -m limit –limit-burst 5
       Описание: Устанавливает максимальное значение числа burst limitдля критерия limit. Это число увеличивается на единицу если получен пакет, подпадающий под действие данного правила, и при этом средняя скорость (задаваемая ключом –limit) поступления пакетов уже достигнута. Так происходит до тех пор, пока число burst limitне достигнет максимального значения, устанавливаемого ключом –limit-burst. После этого правило начинает пропускать пакеты со скоростью, задаваемой ключом –limit. Значение по-умолчанию принимается равным 5. Для демонстрации принципов работы данного критерия я написал сценарий Limit-match.txtС помощью этого сценария вы увидите как работает критерий limit, просто посылая ping-пакеты с различными временнЫми интервалами.

6.4.3.2. Критерий MAC

       MAC( Ethernet Media Access Control) критерий используется для проверки исходного MAC-адреса пакета. Расширение -m mac, на сегодняшний день, предоставляет единственный критерий, но возможно в будущем он будет расширен и станет более полезен.
       ПРИМЕЧАНИЕ: Модуль расширения должен подгружаться явно ключом -m mac. Упоминаю я об этом потому, что многие, забыв указать этот ключ, удивляются, почему не работает этот критерий.
 
       Таблица 6-9. Ключи критерия MAC
      (Ключ – Пример – Описание)
 
       Ключ: –mac-source
       Пример: iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01
       Описание: MACадрес сетевого узла, передавшего пакет. MACадрес должен указываться в форме XX:XX:XX:XX:XX:XX. Как и ранее, символ !используется для инверсии критерия, например –mac-source ! 00:00:00:00:00:01, что означает – «пакет с любого узла, кроме узла, который имеет MAC адрес 00:00:00:00:00:01» . Этот критерий имеет смысл только в цепочках PREROUTING, FORWARDи INPUTи нигде более.

6.4.3.3. Критерий Mark

      Критерий markпредоставляет возможность «пометить» пакеты специальным образом. Mark– специальное поле, которое существует только в области памяти ядра и связано с конкретным пакетом. Может использоваться в самых разнообразных целях, например, ограничение трафика и фильтрация. На сегодняшний день существует единственная возможность установки метки на пакет в Linux – это использование действия MARK. Поле markпредставляет собой беззнаковое целое число в диапазоне от 0 до 4294967296 для 32-битных систем.
       Таблица 6-10. Ключи критерия Mark
      (Ключ – Пример – Описание)
 
       Ключ: –mark
       Пример: iptables -t mangle -A INPUT -m mark –mark 1
       Описание: Критерий производит проверку пакетов, которые были предварительно «помечены». Метки устанавливаются действием MARK, которое мы будем рассматривать ниже. Все пакеты, проходящие через netfilter имеют специальное поле mark. Запомните, что нет никакой возможности передать состояние этого поля вместе с пакетом в сеть. Поле markявляется целым беззнаковым, таким образом можно создать не более 4294967296 различных меток. Допускается использовать маску с меткам. В данном случае критерий будет выглядеть подобным образом: –mark 1/1. Если указывается маска, то выполняется логическое AND метки и маски.

6.4.3.4. Критерий Multiport

      Расширение multiportпозволяет указывать в тексте правила несколько портов и диапазонов портов.
 
       ПРИМЕЧАНИЕ: Вы не сможете использовать стандартную проверку портов и расширение -m multiport(например –sport 1024:63353 -m multiport –dport 21,23,80) одновременно. Подобные правила будут просто отвергаться iptables.
 
       Таблица 6-11. Ключи критерия Multiport
      (Ключ – Пример – Описание)
 
       Ключ: –source-port
       Пример: iptables -A INPUT -p tcp -m multiport –source-port 22,53,80,110
       Описание: Служит для указания списка исходящих портов. С помощью данного критерия можно указать до 15 различных портов. Названия портов в списке должны отделяться друг от друга запятыми, пробелы в списке не допустимы. Данное расширение может использоваться только совместно с критериями -p tcpили -p udp. Главным образом используется как расширенная версия обычного критерия –source-port.
 
       Ключ: –destination-port
       Пример: iptables -A INPUT -p tcp -m multiport –destination-port 22,53,80,110
       Описание: Служит для указания списка входных портов. Формат задания аргументов полностью аналогичен -m multiport –source-port.
 
       Ключ: –port
       Пример: iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
       Описание: Данный критерий проверяет как исходящий так и входящий порт пакета. Формат аргументов аналогичен критерию –source-portи –destination-port. Обратите внимание на то что данный критерий проверяет порты обеих направлений, т.е. если вы пишете -m multiport –port 80, то под данный критерий подпадают пакеты, идущие с порта 80 на порт 80.

6.4.3.5. Критерий Owner

      Расширение ownerпредназначено для проверки «владельца» пакета. Изначально данное расширение было написано как пример демонстрации возможностей iptables. Допускается использовать этот критерий только в цепочке OUTPUT. Такое ограничение наложено потому, что на сегодняшний день нет реального механизма передачи информации о «владельце» по сети. Справедливости ради следует отметить, что для некоторых пакетов невозможно определить «владельца» в этой цепочке. К такого рода пакетам относятся различные ICMP responses. Поэтому не следует применять этот критерий к ICMP responsesпакетам.
 
       Таблица 6-12. Ключи критерия Owner
      (Ключ – Пример – Описание)
 
       Ключ: -uid-owner
       Пример: iptables -A OUTPUT -m owner –uid-owner 500
       Описание: Производится проверка «владельца» по User ID (UID). Подобного рода проверка может использоваться, к примеру, для блокировки выхода в Интернет отдельных пользователей.
 
       Ключ: –gid-owner
       Пример: iptables -A OUTPUT -m owner –gid-owner 0
       Описание: Производится проверка «владельца» пакета по Group ID (GID).
 
       Ключ: –pid-owner
       Пример: iptables -A OUTPUT -m owner –pid-owner 78
       Описание: Производится проверка «владельца» пакета по Process ID(PID). Этот критерий достаточно сложен в использовании, например, если мы хотим позволить передачу пакетов на HTTPпорт только от заданного демона, то нам потребуется написать небольшой сценарий, который получает PIDпроцесса (хотя бы через ps) и затем подставляет найденный PIDв правила. Пример использования критерия можно найти в Pid-owner.txt.
 
       Ключ: –sid-owner
       Пример: iptables -A OUTPUT -m owner –sid-owner 100
       Описание: Производится проверка Session IDпакета. Значение SIDнаследуются дочерними процессами от «родителя», так, например, все процессы HTTPDимеют один и тот же SID(примером таких процессов могут служить HTTPDApache и Roxen). Пример использования этого критерия можно найти в Sid-owner.txt. Этот сценарий можно запускать по времени для проверки наличия процесса HTTPD, и в случае отсутствия – перезапустить «упавший» процесс, после чего сбросить содержимое цепочки OUTPUTи ввести ее снова.

6.4.3.6. Критерий State

      Критерий stateиспользуется совместно с кодом трассировки соединений и позволяет нам получать информацию о признаке состояния соединения, что позволяет судить о состоянии соединения, причем даже для таких протоколов как ICMPи UDP. Данное расширение необходимо загружать явно, с помощью ключа -m state. Более подробно механизм определения состояния соединения обсуждается в разделе Механизм определения состояний.
 
       Таблица 6-13. Ключи критерия State
      (Ключ – Пример – Описание)
 
       Ключ: –state
       Пример: iptables -A INPUT -m state –state RELATED,ESTABLISHED
       Описание: Проверяется признак состояния соединения (state) На сегодняшний день можно указывать 4 состояния: INVALID, ESTABLISHED, NEWи RELATED. INVALIDподразумевает, что пакет связан с неизвестным потоком или соединением и, возможно содержит ошибку в данных или в заголовке. Состояние ESTABLISHEDуказывает на то, что пакет принадлежит уже установленному соединению через которое пакеты идут в обеих направлениях. Признак NEWподразумевает, что пакет открывает новое соединение или пакет принадлежит однонаправленному потоку. И наконец, признак RELATEDуказывает на то что пакет принадлежит уже существующему соединению, но при этом он открывает новое соединение Примером тому может служить передача данных по FTP, или выдача сообщения ICMPоб ошибке, которое связано с существующим TCPили UDPсоединением. Замечу, что признак NEWэто не то же самое, что установленный бит SYNв пакетах TCP, посредством которых открывается новое соединение, и, подобного рода пакеты, могут быть потенциально опасны в случае, когда для защиты сети вы используете один сетевой экран. Более подробно эта проблема рассматривается ниже в главе Механизм определения состояний.

6.4.3.7. Критерий TOS

      Критерий TOSпредназначен для проведения проверки битов поля TOS. TOS – Type Of Service– представляет собой 8-ми битовое, поле в заголовке IP-пакета. Модуль должен загружаться явно, ключом -m tos.
       От переводчика:Далее приводится описание поля TOS, взятое не из оригинала, поскольку оригинальное описание я нахожу несколько туманным.
      Данное поле служит для нужд маршрутизации пакета. Установка любого бита может привести к тому, что пакет будет обработан маршрутизатором не так как пакет со сброшенными битами TOS. Каждый бит поля TOSимеет свое значение. В пакете может быть установлен только один из битов этого поля, поэтому комбинации не допустимы. Каждый бит определяет тип сетевой службы:
       Минимальная задержкаИспользуется в ситуациях, когда время передачи пакета должно быть минимальным, т.е., если есть возможность, то маршрутизатор для такого пакета будет выбирать более скоростной канал. Например, если есть выбор между оптоволоконной линией и спутниковым каналом, то предпочтение будет отдано более скоростному оптоволокну.
       Максимальная пропускная способностьУказывает, что пакет должен быть переправлен через канал с максимальной пропускной способностью. Например спутниковые каналы, обладая большей задержкой имеют высокую пропускную способность.
       Максимальная надежностьВыбирается максимально надежный маршрут во избежание необходимости повторной передачи пакета. Примером могут служить PPP и SLIP соединения, которые по своей надежности уступают, к примеру, сетям X.25, поэтому, сетевой провайдер может предусмотреть специальный маршрут с повышенной надежностью.
       Минимальные затратыПрименяется в случаях, когда важно минимизировать затраты (в смысле деньги) на передачу данных. Например, при передаче через океан (на другой континент) аренда спутникового канала может оказаться дешевле, чем аренда оптоволоконного кабеля. Установка данного бита вполне может привести к тому, что пакет пойдет по более «дешевому» маршруту.
       Обычный сервисВ данной ситуации все биты поля TOS сброшены. Маршрутизация такого пакета полностью отдается на усмотрение провайдера.
 
       Таблица 6-14. Ключи критерия TOS
      (Ключ – Пример – Описание)
 
       Ключ: –tos
       Пример: iptables -A INPUT -p tcp -m tos –tos 0x16
       Описание: Данный критерий предназначен для проверки установленных битов TOS, которые описывались выше. Как правило поле используется для нужд маршрутизации, но вполне может быть использовано с целью «маркировки» пакетов для использования с iproute2 и дополнительной маршрутизации в linux. В качестве аргумента критерию может быть передано десятичное или шестнадцатиричное число, или мнемоническое описание бита, мнемоники и их числовое значение вы можете получить выполнив команду iptables -m tos -h. Ниже приводятся мнемоники и их значения. Minimize-Delay 16 (0x10) (Минимальная задержка), Maximize-Throughput 8 (0x08) (Максимальная пропускная способность), Maximize-Reliability 4 (0x04) (Максимальная надежность), Minimize-Cost 2 (0x02) (Минимальные затраты), Normal-Service 0 (0x00) (Обычный сервис).

6.4.3.8. Критерий TTL

       TTL(Time To Live) является числовым полем в IP заголовке. При прохождении очередного маршрутизатора, это число уменьшается на 1. Если число становится равным нулю, то отправителю пакета будет передано ICMPсообщение типа 11 с кодом 0 (TTL equals 0 during transit)или с кодом 1 (TTL equals 0 during reassembly). Для использования этого критерия необходимо явно загружать модуль ключом -m ttl.
       От переводчика:Опять обнаружилось некоторое несоответствие оригинального текста с действительностью, по крайней мере для iptables 1.2.6a, о которой собственно и идет речь, существует три различных критерия проверки поля TTL, это –m ttl –ttl-eq число, -m ttl –ttl-lt числои -m ttl –ttl-gt число. Назначение этих критериев понятно уже из их синтаксиса. Тем не менее, я все таки приведу перевод оригинала:
 
       Таблица 6-15. Ключи критерия TTL
      (Ключ – Пример – Описание)
 
       Ключ: –ttl
       Пример: iptables -A OUTPUT -m ttl –ttl 60
       Описание: Производит проверку поля TTLна равенство заданному значению. Данный критерий может быть использован при наладке локальной сети, например: для случаев, когда какая либо машина локальной сети не может подключиться к серверу в Интернете, или для поиска «троянов» и пр. Вобщем, области применения этого поля ограничиваются только вашей фантазией. Еще один пример: использование этого критерия может быть направлено на поиск машин с некачественной реализацией стека TCP/IPили с ошибками в конфигурации ОС.

6.4.4. Критерий «мусора» (Unclean match)

      Критерий uncleanне имеет дополнительных ключей и для его использования достаточно явно загрузить модуль. Будьте осторожны, данный модуль находится еще на стадии разработки и поэтому в некоторых ситуациях может работать некорректно. Данная проверка производится для вычленения пакетов, которые имеют расхождения с принятыми стандартами, это могут быть пакеты с поврежденным заголовком или с неверной контрольной суммой и пр., однако использование этой проверки может привести к разрыву и вполне корректного соединения.

6.5. Действия и переходы

      Действия и переходы сообщают правилу, что необходимо выполнить, если пакет соотвествует заданному критерию. Чаще всего употребляются действия ACCEPTи DROP. Однако, давайте кратко рассмотрим понятие переходов.
      Описание переходов в правилах выглядит точно так же как и описание действий, т.е. ставится ключ -jи указывается название цепочки правил, на которую выполняется переход. На переходы накладывается ряд ограничений, первое – цепочка, на которую выполняется переход, должна находиться в той же таблице, что и цепочка, из которой этот переход выполняется, второе – цепочка , являющаяся целью перехода должна быть создана до того как на нее будут выполняться переходы. Например, создадим цепочку tcp_packetsв таблице filter с помощью команды
       iptables -N tcp_packets
      Теперь мы можем выполнять переходы на эту цепочку подобно:
       iptables -A INPUT -p tcp -j tcp_packets
      Т.е. встретив пакет протокола tcp, iptables произведет переход на цепочку tcp_packetsи продолжит движение пакета по этой цепочке. Если пакет достиг конца цепочки то он будет возвращен в вызывающую цепочку (в нашем случае это цепочка INPUT) и движение пакета продолжится с правила, следующего за правилом, вызвавшем переход. Если к пакету во вложенной цепочке будет применено действие ACCEPT, то автоматически пакет будет считаться принятым и в вызывающей цепочке и уже не будет продолжать движение по вызывающим цепочкам. Однако пакет пойдет по другим цепочкам в других таблицах. Дополнительную информацию о порядке прохождения цепочек и таблиц вы сможете получить в главе Порядок прохождения таблиц и цепочек.
      Действие – это предопределенная команда, описывающая действие, которое необходимо выполнить, если пакет совпал с заданным критерием. Например, можно применить действие DROPили ACCEPTк пакету, в зависимости от наших нужд. Существует и ряд других действий, которые описываются ниже в этом разделе. В результате выполнения одних действий, пакет прекращает свое прохождение по цепочке, например DROPи ACCEPT, в результате других, после выполнения неких операций, продолжает проверку, например, LOG, в результате работы третьих даже видоизменяется, например DNATи SNAT, TTLи TOS, но так же продолжает продвижение по цепочке.

6.5.1. Действие ACCEPT

      Данная операция не имеет дополнительных ключей. Если над пакетом выполняется действие ACCEPT, то пакет прекращает движение по цепочке (и всем вызвавшим цепочкам, если текущая цепочка была вложенной) и считается ПРИНЯТЫМ (то бишь пропускается), тем не менее, пакет продолжит движение по цепочкам в других таблицах и может быть отвергнут там. Действие задается с помощью ключа -j ACCEPT.

6.5.2. Действие DNAT

       DNAT(Destination Network Address Translation) используется для преобразования адреса места назначения в IP заголовке пакета. Если пакет подпадает под критерий правила, выполняющего DNAT, то этот пакет, и все последующие пакеты из этого же потока, будут подвергнуты преобразованию адреса назначения и переданы на требуемое устройство, хост или сеть. Данное действие может, к примеру, успешно использоваться для предоставления доступа к вашему web-серверу, находящемуся в локальной сети, и не имеющему реального IP адреса. Для этого вы строите правило, которое перехватывает пакеты, идущие на HTTPпорт брандмауэра и выполняя DNATпередаете их на локальный адрес web-сервера. Для этого действия так же можно указать диапазон адресов, тогда выбор адреса назначения для каждого нового потока будет производиться случайнам образом.
      Действие DNATможет выполняться только в цепочках PREROUTINGи OUTPUTтаблицы nat, и во вложенных под-цепочках. Важно запомнить, что вложенные подцепочки, реализующие DNATне должны вызываться из других цепочек, кроме PREROUTINGи OUTPUT.
 
       Таблица 6-16. Действие DNAT
      (Ключ – Пример – Описание)
 
       Ключ: –to-destination
       Пример: iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 –dport 80 -j DNAT –to-destination 192.168.1.1-192.168.1.10
       Описание: Ключ –to-destinationуказывает, какой IP адрес должен быть подставлен в качестве адреса места назначения. В выше приведенном примере во всех пакетах, пришедших на адрес 15.45.23.67, адрес назначения будет изменен на один из диапазона от 192.168.1.1 до 192.168.1.10. Как уже указывалось выше, все пакеты из одного потока будут направляться на один и тот же адрес, а для каждого нового потока будет выбираться один из адресов в указанном диапазоне случайным образом. Можно также определить единственный IP адрес. Можно дополнительно указать порт или диапазон портов, на который (которые) будет перенаправлен траффик. Для этого после ip адреса через двоеточие укажите порт, например –to-destination 192.168.1.1:80, а указание диапазона портов выглядит так: –to-destination 192.168.1.1:80-100. Как вы можете видеть, синтаксис действий DNATи SNATво многом схож. Не забывайте, что указание портов допускается только при работе с протоколом TCP или UDP, при наличии опции –protocolв критерии.
 
      Действие DNATдостаточно сложно в использовании и требует дополнительного пояснения. Рассмотрим простой пример. У нас есть WEB сервер и мы хотим разрешить доступ к нему из Интернет. Мы имеем только один реальный IP адрес, а WEB-сервер расположен в локальной сети. Реальный IP адрес $INET_IPназначен брандмауэру, HTTP сервер имеет локальный адрес $HTTP_IPи, наконец брандмауэр имеет локальный алрес $LAN_IP. Для начала добавим простое правило в цепочку PREROUTINGтаблицы nat:
       iptables -t nat -A PREROUTING –dst $INET_IP -p tcp –dport 80 -j DNAT \ –to-destination $HTTP_IP
      В соответствии с этим правилом, все пакеты, поступающие на 80-й порт адреса $INET_IP перенаправляются на наш внутренний WEB-сервер. Если теперь обратиться к WEB-серверу из Интернет, то все будет работать прекрасно. Но что же произойдет, если попробовать соединиться с ним из локальной сети? Соединение просто не установится. Давайте посмотрим как маршрутизируются пакеты, идущие из Интернет на наш WEB-сервер. Для простоты изложения примем адрес клиента в Интернет равным $EXT_BOX.
      1. Пакет покидает клиентский узел с адресом $EXT_BOXи направляется на $INET_IP
      2. Пакет приходит на наш брандмауэр.
      3. Брандмауэр, в соответствии с вышеприведенным правилом, подменяет адрес назначения и передает его дальше, в другие цепочки.
      4. Пакет передается на $HTTP_IP.
      Пакет поступает на HTTPсервер и сервер передает ответ через брандмауэр, если в таблице маршрутизации он обозначен как шлюз для $EXT_BOX. Как правило, он назначается шлюзом по-умолчанию для HTTPсервера.
      5. Брандмауэр производит обратную подстановку адреса в пакете, теперь все выглядит так, как будто бы пакет был сформирован на брандмауэре.
      6. Пакет передается клиенту $EXT_BOX.
      7. А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX.
      1. Пакет покидает $LAN_BOX.
      2. Поступает на брандмауэр.
      3. Производится подстановка адреса назначения, однако адрес отправителя не подменяется, т.е. исходный адрес остается в пакете без изменения.
      4. Пакет покидает брандмауэр и отправляется на HTTP сервер.
       5. HTTPсервер, готовясь к отправке ответа, обнаруживает, что клиент находится в локальной сети (поскольку пакет запроса содержал оригинальный IP адрес, который теперь превратился в адрес назначения) и поэтому отправляет пакет непосредственно на $LAN_BOX.
      6. Пакет поступает на $LAN_BOX. Клиент «путается», поскольку ответ пришел не с того узла, на который отправлялся запрос. Поэтому клиент «сбрасывает» пакет ответа и продолжает ждать «настоящий» ответ.
 
      Проблема решается довольно просто с помощью SNAT. Ниже приводится правило, которое выполняет эту функцию. Это правило вынуждает HTTP сервер передавать ответы на наш брандмауэр, которые затем будут переданы клиенту.
       iptables -t nat -A POSTROUTING -p tcp –dst $HTTP_IP –dport 80 -j SNAT \ –to-source $LAN_IP
      Запомните, цепочка POSTROUTINGобрабатывается самой последней и к этому моменту пакет уже прошел процедуру преобразования DNAT, поэтому критерий строится на базе адреса назначения $HTTP_IP.
      Если вы думаете, что на этом можно остановиться, то вы ошибаетесь! Представим себе ситуацию, когда в качестве клиента выступает сам брандмауэр. Тогда, к сожалению, пакеты будут передаваться на локальный порт с номером 80 самого брандмауэра, а не на $HTTP_IP. Чтобы разрешить и эту проблему, добавим правило:
       iptables -t nat -A OUTPUT –dst $INET_IP -p tcp –dport 80 -j DNAT \ –to-destination $HTTP_IP
      Теперь никаких проблем, с доступом к нашему WEB-серверу, уже не должно возникать.
 
       ПРИМЕЧАНИЕ: Каждый должен понять, что эти правила предназначены только лишь для корректной обработки адресации пакетов. В дополнение к этим правилам вам может потребоваться написать дополнительные правила для цепочки FORWARDтаблицы filter. Не забудьте при этом, что пакеты уже прошли цепочку PREROUTINGи поэтому их адреса назначения уже изменены действием DNAT.

6.5.3. Действие DROP

      Данное действие просто «сбрасывает» пакет и iptables «забывает» о его существовании. «Сброшенные» пакеты прекращают свое движение полностью, т.е. они не передаются в другие таблицы, как это происходит в случае с действием ACCEPT. Следует помнить, что данное действие может иметь негативные последствия, поскольку может оставлять незакрытые «мертвые» сокеты как на стороне сервера, так и на стороне клиента, наилучшим способом защиты будет использование действия REJECTособенно при защите от сканирования портов.

6.5.4. Действие LOG

       LOG– действие, которое служит для журналирования отдельных пакетов и событий. В журнал могут заноситься заголовки IP пакетов и другая интересующая вас информация. Информация из журнала может быть затем прочитана с помощью dmesg или syslogd либо с помощью других программ. Превосходное средство для отладки ваших правил. Неплохо было бы на период отладки правил вместо действия DROPиспользовать действие LOG, чтобы до конца убедиться, что ваш брандмауэр работает безупречно. Обратите ваше внимание так же на действие ULOG, которое наверняка заинтересует вас своими возможностями, поскольку позволяет выполнять запись журналируемой информации не в системный журнал, а в базу данных MySQL и т.п..
 
       ПРИМЕЧАНИЕ:Обратите внимание – если у вас имеются проблемы с записью в системный журнал, то это проблемы не iptables или netfilter, а syslogd. За информацией по конфигурированию syslogd обращайтесь к man syslog.conf.
 
      Действие LOGимеет пять ключей, которые перечислены ниже.
 
       Таблица 6-17. Ключи действия LOG
      (Ключ – Пример – Описание)
 
       Ключ: –log-level
       Пример: iptables -A FORWARD -p tcp -j LOG –log-level debug
       Описание: Используется для задания уровня журналирования (log level). Полный список уровней вы найдете в руководстве (man) по syslog.conf. Обычно, можно задать следующие уровни: debug, info, notice, warning, warn, err, error, crit, alert, emergи panic. Ключевое слово errorозначает то же самое, что и err, warnwarningи panicemerg. Важно: в последних трех парах слов не следует использовать error, warnи panic. Приоритет определяет различия в том как будут заноситься сообщения в журнал. Все сообщения заносятся в журнал средствами ядра. Если вы установите строку kern.=info /var/log/iptablesв файле syslog.conf, то все ваши сообщения из iptables, использующие уровень info, будут заноситься в файл /var/log/iptables Однако, в этот файл попадут и другие сообщения, поступающие из других подсистем, которые используют уровень info. За дополнительной информацией по syslog и syslog.conf я рекомендую обращаться к manpages и HOWTO.
 
       Ключ: –log-prefix
       Пример: iptables -A INPUT -p tcp -j LOG –log-prefix «INPUT packets»
       Описание: Ключ задает текст (префикс), которым будут предваряться все сообщения iptables. Сообщения со специфичным префиксом затем легко можно найти, к примеру, с помощью grep. Префикс может содержать до 29 символов, включая и пробелы.
 
       Ключ: –log-tcp-sequence
       Пример: iptables -A INPUT -p tcp -j LOG –log-tcp-sequence
       Описание: Этот ключ позволяет заносить в журнал номер TCP Sequenceпакета. Номер TCP Sequenceидентифицирует каждый пакет в потоке и определяет порядок «сборки» потока. Этот ключ потенциально опасен для безопасности системы, если системный журнал разрешает доступ «НА ЧТЕНИЕ» всем пользователям. Как и любой другой журнал, содержащий сообщения от iptables.
 
       Ключ: –log-tcp-options
       Пример: iptables -A FORWARD -p tcp -j LOG –log-tcp-options
       Описание: Этот ключ позволяет заносить в системный журнал различные сведения из заголовка TCP пакета. Такая возможность может быть полезна при отладке. Этот ключ не имеет дополнительных параметров, как и большинство ключей действия LOG.

  • Страницы:
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12