Обеспечение безопасности локальной сети

Вид материалаДокументы

Содержание


2. Программно-аппаратные средства
3. Организационные средства
Перечень методов, которые можно использовать для обеспечения безопасности локальной сети.
Брандмауэры (firewalls)
По способу применения брандмауэры можно разделить на две большие группы.
Программные и программно-аппаратные брандмауэры
Разновидности брандмауэров (в зависимости от того, на каком уровне модели OSI осуществляется фильтрация)
Дополнительные свойства брандмауэров
Основные угрозы, от которых может защитить брандмауэр
Разработка внутренней политики безопасности
Далее рассмотрим более подробно назначение каждой из таблиц и цепочек.
Построение правил
Критерии построения правил
2. TCP и UDP критерии
3. ICMP критерии
4. Явные критерии (модули расширения для которых надо подгружать явно, с помощью ключа –m или --match; они не подгружаются автом
Критерий Multiport
Критерий State
Критерий Limit
Возможные действия над пакетом, подпадающим под определенное правило
...
Полное содержание
Подобный материал:
  1   2   3   4

Обеспечение безопасности локальной сети

В целом средства обеспечения защиты компьютерной информации в зависимости от способа реализации можно разделить на группы:


1. Программные средства включают программы для фильтрации трафика, системы обнаружения вторжений, антивирусные программы, средства анализа защищености (такие, как сетевые сканеры и анализаторы пакетов), программы для идентификации пользователей и контроля доступа, шифрования информации и т.д. Многие современные программные средства представляют собой целые комплексы, сочетающие несколько перечисленных функций.

К этой категории также можно отнести заплаты к операционным системам и приложениям, которые закрывают бреши в системе безопасности.


2. Программно-аппаратные средства

К ним, относятся, например, аппаратные брандмауэры и системы обнаружения вторжений; устройства для чтения смарт-карт для аутентификации при загрузке; биометрические устройства аутентификации, например сканеры отпечатков пальцев или сетчатки глаза; USB-устройства для хранения ключей безопасности и т.д.


3. Организационные средства – складываются из организационно-технических (подготовка помещений с компьютерами, прокладка кабельной системы с учетом требований ограничения доступа к ней и др.) и организационно-правовых (национальные законодательства и правила работы, устанавливаемые руководством конкретного предприятия).


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


Перечень методов, которые можно использовать для обеспечения безопасности локальной сети.


1) Защита от вирусов, червей и троянских программ с помощью специализированного ПО

2) Своевременная установка обновлений для операционной системы и прикладных программ

3) Периодическая проверка сети с помощью сканера уязвимостей и устранение найденных уязвимостей

4) Меры по обеспечению безопасности, специфичные для беспроводной сети

5) Установка и настройка брандмауэра (firewall)

6) Установка и настройка IDS (системы обнаружения вторжений)

7) Настройка аутентификации, прав доступа и групповых политик безопасности (для Windows-систем)

8) Ведение лог-файлов (аудит)

9) В случае необходимости – шифрование трафика, применение ЭЦП, технологии VPN

10) Запрет загрузки с внешних носителей/отключение USB портов

11) Применение функции Port Security на коммутаторах

12) Использование VLANs (Virtual Local Networks)

13) Органичение физического доступа к сетевому оборудованию; использование паролей при доступе к консоли управления оборудованием

14) Резервное копирование особо важных данных/применение дублирующего сервера


Брандмауэры (firewalls)

Брандмауэром называют программное или программно-аппаратное средство, выполняющее анализ и фильтрацию трафика, для обеспечения безопасности сети или отдельного компьютера. Также встречаются общепринятые названия межсетевой экран и firewall.


Прежде чем термин “firewall” был принят экспертами по сетевой безопасности, его как профессиональный термин употребляли строители. Брандмауэром называется огнеупорный барьер, разде­ляющий отдельные блоки в многоквартирном доме. При попадании огня в один блок брандмауэр предотвращает его распространение в другие блоки - в сущности, позволяет локализовать проблему. Межсетевой экран работает примерно так же: он помогает избежать риска повреж­дения систем или данных в локальной сети из-за проблем, вы­званных взаимодействием с другими сетями. Межсетевой экран осуществляет это, пропуская разрешенный трафик и блокируя остальной.


