|
Модераторы: powerfox, ZeeLax |
|
Imple |
|
||||||||||||||||||||||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1546 Регистрация: 14.9.2007 Где: Алма-Ата Репутация: 18 Всего: 87 |
Защищаем свой компьютер, настраиваем маршрутизатор и NAT
Поговорим о теме, которая, думаю, будет интересна многим начинающим Linux-пользователям. Охватим следующие вопросы:
Что такое netfilter и iptables? Netfilter — межсетевой экран (брандмауэр), встроен в ядро Linux версий 2.4 и 2.6. Он выполняет следующие функции:
iptables - утилита для управления этим самым netfilter'ом. Что происходит с пакетом, попавшим в сетевую подсистему linux? Итак, у нас есть некая программа которая генерирует трафик, т.е. обращается к каким либо ресурсам в локальной сети, или сети Internet. Второй вариант - этот трафик к нам поступает извне - подключение удаленных пользователей к нашему почтовому серверу, хакерская атака на SSH и т.д. Либо, третий вариант: проходящий через нашу linux-машину трафик в Internet от компьютеров в локальной сети и обратно. В данном случае - наша linux машина выполняет функцию маршрутизатора. Во всех трех случаях, пакет проходит через netfilter. На данном этапе, мы можем выполнять множество операций с пакетом - отклонить или пропустить его, произвести подмену IP-адреса, для NAT'а, и многое другое. iptables (от IP-таблицы) управляет таблицами и цепочками, которые содержат определнные нами правила, под обработку которых попадет каждый пакет данных. Например, есть таблица NAT, в которой содержатся правила NAT'а. Есть таблица FILTER, в которой содержатся правила фильтрации трафика. Весь путь пакета выглядит так: 1. Пакет данных поступает в ядро (от другого компьютера в сети, запущенной у нас программы, и т.д.) 2. Происходят действия, называемые пре-маршрутизацией. Используется таблица NAT. 3. Происходит фильтрация - ряд правил, по которым пакет будет либо отброшен, либо пропущен дальше. Используется таблица FILTER. 4. Происходят действия, называемые пост-маршрутизацией. Используется таблица NAT. 5. Пакет передается в пункт назначения. Пункты 2 и 4, нам интересны если наша машина является маршрутизатором и мы используем NAT. Пункт 3 - интересен для фильтрации трафика. Теперь разложим все по полочкам. Основы iptables Как было сказанно - iptables управляет набором таблиц (table). В каждой таблице есть набор цепочек (chain). Каждая цепочка - упорядоченный набор правил обработки пакета. В каждой linux-системе существует четыре таблицы:
К примеру, эти условия подошли бы для цепочки INPUT таблицы FILTER:
А эти правила, для цепочки FORWARD таблицы FILTER:
Фильтрация трафика Что нам остается? Перевести наши умозаключения из человеческой формы, в язык iptables. Каждое правило добаляется запуском одной комманды, имеющей следующий вид: iptables -t таблица -A цепочка правило -j действие Разберем. Здесь "iptables" - бинарник. "-t" - от table, указание таблицы, с которой мы хотим работать. "-A" сокращение от append - добавить в такую то цепочку, такое то правило. "-j" - от jump, выполнить такое-то действие. Если вам нужна таблица FILTER, ее можно не указывать, так как она подразумевается по умолчанию. К примеру, добавим такие правила:
Разберем детально. Первыми тремя правилами, мы блокируем (-j DROP, отбросить) доступ к нам с (-s, от source, источник) 192.168.0.1 на tcp (-p tcp, от protocol, протокол) порты (--dport, от destination port, порт назначения) 25,80,110. Четвертым правилом, мы не указываем протокол, порты, но указываем сетевой интерфейс, по которому пришел пакет (-i eth1, от interface, интерфейс). Неважно что это, но если оно с eth1 и адреса 10.0.0.1 - оно должно быть отброшено. Пятым правилом, мы не задаем условий, мы просто разрешаем (-j ACCEPT, позволить) весь остальной трафик. Посмотреть на результаты наших усилий можно следующей коммандой:
Разберем и эту комманду. "-L" - вывести список правил. "-n" - не производить DNS-резолвинг. "--line-numbers" - вывести рядом с каждым правилом его порядковый номер. Вы спросите - а что если пакет дойдет до самого низа цепочки, и так не ответит ни одному из правил? Все очень просто - у каждой цепочки есть действие по умолчанию. ACCEPT, DROP, либо аналогичное. В выводе списка правил, вы можете его заметить (policy, рядом с названием цепочки). Управлять правилами в таблице тоже очень просто. Добавить некое правило в конец цепочки INPUT:
Вставить некое правило в позицию 3 цепочки INPUT:
Удалить правило номер 2 из цепочки INPUT:
Очистить целиком всю цепочку INPUT:
Внимательный читатель этой статьи и man-а, уже догодался как управлять маршрутизацией трафика. Все тоже самое, только уже не в цепочке INPUT, а в цепочке FORWARD. К примеру, создадим ряд правил:
Все просто, правда? Допустим, что в сетевой карте eth1 мы имеем подключенную локальную сеть, а в карте eth0 - интернет от провайдера. Первым правилом мы запрещаем проход с нашей сети (-s 192.168.2.0/24) трафика на сервер icq (-d login.icq.com) в сетевую карту eth0 (-o eth0, от output). Вторым и третим правилом, мы разрешаем проход трафика с нашей (-s 192.168.2.0/24) сети в интернет (-o eth0), и с интернета в нашу сеть (-d 192.168.2.0/24 -o eth1). В конце, мы запрещаем маршрутизацию любого другого трафика. Но, не забывайте, что для функционирования маршрутизации, система должна быть настроена должным образом, а именно должена быть включена функция IP-форвардинга:
Трансляция сетевых адресов (NAT) С фильтрацией и маршрутизацией разобрались. Приступим к NAT'у. Как и было сказано, таблица FILTER, содержащая цепочки INPUT,FORWARD,OUTPUT - для фильтрации трафика. Для NAT'а - мы прибегнем к одноименной таблице NAT, которая содержит цпочки PREROUTING, POSTROUTING и OUTPUT. Все, что нам нужно для NAT'а, мы будем делать в них. Суть не меняется, есть правила в цепочках, состоящие из уловия и действия. Цепочка POSTROUTING (пост-маршрутизация), служит для хранения правил, проход по которым будет выполнятся после процесса маршрутизации (выбора маршрута, прохода по цепочке FORWARD). Цепочка PREROUTING (пре-маршрутизация)- наоборот, до процесса маршрутизации. Для обычного NAT'а пользователей нам интересна цепочка POSTROUTING. Рассмотрим правило:
Во первых, мы указали, что хотим работать с таблицей NAT, так как по умолчанию используется таблица FILTER. Затем, в цепочку POSTROUTING мы добавили правило, что с пакетами из сети 192.168.0.0/24 мы хотим сделать некий MASQUERADE (макскарад). Маскарад пакетов в linux'е - самый простой и быстрый способ соорудить NAT. Когда компьютеры из сети 192.168.0.0/24 будут обращатся к ресурсам интернета, в пакетах будет меняться адрес источника, на адрес самого маршрутизатора, и наоборот. Реальный пример от начала до конца Есть некая организация, которая имеет linux-сервер, с установленным на нем web и почтовым сервером. Интерфейс eth0 - смотрит в интернет, eth1 - в локальную сеть. Доступ на POP3 должен быть только из локальной сети клиента - 192.168.1.0/24. При этом, у всех компьютеров кроме вахтового (192.168.1.59) должен быть доступ в интернет. Все, что нам нужно выполнить для получения этой цели, можно объеденить в один скрипт:
На последок На последок скажу как сохранить настройки iptables, чтобы они не потерялись после перезагрузки. Сохранение:
Восстановление:
Очень надеюсь, что данная статья окажется полезной. С удовольствием отвечу на любые вопросы © Imple, специально для любимого форума Винград. Ну и совсем напоследок: Это сообщение отредактировал(а) nickless - 22.8.2008, 02:56 -------------------- Не шалю, никого не трогаю, починяю сервер. |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
ZeeLax |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 4388 Регистрация: 20.8.2006 Где: Алма-Ата Репутация: 7 Всего: 88 |
О! Хвала Имплу! Наконец-то рассмотрен этот, всех и каждого интересующий, вопрос!
-------------------- Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none. — Doug Larson |
|||
|
||||
Imple |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1546 Регистрация: 14.9.2007 Где: Алма-Ата Репутация: 18 Всего: 87 |
Ну, не всех, и не каждого... Как я и сказал... статья будет интересна тем, кто первые дни в linux'е. Зачем она профи?
-------------------- Не шалю, никого не трогаю, починяю сервер. |
|||
|
||||
sergshabal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.1.2009 Репутация: нет Всего: нет |
Да для новичков действительно полезно. Imple спасибо.
Возник правда вопрос: iptables -A FORWARD -s 192.168.2.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.2.0/24 -o eth1 -j ACCEPT Правильно ли прокомментирован этот код? //с интернета в нашу сеть (-d 192.168.2.0/24 -o eth1) Если несложно втолкуйте мне еще разок. Спасибо |
|||
|
||||
Sibit |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 96 Регистрация: 6.10.2009 Где: NSK Репутация: нет Всего: 1 |
Спасибо за статью. Очень помогла.
Мне кажется, что в примере скрипта в 21-ой строке пропущен параметр -A |
|||
|
||||
Правила форума "Linux/UNIX: Администрирование" | |
|
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование *NIX систем | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |