> man operating_systems
Защищаем Линукс - файрвол за 10 минут.
на Среда, 19 Январь 2005, 16:42
добавил: Антон Малащенко aka Rygoravich список авторов печатать элемент контента создать pdf-файл  элемент контента
категория Статьи > Unix
комментарии: 0
просмотров: 9988

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

Благодарности.


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


Вступление.


Как известно, в наше время компьютеры все чаще и чаще подвергаются сетевым атакам. Излюбленная цель хакеров - компьютеры под управлением ОС Windows, которые сравнительно несложно заразить вирусом или трояном. Однако пользователи юникс-систем также не всегда остаются в стороне. Причина большинства взломов компьютеров с установленной ОС Linux - неправильно настроенные сервисы. Встречается такое достаточно часто, поскольку во многих дистрибутивах сервисы по умолчанию автоматически запускаются после установки. Что делать? Ответ прост - настроить файрвол.

Когда я столкнулся с необходимостью настроить файрвол, то прежде всего, конечно, стал обшаривать интернет в поисках документации. Результат был ошеломляющим - за исключением нескольких статей об общих принципах работы и замечательного (но требующего некоторого количества специальный знаний, очень большого и потому - отнимающего много времени на его изучение) мануала Iptables Tutorial русскоязычной документации нет вообще. Что же делать домашним пользователям, которым недосуг тратить долгие часы своего времени на чтение документации, но которые, тем не менее, хотят чувствовать себя защищенными? Не найдя ответа на этот вопрос я все же изучил вышеупомянутое руководство, проконсультировлся в почтовых листах с более опытными пользователями и, дабы облегчить жизнь тем, кому еще придется столкнуться с этим, пишу данную статью. Следует учесть, что она ориентирована на домашних пользователей - администраторамсерверов настоятельно рекомендуется изучить Iptables Tutorial.

Немного об устройстве файрвола в Линукс. Значительная часть его встроена в ядро и в подавляющем большинстве сборок от популярных дистрибьюторов подключается в виде модулей. Для управления файрволом в современных ядрах (ветки 2.4 и 2.6) используется утилита iptables. При включенном файрволе каждый пакет данных последовательнопроходит через несколько таблиц. Рассматривать их все мы не будем, нас интересует только таблица filter, в которой, собственно и происходит фильтрация трафика. Итак, таблица filter имеет три встроенные цепочки - INPUT, OUTPUT и FORWARD, предназначенные соответственно, для входящих, исходящих и перенаправляемых пакетов. Для каждой цепочки мы можем создавать свои правила. Все пакеты, присылаемые из сети и предназначенныедля вашего компьютера последовательнопроходят через правила в цепочке INPUT до тех пор, пока одно из правил не определит, принять пакет или заблокировать. Существуют и другие действия, например, запись в лог, но здесь мы их рассматривать не будем. Пакеты, посылаемые вашим компьютером аналогичным образом проходят по цепочке OUTPUT. И наконец, пакеты, проходящие через ваш компьютер из одной сети в другую используют цепочку FORWARD.


Часть I - Базовая настройка.


Итак, начнем. Прежде всего - настройка файрвола - привелегия исключительно root-пользователя. Предполагается, что все команды вы будете исполнять с правами root (хотя команду ping можно запускать от любого пользователя). Зарегистрируйтеь в системе как root командой "su" и включите файрвол. Для этого загрузите соответствующий модуль ядра:

# modprobe iptable_filter

Реально эта команда загружает еще и модуль ip_tables, который необходим для iptable_filter. Теперь посмотрите текущие установки файрвола командой iptables-save:

# iptables-save

Вы увидите примерно следующее:

# Generated by iptables-save v1.2.8 on Fri Jan 14 05:27:49 2005
*filter
:INPUT ACCEPT [3:128]
:FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [1:48]
COMMIT
# Completed on Fri Jan 14 05:27:49 2005

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

# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP

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

# ping -c 5 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- localhost ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms

Как мы видим, ни один из отправленных пакетов не достиг цели. Это, конечно, самый безопасный вариант, но зачем нам сеть, которой нельзя воспользоваться? Создадим правила, позволяющие отправлять пакеты в сеть и принимать их.

# iptables -A INPUT -i lo -j ACCEPT

Рассмотрим эту команду подробнее. Итак, ключ -A (от слова add) означает, что мы добавляем новое правило в цепочку, название которой следует после этого ключа. В данном случае это цепочка INPUT, т.е. правило будет действовать для всех пакетов, направляющихся на ваш компьютер. Ключ -i определяет сетевой интерфейс, с которого пришел пакет. В вышеупомянутом правиле это lo, соответствующий локальному интерфейсу обратной петли. Ключ -j задает действие, которое применяется ко всем пакетам, соответствующим перечисленным критериям, в нашем примере - ACCEPT, т.е. разрешить. Таким образом одной этой командой мы разрешаем получение всех пакетов с заданного интерфейса. Однако отправить их пока что не получится - так как это действие запрещено, а точнее, не разрешено. Разрешаем:

# iptables -A OUTPUT -o lo -j ACCEPT

Несложно догадаться, что здесь мы добавляем новое правило в цепочку OUTPUT (как вы помните, через нее проходят пакеты, отправляемые с нашего компьютера). Обратите внимание, что здесь вместо -i lo используется -o lo - это значит, что мы определяем сетевой интерфейс, на который будут отправлены пакеты. Теперь можно проверить работу интерфейса обратной петли командой ping:

# ping -c 5 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.226 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.123 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.125 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.124 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.123 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.123/0.144/0.226/0.041 ms

Итак, интерфейс loopback работает и позволяет прохождение любых пакетов. Переходим к следующей стадии.

индекс статьи
страница 1 - текущая : страница без заголовка
страница 2 : страница без заголовка
страница 3 : страница без заголовка
страница 4 : страница без заголовка


© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.