Iptables Tutorial 1.1.19 Посвящения Об авторе Как читать этот документ Предварительные условия Типографские соглашения Глава 1. Введение 1.1. Почему было написано данное руководство 1.2. Как он был написан 1.3. Термины, используемые в данном документе Глава 2. Подготовка 2.1. Где взять iptables 2.2. Настройка ядра 2.3. Установка пакета 2.3.1. Сборка пакета 2.3.2. Установка в Red Hat 7.1 Глава 3. Порядок прохождения таблиц и цепочек 3.1. Общие положения 3.2. Таблица Mangle 3.3. Таблица Nat 3.4. Таблица Filter Глава 4. Механизм определения состояний 4.1. Введение 4.2. Таблица трассировщика 4.3. Состояния в пространстве пользователя 4.4. TCP соединения 4.5. UDP соединения 4.6. ICMP соединения 4.7. Поведение по-умолчанию 4.8. Трассировка комплексных протоколов Глава 5. Сохранение и восстановление больших наборов правил 5.1. Плюсы 5.2. И минусы 5.3. iptables-save 5.4. iptables-restore Глава 6. Как строить правила 6.1. Основы 6.2. Таблицы 6.3. Команды 6.4. Критерии 6.4.1. Общие критерии 6.4.2. Неявные критерии 6.4.2.1. TCP критерии 6.4.2.2. UDP критерии 6.4.2.3. ICMP критерии 6.4.3. Явные критерии 6.4.3.1. Критерий Limit 6.4.3.2. Критерий MAC 6.4.3.3. Критерий Mark 6.4.3.4. Критерий Multiport 6.4.3.5. Критерий Owner 6.4.3.6. Критерий State 6.4.3.7. Критерий TOS 6.4.3.8. Критерий TTL 6.4.4. Критерий «мусора» (Unclean match) 6.5. Действия и переходы 6.5.1. Действие ACCEPT 6.5.2. Действие DNAT 6.5.3. Действие DROP 6.5.4. Действие LOG 6.5.5. Действие MARK 6.5.6. Действие MASQUERADE 6.5.7. Действие MIRROR 6.5.8. Действие QUEUE 6.5.9. Действие REDIRECT 6.5.10. Действие REJECT 6.5.11. Действие RETURN 6.5.12. Действие SNAT 6.5.13. Действие TOS 6.5.14. Действие TTL 6.5.15. Действие ULOG Глава 7. Файл rc.firewall 7.1. Пример rc.firewall 7.2. Описание сценария rc.firewall 7.2.1. Конфигурация 7.2.2. Загрузка дополнительных модулей 7.2.3. Настройка /proc 7.2.4. Размещение правил по разным цепочкам 7.2.5. Установка политик по-умолчанию 7.2.6. Создание пользовательских цепочек в таблице filter 7.2.6.1. Цепочка bad_tcp_packets 7.2.6.2. Цепочка allowed 7.2.6.3. Цепочка для TCP 7.2.6.4. Цепочка для UDP 7.2.6.5. Цепочка для ICMP 7.2.7. Цепочка INPUT 7.2.8. Цепочка FORWARD 7.2.9. Цепочка OUTPUT 7.2.10. Цепочка PREROUTING таблицы nat 7.2.11. Запуск SNAT и цепочка POSTROUTING Глава 8. Примеры сценариев 8.1. Структура файла rc.firewall.txt 8.1.1. Структура 8.2. rc.firewall.txt 8.3. rc.DMZ.firewall.txt 8.4. rc.DHCP.firewall.txt 8.5. rc.UTIN.firewall.txt 8.6. rc.test-iptables.txt 8.7. rc.flush-iptables.txt 8.8. Limit-match.txt 8.9. Pid-owner.txt 8.10. Sid-owner.txt 8.11. Ttl-inc.txt 8.12. Iptables-save ruleset Приложение A. Детальное описание специальных команд A.1. Вывод списка правил A.2. Изменение и очистка ваших таблиц Приложение B. Общие проблемы и вопросы B.1. Проблемы загрузки модулей B.2. Пакеты со статусом NEW и со сброшенным битом SYN B.3. SYN/ACK – пакеты и пакеты со статусом NEW B.4. Поставщики услуг Internet, использующие зарезервированные IP-адреса B.5. Как разрешить прохождение DHCP запросов через iptables B.6. Проблемы mIRC DCC Приложение C. Типы ICMP Приложение D. Ссылки на другие ресурсы Приложение E. Благодарности Приложение F. Хронология Приложение G. GNU Free Documentation License 0. PREAMBLE 1. APPLICABILITY AND DEFINITIONS 2. VERBATIM COPYING 3. COPYING IN QUANTITY 4. MODIFICATIONS 5. COMBINING DOCUMENTS 6. COLLECTIONS OF DOCUMENTS 7. AGGREGATION WITH INDEPENDENT WORKS 8. TRANSLATION 9. TERMINATION 10. FUTURE REVISIONS OF THIS LICENSE How to use this License for your documents Приложение H. GNU General Public License 0. Preamble 1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 2. How to Apply These Terms to Your New Programs Приложение I. Примеры сценариев I.1. Пример rc.firewall I.2. Пример rc.DMZ.firewall I.3. Пример rc.UTIN.firewall I.4. Пример rc.DHCP.firewall I.5. Пример rc.flush-iptables I.6. Пример rc.test-iptables
1.2. Как он был написан Я консультировался с Марком Бучером (Marc Boucher) и другими членами команды разработчиков netfilter. Пользуясь случаем, выражаю огромную признательность за их помощь в создании данного руководства, которое изначально было написано для boingworld.com, а теперь доступно на моем персональном сайте frozentux.net. С помощью этого документа вы пройдете процесс настройки шаг за шагом и, надеюсь, что к концу изучения его вы будете знать о пакете iptables значительно больше. Большая часть материала базируется на файле rc.firewall.txt, так как я считаю, что рассмотрение примера – лучший способ изучения iptables. Я пройду по основным цепочкам правил в порядке их следования. Это несколько усложняет изучение, зато изложение становится логичнее. И, всякий раз, когда у вас возникнут затруднения, вы можете обращаться к этому руководству.