ПОСТРОЙ СЕБЕ САМ: ViTLS (vitls@beshtau.ru) Спецвыпуск Xakep, номер #024, стр. 024-062-3 В результате выполнения этого правила на защищаемой машине получим вот такую картину после сканирования портов: ------------------------------------------------------------------- [vitls@zeelog:~]# nmap 192.168.1.1 Starting nmap V. 2.54BETA37 (www.insecure.org/nmap/) Interesting ports on 192.168.1.1 (192.168.1.1): (The 1597 ports scanned but not shown below are in state: closed) Port State Service 21/tcp open ftp 25/tcp open smtp 53/tcp filtered domain 110/tcp open pop-3 Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds [vitls@zeelog:~]# ------------------------------------------------------------------- КУЕМ ЦЕПИ Как я уже успел упомянуть, правила могут быть объединены в цепочки. В твоей системе защиты может быть несколько независимых друг от друга цепей. Про стандартные цепочки ты уже знаешь, а любая нестандартная цепочка, то есть твоя собственная, может взаимодействовать со стандартной. Например, можно принять пакет из цепочки INPUT, проверить его на соответствие какому-то критерию отбора и отправить на твою собственную цепочку для дальнейшей экзекуции. Основываясь на этих возможностях, можно построить очень сложную систему распределения и фильтрации входящего к тебе или исходящего от тебя трафика. Самое главное заключается в мудрости построения последовательности правил в цепочке. Пакетный фильтр просматривает правила исключительно в том порядке, в которым ты их задаешь. Он тупой и исполнительный. Если ты в первом правиле скажешь, что такой-то пакет отправить на уничтожение, а затем вторым правилом скажешь, что такой же пакет принимать для пересылки, в ответ на это я тебе отвечу, что до второго правила твой пакет просто не доживет, и вся работа пойдет псу под хвост. Так что всегда анализируй то, что уже написал. КАК ЭТО ДЕЛАЕТСЯ? Цепочки ты можешь вводить либо напрямую из командной оболочки (shell), в качестве которой у тебя могут быть sh, bash, ash, zsh, tcsh или что-то еще твое любимое. Я все примеры буду приводить для стандартного sh, так как он есть практически в любом дистрибутиве. Вводя правила непосредственно из shell, ты должен их набирать последовательно и быть осторожным, любая ошибка - и тебе придется вводить: iptables -F имя_цепочки, чтобы ее очистить. Для устранения этих проблем лучше написать сценарий, который можно будет легко отредактировать в любой момент и выполнить только тогда, когда он будет полностью готов. Сгодится любой текстовый редактор. Все равно текст будет обычный, посему навороты, вроде word, на фиг не нужны. Для примера я наведу разборки с простым сценарием. ПРОСТОЙ СЦЕНАРИЙ Задача - с помощью iptables закрыть на ppp0 все порты с 1 по 1024 и оставить открытыми только некоторые, например, 53 и 80. Чтобы кто-то из внешней сети мог воспользоваться только нашим dns сервером и www сервером. Внутренности файла сценария выглядят примерно так: |