Общий принцип функционирования брандмауэра следующий. В брандмауэре задается набор правил. Каждое правило содержит в себе ряд критериев, а также действие, которое необходимо выполнить с пакетом, если он соответствует этим критериям. Правила выполняются по порядку сверху вниз. Если пакет не подпадает под критерии, указанные в первом правиле – он передается второму правилу, и так далее до конца. Если пакет не попал под действие ни одного из правил, то к нему применяется т.н. правило по умолчанию («все разрешено» или «все запрещено», выбор конкретного варианта отпределяется политикой безопасности организации).


По способу применения брандмауэры можно разделить на две большие группы.


Брандмауэры на основе хоста. Они устанавливаются на отдельном компьютере и защищают его как от внешних угроз (исходящих из Интернета), так и от внутренних угроз (исходящих из локальной сети). Такие брандмауэры также называют персональными.


Сетевые брандмауэры. Они устанавливаются на шлюзе локальной сети и защищают ее от внешних угроз (исходящих из Интернета). Также могут контролировать и разграничивать доступ пользователей локальной сети в Интернет. Могут применяться для разграничения внутренних подсетей корпоративной сети организации.


Сетевые брандмауэры, как правило, дороже персональных брандмауэров, что объясняется их большей сложностью и расширенной функциональностью. Сетевые брандмауэры предназначены для работы с гораздо большими объемами трафика и поддерживают больше протоколов и одновременных соединений, чем персональный брандмауэр. В большинстве из них используются сложные инструменты управления: удаленное администрирование, централизованное администрирование нескольких брандмауэров, ведение отчетов и создание журналов.

Компьютер, на котором установлен такой брандмауэр, должен иметь 2 или более сетевых интерфейсов.





Программные и программно-аппаратные брандмауэры


Программно-аппаратный брандмауэр приобретается как единый модуль: аппаратное обеспечение с предварительно установленным программным обеспечением брандмауэра. Большинство аппаратных брандмауэров работает на базе специализированных операционных систем, хотя на некоторых устройствах брандмауэры работают под Linux или BSD.


Конфигурирование аппаратного брандмауэра и управление им может осуществляться через Web-интерфейс, либо через специальную утилиту, поставляемую вместе с брандмауэром. Также возможен консольный доступ через telnet или ssh.


Аппаратные брандмауэры имеют и достоинства, и недостатки. Использование оптимизированных операционных систем без каких-либо лишних сервисов позволяет обеспечить высокую производительность и безопасность. Однако аппаратные брандмауэры сложнее модернизировать. Кроме того, программно-аппаратный брандмауэр будет стоить дороже, чем его программный аналог.


Программный брандмауэр - это продукт, устанавливаемый на базе одной или нескольких различных операционных систем и аппаратных платформ.


Как и аппаратный брандмауэр, программный брандмауэр имеет свои достоинства и недостатки. Важное преимущество состоит в возможности легко модернизировать аппаратную базу. Можно дополнительно установить новый процессор или больший объем памяти, что обойдется относительно недорого. Программный брандмауэр стоит дешевле аппаратного; во многих случаях можно скачать демонстрационную версию программного брандмауэра и испытать его перед покупкой. Недостатки программных брандмауэров заключаются в том, что они обычно работают медленнее, чем аппаратные, и поскольку они работают на базе стандартных операционных систем, эти операционные системы без правильно заданных настроек безопасности могут быть более уязвимыми для атак, чем специализированные операционные системы.


Разновидности брандмауэров (в зависимости от того, на каком уровне модели OSI осуществляется фильтрация)


1) Пакетный фильтр


Первым типом брандмауэров стал так называемый пакетный фильтр (packet filter), или фильтрующий маршрутизатор, принимающий решение о пропуске или отбрасывании пакета на основе анализа заголовка сетевого и транспортного уровня.

Фильтрация может осуществляться по IP-адресам (источника и назначения), по используемому протоколу (TCP, UDP, ICMP), по номерам портов (источника и назначения) либо типу сообщения ICMP, по параметрам соединения протокола TCP (флаги, номера Sequence Number и Acknowledgement Number), по MAC адресу источника пакета.

Кроме того, важны не только сведения, содержащиеся в самом пакете, — име­ет значение и интерфейс, по которому он прибывает. Например, если фильтр получает пакет по интерфейсу, подключенному к внешней сети, а адрес от­правителя соответствует локальной сети, этот пакет должен быть отброшен фильтром, поскольку такое сочетание для обычных пакетов невозможно.


2) Шлюз уровня приложений


Пакетному фильтру приходится принимать решения только на основе информа­ции в заголовке сетевого и транспортного уровня. К сожалению, иногда этого бывает недостаточно. Например, пакетный фильтр может определить, что пакет предназначен для какого-то протокола, скажем, FTP. Но он не в состоянии распознать, какой это запрос - get (получить) или put (передать). При этом не исключено, что запросы одного типа окажутся вполне допустимыми, а запросы другого типа для данного узла должны будут блокироваться. Другой пример – передача на корпоративный Web-сервер компании HTTP-запроса из Интернета, который может содержать злонамеренные данные (например, код " onclick="return false">
Шлюз уровня приложений (application gateway), или proxy-сервер (application proxy) - это брандмауэр, который перехватывает вызовы клиентских приложений и передает их удаленным сервисам, выступая в роли посредника между ними. Преимущество такого подхода состоит в том, что ргоху-сервер может фильтровать все входящие и исходящие пакеты на прикладном уровне модели OSI. Например, администратор может запретить конкретному пользователю скачивать файлы на конкретный компьютер с помощью FTP или разрешить пользователю размещать файлы через FTP на том же самом компьютере. Это возможно потому, что, в зависимости от того, получает ли пользователь файлы с сервера или размещает их там, используются различные команды в заголовке прикладного уровня. Также возможно разграничивать доступ пользователей локальной сети к внешним Web-ресурсам на основе доменного имени сайта (которое передается в http-заголовке), ограничивать доступ к данным определенного типа (.mp3, .avi, .exe…) и так далее.

Кроме того, шлюз уровня приложений способен выполнять аутентификацию пользователей по именам, что позволяет эффективно разграничить доступ в Интернет.


    3) Многоуровневый брандмауэр



    Он сочетает в себе пакетный фильтр и шлюз приложений, проверяя содержимое принимаемых пакетов на трех уровнях модели OSI: сетевом, транспортном и прикладном. Брандмауэры такого типа очень распространены на сегодняшний день.

    Дополнительные свойства брандмауэров



В результате конкуренции среди производителей межсетевых экранов и их попы­ток усовершенствовать свой продукт брандмауэры наделялись новыми свойствами. Поскольку межсетевой экран стоит на границе сети и служит как бы воротами во внешний мир, он должен выполнять множество задач (в том числе и не связанных с обеспечением безопасности). Вот некоторые из дополнительных функций, которые имеются в современных брандмауэрах:

  • трансляция сетевых адресов (NAT)

Технология, позволяющая клиентам локальной сети иметь доступ в Интернет с использованием одного внешнегоIP-адреса.

  • кэширование (caching)

Во многих случаях пользователи постоянно посещают одни и те же Web-сайты и просматривают одни и те же страницы. Web-кэширование предоставляет способ уменьшения сетевого трафика благодаря сохранению постоянно запрашиваемых данных в кэше брандмауэра.

  • антивирусная проверка и фильтрация контента



  • публикация серверов (перенаправление портов, port mapping)

Предположим, что в сети имеется Web-сервер с внутренним IP-адресом, который необходимо сделать доступным извне. Можно сделать это с помощью т.н. port mapping. При этом брандмауэр настраивается таким образом, что запросы, поступающие на его внешний интерфейс и на 80 порт, переадресовываются внутреннему серверу. Аналогично можно публиковать и другие сервера (почтовые, баз данных и проч). Иногда перенаправление портов применяется для повышения эффективности работы p2p приложений типа Bittorrent.

  • VPN сервер

Некоторые брандмауэры способны функционировать как VPN-сервера, предоставляя удаленным пользователям возможность иметь защищенный доступ к ресурсам локальной сети, или объединяя две локальные сети между собой.

  • Системы обнаружения/предотвращения вторжений (IDS/IPS)

Многие брандмауэры имеют встроенную систему IDS/IPS, способную распознать попытку атаки определенного типа и выполнить заранее заданные действия.


Основные угрозы, от которых может защитить брандмауэр


Межсетевой экран не гарантирует абсолютную защиту сети, и его нельзя рассматривать в качестве единственного средства обеспечения безопасности. Необхо­димо понимать, как именно выполняет брандмауэр свои функции по защите сети. В равной степени важно знать, от чего он не может обезопасить. В общем случае правильно сконструированный межсетевой экран способен защитить сеть от следующих угроз:


1. Сканирование портов

Для предотвращения сканирования портов на клиентских машинах – необходимо запрещать все входящие соединения с ними (блокировать пакеты с установленным флагом SYN при отсутствии флага ACK).


Для предотвращения сканирования портов на серверах – необходимо запрещать входящие соединения со всеми портами, кроме тех, которые используются для нормальной работы сервера и (возможно) его удаленного администрирования: 80 – для Web сервера, 53 – для DNS и т.д.


Данные действия должны осуществляться на сетевом брандмауэре (защищающем всю сеть или сегмент сети).


2. Взлом уязвимых сервисов.


Если сетевой сервис содержит уязвимость, взломщик может использовать ее для проведения атаки. Брандмауэр помогает справиться с этой проблемой, закрывая неиспользуемые порты в системе (либо предупреждая пользователя о попытке доступа на тот или иной порт).


3. Несанкционированный доступ к приложениям

В качестве примера рассмотрим доступ злоумышленника к приложениям, предназначенным для удаленного управления (SSH, Radmin). Как правило, инструменты удалённого управления системой используют различные методы аутентификации по паролю или ключу. Однако этого может быть недостаточно (злоумышленник может использовать Brute force или какую-либо уязвимость). Брандмауэр понизит вероятность несанкционированного доступа к сервису до минимума, ограничив список адресов, с которых разрешено инициировать соединения с данным приложением.


4. Неконтролируемый доступ пользователей локальной сети в Интернет

На брандмауэре может выполняться разграничение доступа пользователей в Интернет по различным критериям: по имени пользователя или группе, к которой принадлежит пользователь, по используемому прикладному протоколу (HTTP, FTP, почтовые протоколы и т.д.), по доменным именам Web-сайтов, типам содержимого и проч. Контроль доступа в Интернет помогает более эффективно организовать рабочее время сотрудников и минимизировать расход трафика. Кроме того, это повышает общий уровень безопасности сети: уменьшается угроза заражения пользовательского компьютера вирусом или троянским приложением в результате посещения злонамеренного ресурса или закачки злонамеренного файла.


5. Троянские приложения


Троянское приложение может устанавливаться на зараженном компьютере как сервис и ожидать запроса на установку соединения на какой-либо порт от своей клиентской части (как правило, в целях получения команд от злоумышленника). Для защиты необходимо закрыть возможность установления соединения на все порты, кроме разрешенных (а в случае клиентского компьютера – вообще на все порты). В этом случае троянская программа никогда не дождётся запроса на соединение от клиентской части.


В некоторых случаях троянская программа на зараженном компьютере работает как клиент: она иницирует соединение изнутри локальной сети с серверной частью, расположенной на компьютере злоумышленника. Для защиты можно заблокировать брандмауэром исходящие соединения на все порты, кроме используемых (HTTP, FTP, DNS и т.д.). Однако ничто не мешает серверной части троянской программы принимать запросы на соединение, используя один из таких портов. Кроме того, многие троянские приложения передают ворованную информацию, пересылая ее на почту или обращаясь на Web сайт злоумышленника. В этом случае защититься с помощью брандмауэра не удастся.


5. (D)DoS атаки

На брандмауэре необходимо сконфигурировать функции анти-спуфинга, которые заключаются в том, чтобы блокировать исходящий из сети трафик, если адрес источника не является внутренним адресом сети, т.е. был заменен. Такая фильтрация не позволит злоумышленнику проводить DoS-атаки на чужие сети с использованием подмены адреса источника.

Также брандмауэр может распознавать злонамеренную сетевую активность (например, большое количество однотипных ICMP, UDP пакетов, запросов TCP SYN) и блокировать их. Для этого в состав брандмауэра должен входить специальный модуль IDS (Intrusion Detection System).


6. Некоторые атаки на прикладном уровне


Брандмауэр может распознавать вирусы, черви, троянские приложения и другие вредоносные коды. Кроме того, брандмауэр может блокировать загрузку Web страниц, содержащих нежела­тельный контент; блокировать загрузку файлов определенных типов (например .exe, .mp3), и т.д.


Хороший брандмауэр является эффективным средством нейтрализации многих типов угроз, но ни один брандмауэр не может гарантировать стопроцентную безопасность сети. Хакеры всегда имеют возможность создать бреши в системе безопасности сети, например с помощью социальной инженерии, которая позволяет обойти защиту, обеспечиваемую брандмауэром. Поэтому важен настоящий многоуровневый подход к безопасности, в том числе обучение пользователей, разработка политик и правил для сотрудников компании и т.д.


Разработка внутренней политики безопасности

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

  • доступ по протоколу HTTP к внешним Web-серверам (плюс к этому, возможно, развертывание Web-сервера внутри сети компании, с обеспечением доступа к нему извне);
  • доступ по протоколам SMTP, POP3 к внешним email серверам (или развертывание почтового сервера внутри сети компании, с обеспечением доступа к нему извне);
  • доступ по протоколу FTP для обмена файлами (например, исследовательская группа может обмениваться файлами с коллегами, либо клиенты могут иметь анонимный FTP-доступ к файлам или документации);
  • удаленный доступ к определенным компьютерам сети (например, для администрирования) посредством служб Radmin, Remote Desktop и тому подобных.

Далее необходимо определить политику по умолчанию. Есть два основных варианта политики по умолчанию:
  • разрешить все действия, не запрещенные специально;
  • запретить все действия, не разрешенные специально.


Наиболее безопасной и более удобной является вторая стратегия. Почему? Рассуждая логически, гораздо проще определить небольшой список разрешенных действий, чем намно­го больший перечень запрещенных. Кроме того, поскольку новые протоколы и службы разрабатываются достаточно часто, не придется постоянно добавлять новые правила, чтобы предотвратить появление до­полнительных проблем. Ведь может случиться так, что необходимость внесения дополнительных запретов станет ясна лишь тогда, когда в результате несанкционированного доступа сети будет нанесен значительный ущерб.


Сетевой брандмауэр Iptables


Брандмауэр Iptables представляет собой пакетный фильтр, входящий в состав ОС Linux. Данный брандмауэр является свободно распространяемым (некоммерческим); его конфигурирование осуществляется путем редактирования файла со сценарием (добавления в него переменных и правил).


Iptables может работать как на локальном компьютере, так и на шлюзе локальной сети. В последнем случае с его помощью можно также выполнять NAT преобразования адресов.


На основе анализа информации, содержащейся в заголовке пакета, брандмауэр принимает ре­шение, следует ли переслать пакет на узел назначения, удалить пакет, не предпринимая никаких дополнительных действий, либо вернуть передающему компьютеру сообщение об ошибке. Правила, определяющие судьбу пакетов, учитывают IP-адреса источника и назначения, номера портов TCP и UDP, флаги TCP-соединений, типы ICMP-сообщений и т.д.


