Хостинг картинок yapx.ru Проект HELPDONE.RU
Добро пожаловать!

Вернуться   Интернет-конференция > компьютерный форум > *.nix > Ubuntu, Debian
Войти через OpenID

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.02.2015, 22:25   #1
Eternity
Администратор
 
Аватар для Eternity
 
Регистрация: 21.11.2014
Сообщений: 2,965
Сказал(а) спасибо: 12
Поблагодарили 86 раз(а) в 80 сообщениях
Настроение: Daring
Репутация: 107
По умолчанию Защищаем Линукс

Как известно, в наше время компьютеры все чаще и чаще подвергаются сетевым атакам. Излюбленная цель хакеров - компьютеры под управлением ОС 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 работает и позволяет прохождение любых пакетов. Переходим к следующей стадии.
Eternity вне форума   Ответить с цитированием Вверх
 


Ваши права в разделе
Вы можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 16:41. Часовой пояс GMT +3.

 
 
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Рейтинг@Mail.ru