Брандмауэр iptables выделяет 3 типа пакетов:
  • входящие (поступают на внешний или внутренний интерфейс и предназначены программному обеспечению на шлюзе);
  • исходящие (пакеты, сгенерированные программным обеспечением шлюза и отправляемые через внешний или внутренний интерфейс в сеть);
  • транзитные (проходящие через шлюз – с внешнего интерфейса на внутренний (из внешней сети в локальную), или с внутреннего на внешний (из локальной сети во внешнюю).


Процессы фильтрации входящих, исходящих и транзитных данных управляются различными наборами правил, которые принято называть цепочками.


Каждая цепочка представляет собой набор правил, заданных явным образом, и политику по умолчанию. Пакет проверяется на соответствие каждому из явно указанных правил; правила выбираются из списка последовательно до тех пор, пока не будет обнаружено соответствие пакета одному из них. Если пакет не удовлетворяет ни одному из явно заданных правил, предпринимаются действия, определенные политикой по умолчанию.





Порядок прохождения таблиц и цепочек в брандмауэре iptables

Все цепочки (то есть наборы правил) в iptables распределены по таблицам. Существует 3 таблицы:

Mangle - обычно эта таблица используется для внесения изменений в заголовок пакета. В нее входят следующие цепочки:
  • PREROUTING
  • POSTROUTING
  • INPUT
  • OUTPUT
  • FORWARD

Nat - эта таблица используется для трансляции сетевых адресов. В нее входят следующие цепочки:
  • PREROUTING
  • POSTROUTING
  • OUTPUT

Filter – в этой таблице производится основная фильтрация трафика. В нее входят следующие цепочки:
  • INPUT
  • OUTPUT
  • FORWARD

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


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


Шаг

Таблица

Цепочка

Примечание

1







Кабель

2







Входной сетевой интерфейс (например, eth0)

3

mangle

PREROUTING

Здесь может производиться внесение изменений в заголовок пакета.

4

nat

PREROUTING

Преобразование адресов (Destination Network Address Translation).

5

mangle

INPUT

Здесь может производиться внесение изменений в заголовок пакета.

6

filter

INPUT

Здесь производится фильтрация входящего трафика.

7







Локальный процесс/приложение (т.е., программа-сервер или программа-клиент).


Рассмотрим порядок движения пакета, исходящего от локального процесса/приложения. Пакет, сгенерированный приложением, сперва обрабатывается брандмауэром, проходя ряд таблиц и цепочек, а затем передается в сеть (или уничтожается). Порядок следования пакета приводится ниже:


Шаг

Таблица

Цепочка

Примечание

1







Локальный процесс (т.е., программа-сервер или программа-клиент).

2

Mangle

OUTPUT

Здесь может производиться внесение изменений в заголовок пакета.

4

Nat

OUTPUT

Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра.

5

Filter

OUTPUT

Здесь фильтруется исходящий траффик.

6

Mangle

POSTROUTING

Здесь может производиться внесение изменений в заголовок пакета.

7

Nat

POSTROUTING

Здесь выполняется Source Network Address Translation.

8







Сетевой интерфейс (например, eth0)

9







Кабель



Рассмотрим порядок движения транзитного пакета. , исходящего от локального процесса/приложения. Когда пакет приходит на брандмауэр, то он сперва попадает на сетевую карту, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается на другой интерфейс (или уничтожается). Порядок следования пакета приводится ниже:


Шаг

Таблица

Цепочка

Примечание

1







Кабель (например Интернет)

2







Сетевой интерфейс (например, eth0)

3

mangle

PREROUTING

Здесь может производиться внесение изменений в заголовок пакета.

4

nat

PREROUTING

Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке.

6

mangle

FORWARD

Здесь может производиться внесение изменений в заголовок пакета.

7

Filter

FORWARD

В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь.

8

mangle

POSTROUTING

Здесь может производиться внесение изменений в заголовок пакета.

9

nat

POSTROUTING

Эта цепочка предназначена в первую очередь для Source Network Address Translation. Здесь же выполняется и маскарадинг (Masquerading).

10







Выходной сетевой интерфейс (например, eth1).

11







Кабель (пусть будет LAN).


Как видно из таблицы, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен.

Рисунок ниже более наглядно демонстрирует три различных варианта прохождения пакетов:





Далее рассмотрим более подробно назначение каждой из таблиц и цепочек.

1) Таблица Mangle

Как уже упоминалось выше, эта таблица предназначена, главным образом для внесения изменений в заголовки пакетов (mangle - искажать, изменять), например, для изменения параметра TTL (Time To Live). Применяется она достаточно редко, поэтому в этом курсе рассмотрена не будет. За дополнительной информацией можно обратиться к соответствующей документации.


2) Таблица Nat


Эта таблица используется для выполнения преобразований сетевых адресов NAT (Network Address Translation). Для этой таблицы характерны действия:
  • DNAT
  • SNAT
  • MASQUERADE

Действие DNAT (Destination Network Address Translation) производит преобразование адресов назначения в заголовках пакетов. Другими словами, этим действием производится перенаправление пакетов на другие адреса, отличные от указанных в заголовках пакетов. DNAT часто применяется тогда, когда необходимо переправить пакет, пришедший на внешний интерфейс брандмауэра и на определенный порт, внутреннему серверу сети (порт маппинг).

SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия можно скрыть структуру локальной сети, а заодно и разделить единственный внешний IP адрес между компьютерами локальной сети для выхода в Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически производит прямое и обратное преобразование адресов, тем самым давая возможность выполнять подключение к серверам в Интернете с компьютеров в локальной сети.

Маскировка (MASQUERADE) применяется в тех же целях, что и SNAT. Отличие состоит в том, что MASQUERADE каждый раз запрашивает адрес внешнего интерфейса, в то время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда подключение к Интернету осуществляется через DHCP.


3)Таблица Filter

Как следует из названия, в этой таблице должны содержаться наборы правил для выполнения фильтрации пакетов. Пакеты могут пропускаться далее, либо отвергаться (действия ACCEPT, DROP, REJECT), в зависимости от их содержимого.


Построение правил

Каждое правило - это строка, содержащая в себе критерии, определяющие, подпадает ли пакет под заданное правило, и действие, которое необходимо выполнить в случае выполнения критерия. В общем виде правила записываются примерно так:


iptables [-t table] command [match] [target/jump]


1) Если в правило не включается спецификатор [-t table], то по умолчанию предполагается использование таблицы filter, если же предполагается использование другой таблицы, то это требуется указать явно. Спецификатор таблицы так же можно указывать в любом месте строки правила, однако более или менее стандартом считается указание таблицы в начале правила.


2) Далее, непосредственно за именем таблицы, должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п.

Список команд:

-A (add) добавить правило в конец
-I (insert) вставить правило в начало или вставить под указанным номером
-D (delete) удалить правило с указанным номером
-L (list) показать правила (указанной цепочки)

-P назначить политику по умолчанию.

Политика по умолчанию определяет действие, применяемое к пакетам, не попавшим под действие ни одного из правил в цепочке. В качестве политики по умолчанию допускается использовать DROP и ACCEPT.


3) Раздел match задает критерии проверки, по которым определяется подпадает ли пакет под действие этого правила или нет. Здесь можно указать самые разные критерии - IP-адрес источника пакета или сети, IP-адрес места назначения, порт, протокол, сетевой интерфейс и т.д. Существует множество разнообразных критериев.


4) Раздел target указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую цепочку правил, "сбросить" пакет и забыть про него, выдать на источник сообщение об ошибке и т.п.


Критерии построения правил

1. Общие критерии

-p, --protocol

iptables -A INPUT -p tcp

Этот критерий используется для указания типа протокола – например, TCP, UDP и ICMP. Можно передавать ключевое слово ALL. В качестве протокола допускается передавать число - номер протокола, так например, протоколу ICMP соответствует число 1, TCP - 6 и UDP – 17.


-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

IP-адрес(а) получателя. Имеет синтаксис схожий с критерием --source, за исключением того, что подразумевает адрес места назначения. Точно так же может определять как единственный IP-адрес, так и диапазон адресов. Символ ! используется для логической инверсии критерия.


-i, --in-interface

iptables -A INPUT -i eth0

Интерфейс, с которого был получен пакет. Использование этого критерия допускается только в цепочках INPUT, FORWARD и PREROUTING.


-o, --out-interface

iptables -A FORWARD -o eth0

Задает имя выходного интерфейса. Этот критерий допускается использовать только в цепочках OUTPUT, FORWARD и POSTROUTING.


-f, --fragment

iptables -A INPUT –f

Правило распространяется на все фрагменты фрагментированного пакета, кроме первого, сделано это потому, что нет возможности определить исходящий/входящий порт для фрагмента пакета, а для ICMP-пакетов определить их тип. С помощью фрагментированных пакетов могут производиться атаки на брандмауэр, так как фрагменты пакетов могут не отлавливаться другими правилами.

2. TCP и UDP критерии


Этот набор критериев работает только с TCP или UDP пакетами. Чтобы использовать их, потребуется в правилах указывать тип протокола --protocol tcp. Иногда нужно указать –m tcp

--sport, --source-port

iptables -A INPUT -p tcp --sport 22

Исходный порт, с которого был отправлен пакет. В качестве параметра может указываться номер порта или название сетевой службы. При указании номеров портов правила отрабатывают несколько быстрее, однако это менее удобно при разборе листингов скриптов.

Номера портов могут задаваться в виде интервала из минимального и максимального номеров, например --source-port 22:80. Как и раньше, символ ! используется для инверсии. Так критерий --source-port ! 22 подразумевает любой порт, кроме 22. Инверсия может применяться и к диапазону портов, например --source-port ! 22:80.


--dport, --destination-port

iptables -A INPUT -p tcp --dport 22

Порт или диапазон портов, на который адресован пакет. Аргументы задаются в том же формате, что и для --source-port.


--tcp-flags (только для TCP)

iptables -p tcp --tcp-flags SYN,FIN,ACK SYN

Определяет маску и флаги tcp-пакета. Пакет считается удовлетворяющим критерию, если из перечисленных флагов в первом списке в единичное состояние установлены флаги из второго списка. Так для вышеуказанного примера под критерий подпадают пакеты, у которых флаг SYN установлен, а флаги FIN и ACK сброшены. В качестве аргументов критерия могут выступать зарезервированные идентификаторы ALL и NONE. ALL - значит ВСЕ флаги и NONE - НИ ОДИН флаг. Так, критерий --tcp-flags ALL NONE означает -- "все флаги в пакете должны быть сброшены". Как и ранее, символ ! означает инверсию критерия. Важно: имена флагов в каждом списке должны разделяться запятыми, пробелы служат для разделения списков.


--syn (только для TCP)

iptables -p tcp --syn

Критерий --syn является по сути реликтом, перекочевавшим из ipchains (версия пакетного фильтра, предшествующая iptables). Критерию соответствуют пакеты с установленным флагом SYN и сброшенными флагами ACK и FIN. Этот критерий аналогичен критерию --tcp-flags SYN,ACK,FIN SYN. Такие пакеты используются для открытия соединения TCP. Заблокировав такие пакеты, можно надежно заблокировать все входящие запросы на соединение.

3. ICMP критерии


Этот протокол используется, как правило, для передачи сообщений об ошибках. Главное свойство этого протокола заключается в типе заголовка, который содержит информацию о том, что это за пакет. Например, когда мы пытаемся соединиться с недоступным хостом, то мы получим в ответ сообщение ICMP host unreachable.

Существует только один специфичный критерий для ICMP пакетов:

--icmp-type

iptables -A INPUT -p icmp --icmp-type 8

Тип сообщения ICMP определяется номером или именем.