- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF139:IPCop
Материал из Linuxformat.
(викификация, оформление, иллюстрация) |
(→Просверлить дырку) |
||
(4 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
: '''Роутеры''' Создаем точку доступа в Интернет и защищаем свою новую сеть | : '''Роутеры''' Создаем точку доступа в Интернет и защищаем свою новую сеть | ||
- | ==Роутеры: Свой личный== | + | ==Роутеры: Свой личный I== |
: '''Часть 1''' Создайте мощный интернет-брандмауэр и роутер из старого ненужного компьютера – и обезопасите вашу сеть. | : '''Часть 1''' Создайте мощный интернет-брандмауэр и роутер из старого ненужного компьютера – и обезопасите вашу сеть. | ||
Строка 13: | Строка 13: | ||
===Выберите дистрибутив=== | ===Выберите дистрибутив=== | ||
- | {{Врезка|Содержание=LXF139_72_1.jpg|300px Графический интерфейс установщика спартанский, но работает. Вы почти наверняка захотите включить DHCP-сервер.|Ширина=300px}} | + | {{Врезка|Содержание=[[Изображение:LXF139_72_1.jpg|300px]] Графический интерфейс установщика спартанский, но работает. Вы почти наверняка захотите включить DHCP-сервер.|Ширина=300px}} |
Существует немало дистрибутивов для использования на брандмауэрах, и часть из них основана на FreeBSD, а не на Linux. Дистрибутивы можно разделить на две группы: те, что обеспечивают определенный брандмауэр/маршрутизатор и те, что предоставляют более полный интернет-шлюз, в том числе такие вещи, как печать, почта, файловые и даже web-серверы. На данном уроке мы сконцентрируемся на чистом шлюзе, более гибкой и мощной альтернативе готовых модемов/маршрутизаторов, обеспечивающей большую безопасность другим услугам. Для этого мы выбрали дистрибутив IPCop (http://www.ipcop.org). Мы используем стабильный релиз 1.4.21, но любители приключений могут взять версию 1.9. | Существует немало дистрибутивов для использования на брандмауэрах, и часть из них основана на FreeBSD, а не на Linux. Дистрибутивы можно разделить на две группы: те, что обеспечивают определенный брандмауэр/маршрутизатор и те, что предоставляют более полный интернет-шлюз, в том числе такие вещи, как печать, почта, файловые и даже web-серверы. На данном уроке мы сконцентрируемся на чистом шлюзе, более гибкой и мощной альтернативе готовых модемов/маршрутизаторов, обеспечивающей большую безопасность другим услугам. Для этого мы выбрали дистрибутив IPCop (http://www.ipcop.org). Мы используем стабильный релиз 1.4.21, но любители приключений могут взять версию 1.9. | ||
Строка 23: | Строка 23: | ||
===Установка=== | ===Установка=== | ||
- | {{Врезка|Содержание=LXF139_73_1.jpg|300px После первой загрузки зайдите в раздел обновлений на web-интерфейсе.|Ширина=300px}} | + | {{Врезка|Содержание=[[Изображение:LXF139_73_1.jpg|300px]] После первой загрузки зайдите в раздел обновлений на web-интерфейсе.|Ширина=300px}} |
Загрузитесь с CD IPCop для входа в текстовый режим. Если вы привыкли к графическим установщикам в стиле OpenSUSE, Mandriva и Ubuntu, вы ощутите легкий шок – перемещаться надо клавишами курсора, варианты выбирать клавишей пробела и нажимать '''Enter''' для продолжения. Обратите внимание на предупреждение на ранней стадии – установщик сотрет информацию на вашем жестком диске. Вы не можете сделать двойную загрузку маршрутизатора с Windows: это однозадачная машина. Отсутствие опций разбиения на разделы или выбора пакетов означает, что перед установкой делать особо нечего. Выберите '''Пропустить''' [Skip] на экране восстановления. Следующий шаг – выбрать интерфейс Ethernet для «зеленой» сети; другой интерфейс(ы) будет установлен позже. Обычно лучше дать установщику самому выбрать подходящий интерфейс, но есть и опции для ручной настройки, если у вас сетевой адаптер с нетипичными настройками. | Загрузитесь с CD IPCop для входа в текстовый режим. Если вы привыкли к графическим установщикам в стиле OpenSUSE, Mandriva и Ubuntu, вы ощутите легкий шок – перемещаться надо клавишами курсора, варианты выбирать клавишей пробела и нажимать '''Enter''' для продолжения. Обратите внимание на предупреждение на ранней стадии – установщик сотрет информацию на вашем жестком диске. Вы не можете сделать двойную загрузку маршрутизатора с Windows: это однозадачная машина. Отсутствие опций разбиения на разделы или выбора пакетов означает, что перед установкой делать особо нечего. Выберите '''Пропустить''' [Skip] на экране восстановления. Следующий шаг – выбрать интерфейс Ethernet для «зеленой» сети; другой интерфейс(ы) будет установлен позже. Обычно лучше дать установщику самому выбрать подходящий интерфейс, но есть и опции для ручной настройки, если у вас сетевой адаптер с нетипичными настройками. | ||
Строка 47: | Строка 47: | ||
===Изучим свойства=== | ===Изучим свойства=== | ||
- | {{Врезка|Содержание=LXF139_74_1.jpg|300px Переадресация портов — базовая функция роутера, легко настраиваемая с IPCop. Можно также настроить переадресацию на другой номер порта.|Ширина=300px}} | + | {{Врезка|Содержание=[[Изображение:LXF139_74_1.jpg|300px]] Переадресация портов — базовая функция роутера, легко настраиваемая с IPCop. Можно также настроить переадресацию на другой номер порта.|Ширина=300px}} |
{{Врезка|left|Заголовок=Скорая помощь|Содержание=Web-интерфейс имеет много вариантов настройки. Очень легко внести изменения, получив хорошие рабочие параметры, и новым изменением нечаянно все сломать. При экспериментах почаще делайте резервное копирование, чтобы иметь возможность отката.|Ширина=200px}} | {{Врезка|left|Заголовок=Скорая помощь|Содержание=Web-интерфейс имеет много вариантов настройки. Очень легко внести изменения, получив хорошие рабочие параметры, и новым изменением нечаянно все сломать. При экспериментах почаще делайте резервное копирование, чтобы иметь возможность отката.|Ширина=200px}} | ||
Строка 67: | Строка 67: | ||
===Просверлить дырку=== | ===Просверлить дырку=== | ||
- | {{Врезка|Содержание=LXF139_75_1.jpg|300px Web-интерфейс выдает множество статистики по состоянию вашей системы и сетевых соединений.|Ширина=300px}} | + | {{Врезка|Содержание=[[Изображение:LXF139_75_1.jpg|300px]] Web-интерфейс выдает множество статистики по состоянию вашей системы и сетевых соединений.|Ширина=300px}} |
Иногда ваш web-сервер должен общаться с машинами из зеленой сети – например, рассылаать резервные копии таблицы ''MySQL''. IPCop имеет функцию под названием '''DMZ pinhole''', обеспечивающую ограничение доступа с одного компьютера в «оранжевой» сети к одному порту на одном компьютере из «зеленой» сети. Это устанавливается в '''Firewall > DMZ Pinholes''', но использовать данную опцию следует только при необходимости, потому что она частично нарушает безопасность, обеспечиваемую DMZ. | Иногда ваш web-сервер должен общаться с машинами из зеленой сети – например, рассылаать резервные копии таблицы ''MySQL''. IPCop имеет функцию под названием '''DMZ pinhole''', обеспечивающую ограничение доступа с одного компьютера в «оранжевой» сети к одному порту на одном компьютере из «зеленой» сети. Это устанавливается в '''Firewall > DMZ Pinholes''', но использовать данную опцию следует только при необходимости, потому что она частично нарушает безопасность, обеспечиваемую DMZ. | ||
Строка 92: | Строка 92: | ||
* '''SmoothWall''' (http://www.smoothwall.org) Солидный дистрибутив маршрутизатора в коммерческой и свободной версиях. IPCop первоначально был основан на SmoothWall. | * '''SmoothWall''' (http://www.smoothwall.org) Солидный дистрибутив маршрутизатора в коммерческой и свободной версиях. IPCop первоначально был основан на SmoothWall. | ||
* '''Zentyal''' (http://www.zentyal.com) Ранее назывался Ebox. Основан на дистрибутиве Ubuntu и необычен наличием рабочего стола для настройки; большинство альтернатив – обезглавленные коробки с web-интерфейсом. | * '''Zentyal''' (http://www.zentyal.com) Ранее назывался Ebox. Основан на дистрибутиве Ubuntu и необычен наличием рабочего стола для настройки; большинство альтернатив – обезглавленные коробки с web-интерфейсом. | ||
+ | |||
+ | ==Роутеры: Свой личный II== | ||
+ | |||
+ | : '''Часть 2''' Постройте собственный интернет-брандмауэр и роутер с нуля, чтобы обеспечить безопасность и заодно выяснить, как они работают. | ||
+ | |||
+ | В первой части мы изучали, как с помощью IPCop, спецдистрибутива брандмауэра, превратить старый компьютер в Интернет-шлюз и брандмауэр. Для большинства людей IPCop обеспечивает все, что нужно – особенно с дополнительными модулями; но есть и такие, кому прямо не уснуть, если велосипед изобрели не они. Поэтому сейчас мы собираемся рассмотреть создание аналогичных Интернет-шлюзов, но не на готовом дистрибутиве, а с нуля. В пределах урока мы с этим брандмауэром сумеем сделать меньше, чем с подобными IPCop, но он будет иметь два важных преимущества. В процессе работы его можно сколь угодно расширить, и вдобавок – настроив его сами, вы получите более глубокое понимание того, что именно брандмауэр делает и как он работает. | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF139_76_1.jpg|300px]] Минимальный установщик Debian дает на выбор старомодную текстовую установку или графическую альтернативу, даже если на компьютере нет GUI.|Ширина=300px}} | ||
+ | |||
+ | Первый шаг – выбор основного дистрибутива. Тут решение принять просто. Очевидный кандидат – Debian: он доступен в виде установочного компакт-диска (диск с чистой установкой), обеспечивающего минимальную систему, то есть платформу, на которой мы построим наш роутер-маршрутизатор. Какой-нибудь Ubuntu вынудил бы нас удалить до 90 % пакетов сразу же после установки – уповая,что удалено именно ненужное, а не критически важное. Но зачем вообще что-то удалять? Так ведь любая программа является потенциальной угрозой безопасности, и в каждую строку кода может вцепиться эксплойт, вот мы и устанавливаем только строго необходимое. Стабильные релизы Debian иногда высмеивают за медленные циклы выпуска, но нам как раз и требуется проверенный и надежный код, который не будет еженедельно требовать обновления до новой версии. Обновления – еще одна причина выбрать Debian, особенно их система «ползучих» обновлений. Единожды установив систему, легко поддерживать ее соответствие современным требованиям, даже не прибегая к новым релизам. Вы же не хотите попасть в ситуацию, когда вам придется переустановить маршрутизатор, потеряв установленное Интернет-соединение! | ||
+ | |||
+ | ===Базовая установка=== | ||
+ | |||
+ | Возьмите чистый дистрибутив CD с http://www.debian.org/CD/netinst, запишите его на компакт-диск и загрузитесь с него. Вам будeт предоставлены на выбор текстовый или графический инсталлятор – в графическом не обойтись без мыши, но функции у обоих аналогичные. Установщик обшарит все ваши сетевые карты и спросит, какие использовать для установки. Выберите ту, что подключена к модему, это будет «красная» (внешняя, выходящая в Интернет) сеть (сохраним красный, оранжевый и зеленый цвета для обозначения сетей, как в случае IPCop). | ||
+ | |||
+ | Когда дойдет до разбивки на разделы, тут все работает по-другому. Поскольку при входе в компьютер нет пользователей, нет смысла делать отдельный раздел '''/home''', но отдельный '''/var''' – это отличная идея. Там хранятся данные системных демонов, а также журналы. Пошедшая вразнос программа или ошибка может быстро заполнить '''/var/log''', и вынесение этого раздела из корневой файловой системы предотвратит неприятную ситуация переполнения '''/'''. | ||
+ | |||
+ | Разумным будет отвести по 2 ГБ на '''/''' и '''/var''', а для раздела подкачки – помноженный на два объем ОЗУ. Если у вас достаточно места на диске, отдельная файловая система для '''/tmp''' на 1 ГБ – также неплохая идея, по тем же причинам, что и для '''/var'''. А если у вас много оперативной памяти, можете использовать для '''/tmp''' систему ''tmpfs'', это повысит производительность. Дойдя до экрана выбора ПО, снимите галочки со всего, поскольку установка у нас минимальная. После перезагрузки компьютера войдите в систему от имени root. | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF139_77_1.jpg|300px]] Разбивка на разделы не такая, как у сервера или подобного устройства — отдельная директория '''/home''' здесь не нужна, но '''/var''' лучше вывести в особый раздел.|Ширина=300px}} | ||
+ | |||
+ | ===Настройка сети=== | ||
+ | |||
+ | Теперь создадим различные сетевые интерфейсы. Установщик Debian уже настроил «красный» интерфейс за вас: он использует DHCP для запроса конфигурации с модема. Интерфейсов Ethernet vожет быть до трех – «красный», «зеленый» и «оранжевый» – и вы должны знать, который какой. Чтобы каждая сетевая карта всегда получала одно и то же имя интерфейса, применим ''Udev'' – переключение '''eth0''' и '''eth1''' на перезагрузке может стать катастрофой. | ||
+ | Это устанавливается в файле '''/etc/udev/rules.d/70‑persistent-net.rules'''. | ||
+ | |||
+ | Как правило, этот файл лучше не трогать, но изменение названий делается именно там. Каждая строка привязывает MAC-адрес карты к имени интерфейса, и вы можете изменить названия карт путем переключения имен интерфейсов, а затем перезагрузиться. Далее будем считать '''eth0''' «красным», '''eth1''' – «зеленым» и '''eth2''' – «оранжевым». Если вы измените имя интерфейса для «красного», отредактируйте '''/etc/network/interfaces''' и измените оба упоминания '''ethX'''. | ||
+ | |||
+ | Чтобы настроить зеленый интерфейс, отредактируйте '''/etc/network/interfaces'''. По умолчанию используется редактор ''Nano'', а для мазохистов предусмотрен'' Vi''. | ||
+ | |||
+ | nano /etc/network/interfaces | ||
+ | |||
+ | Зеленому интерфейсу также потребуется статический адрес, поэтому добавим в файл следующие строки: | ||
+ | |||
+ | # Green interface | ||
+ | auto eth1 | ||
+ | iface eth1 inet static | ||
+ | address 192.168.1.1 | ||
+ | netmask 255.255.255.0 | ||
+ | |||
+ | Если вы используете DMZ, добавьте аналогичную строфу с адресом 192.168.2.1 для «оранжевого» интерфейса. Введите команду | ||
+ | |||
+ | ifup -a | ||
+ | |||
+ | для включения всех сконфигурированных интерфейсов. | ||
+ | |||
+ | ===Устанавливаем ПО=== | ||
+ | |||
+ | {{Врезка|Заголовок=Скорая помощь|Содержание=Никак не упомните, какой порт к какой сети принадлежит? Потратьтесь на несколько сетевых красных, зеленых и оранжевых проводов – сразу будет видно, что с чем соединяется.|Ширина=200px}} | ||
+ | |||
+ | |||
+ | Поскольку маршрутизатор должен обеспечивать на нашем интерфейсе DHCP- и DNS-сервисы, следующей программой установим ''dnsmasq'', выполняющую обе эти функции. | ||
+ | |||
+ | apt-get install dnsmasq | ||
+ | |||
+ | ''apt-get install'' c одним или несколькими названиями пакетов установитвсеэтипакеты,а такжеих зависимости. Отредактируйте '''/etc/dnsmasq.conf''', чтобы установить его, найдите закомментированную строку '''interface= line''' и исправьте ее на '''interface = eth1''' – то есть «зеленая» сеть получит только DNS и DHCP. Если вам нужна DMZ, там понадобится DNS, но не DHCP, так что используйте вместо этого | ||
+ | |||
+ | except-interface=eth0 | ||
+ | no-dhcp-interface=eth2 | ||
+ | |||
+ | Включите DHCP-сервер и укажите диапазон адресов для использования: | ||
+ | |||
+ | dhcp-range=192.168.1.100,192.168.1.200 | ||
+ | |||
+ | В ''dnsmasq'' гораздо больше настроек, но этих достаточно для работы. Перезагрузите сервер, чтобы изменения вступили в силу, и подключите компьютер к зеленой сети. | ||
+ | |||
+ | ===Передача пакетов=== | ||
+ | |||
+ | Теперь у нас есть один интерфейс, подключенный к Интернет и один подключенный к локальной сети, что обеспечивает DHCP и DNS. Следующий шаг является важным: теперь нам нужно связать их вместе таким образом, чтобы из локальной сети был полный доступ к интернету, а не наоборот. Прежде чем сделать это, маршрутизатор предполагается «обезглавить», поэтому мы используем ''apt-get install ssh'' для получения удаленного доступа. | ||
+ | |||
+ | Нам нужны удаленные входы только из «зеленой» сети, поэтому откройте '''/etc/ssh/sshd_config''' и добавьте строку | ||
+ | |||
+ | ListenAddress 192.168.1.1 | ||
+ | |||
+ | Теперь вы можете связаться с брандмауэром с любого компьютера в вашей сети – если знаете пароль, конечно. Следующим шагом является установка брандмауэра, но сначала мы должны разрешить ядру пересылку пакетов – это нам нужно, чтобы использовать коробку в качестве маршрутизатора. Отредактируйте '''/etc/sysctl.conf''' – найдите следующие две строки: | ||
+ | |||
+ | # Net.ipv4.ip_forward = 1 | ||
+ | # Net.ipv6.conf.all.forwarding = 1 | ||
+ | |||
+ | Удалите '''#''' в начале первой строки, а также во второй, если вы используете IPv6. Выполните | ||
+ | |||
+ | sysctl -р | ||
+ | |||
+ | чтобы применить изменения. | ||
+ | |||
+ | ===Брандмауэр=== | ||
+ | |||
+ | Есть много Linux-программ для брандмауэра, но все они, по сути, являются редакторами настроек, потому что сам код брандмауэра, сетевого фильтра, сидит в ядре Linux. Сетевой фильтр контролируется ''iptables'', где устанавливаются правила фильтрации. Список команд можно написать вручную, что даст вам максимум гибкости – а заодно и повысит шансы по неосторожности открыть свою сеть незаконному вторжению; а можно использовать редактор. Возможно и сочетание этих способов, так как большинство редакторов генерируют множество правил ''iptables'', которые вы можете изменить, обретя уверенность в себе. | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF139_78_1.jpg|300px]] Макросы ''Shorewall'' сильно облегчают написание правил, позаботившись о деталях.|Ширина=300px}} | ||
+ | |||
+ | Воспользуемся для настройки своего брандмауэра утилитой ''Shorewall Firewall'', более известной как ''Shorewall'' (http://www.shorewall.net). ''Shorewall'' берет набор правил из группы файлов настройки и преобразует их в набор правил ''Iptables''. Преобразование одного набора правил в другой может показаться бессмысленным, но ''Shorewall'' имеет простой для понимания синтаксис, проверяет правила на ошибки перед компиляцией правил ''Iptables'' и, что для нас главное, поставляется с рядом готовых конфигураций – в том числе парой таких, которые точно соответствуют нашим потребностям. Версия ''Shorewall'' из Debian Lenny (5.0) довольно стара, но предусмотрено портирование пакета для более новой версии, Squeeze (6.0). Добавьте следующие строки в '''/etc/apt/sources.list''': | ||
+ | |||
+ | deb http://people.connexer.com/~roberto/debian/lenny main | ||
+ | deb-src http://people.connexer.com/~roberto/debian/lenny main | ||
+ | |||
+ | Затем выполните: | ||
+ | |||
+ | gpg --keyserver keyring.debian.org --recv-key 63E4E277 | ||
+ | gpg --export -a 63E4E277 | apt-key add - | ||
+ | apt-get update | ||
+ | apt-get install shorewall | ||
+ | |||
+ | Первые две строки добавят ключ GPG для проверки подлинности пакетов; затем мы обновляем списки пакетов и устанавливаем пакет ''shorewall''. Сделать это важно, потому что конфигурация для серии 4.4 отличается от версии в Debian Lenny. | ||
+ | |||
+ | ===Установим границы=== | ||
+ | |||
+ | {{Врезка|Заголовок=Скорая помощь|Содержание=Чтобы протестировать работу вашего брандмауэра извне вашей сети, используйте ноутбук с беспроводным 3G-модемом. Так вы будете находиться вне сети, но физически достаточно близко для работы с настройками.|Ширина=200px}} | ||
+ | |||
+ | Стандартные настройки хранятся в '''/usr/share/doc/shorewall/examples''', по папке для каждого типа установки. Для стандартного брандмауэра с двумя интерфейсами, «красным» подключением к Интернет и «зеленым» для LAN, скопируйте содержимое папки '''two-interfaces''' в каталог '''/etc/shorewall'''. Файл '''Shorewall.conf''' упакован архиватором ''gunzip''; распакуйте его, перезаписав предыдущий '''shorewall.conf'''. | ||
+ | |||
+ | ''Shorewall'' использует концепцию зон – каждая определяет один сегмент сети – затем использует политики и правила, описывающие взаимодействие зон. Файл '''zones''' – это списки зон, здесь определены три: '''fw''' – сам брандмауэр, а '''loc''' и '''net''' – две зоны сети. Если хотите, переименуйте '''net''' и '''loc''' в «красный» и «зеленый», но тогда придется редактировать и другие файлы, чтобы привести в порядок ссылки на эти зоны. Файл '''interfaces''' присваивает зоны каждому из интерфейсов; здесь '''eth0''' – '''net''' («красная» зона), а '''eth1''' – '''loc''' («зеленая» зона). Если вы настроили Интернет- и LAN-соединения иначе, отредактируйте эти файлы соответственно. | ||
+ | |||
+ | Политики по умолчанию о том, что может делать каждая зона, определены в файле '''policy'': по умолчанию '''loc''' имеет доступ к '''net''', но не наоборот. Однако ничто не определено для зоны '''fw''', а значит, вы не можете подключиться к самому брандмауэру, да и брандмауэр не может подключиться к Интернету. Первое необходимо для настройки брандмауэра через ''SSH'', а компьютеры вашей локальной сети должны подключаться к нему для получения сер висов DHCP и DNS. Последнее необходимо потому, что вы должны быть в состоянии применить обновления для системы безопасности с ''apt-get'' (или заведите у себя в сети локальный кэш ''apt''). Исправим ситуацию, добавив такие правила в '''/etc/shorewall/policy''': | ||
+ | |||
+ | loc $FW ACCEPT | ||
+ | $FW loc ACCEPT | ||
+ | $FW net ACCEPT | ||
+ | |||
+ | Первые два обеспечивают доступ из локальной сети к брандмауэру и наоборот, а третье позволяет брандмауэру подключаться к Интернет. Заметим, что они применяются только к пунктам назначения пакетов: компьютер в локальной сети можно подключить к Интернету через брандмауэр, даже если ему нельзя подключаться к самому брандмауэру. Если вы не хотите обеспечивать полный доступ к брандмауэру из локальной сети, опустите первые две строчки и создайте конкретные правила для сервисов, которые хотите разрешить; их мы скоро рассмотрим. | ||
+ | |||
+ | Для базовой конфигурации этого достаточно, но скрипт '''init''' Debian не станет запускать ''Shorewall'', пока вы не скажете ему, что конфигурация создана (чтобы не дать вам по ошибке запустить открытую и небезопасную конфигурацию по умолчанию). Отредактируйте '''/etc/default/shorewall''', изменив '''startup = 0''' на '''startup = 1''', затем в '''/etc/shorewall/shorewall.conf''' измените '''STARTUP_ENABLED''' на '''Yes'''. Теперь запустите | ||
+ | |||
+ | /etc/init.d/shorewall start | ||
+ | |||
+ | Это необходимо только при изменении конфигурации – при перезагрузке маршрутизатора ''shorewall'' запускается автоматически. Хотя ''Shorewall'' запускается из скрипту ''init'', это не фоновый сервис – скрипт прочтет файлы в '''/etc/shorewall''', установит правила брандмауэра и завершится. Вы можете просмотреть правила, которые ''Shorewall'' устанавливает, запустив | ||
+ | |||
+ | iptables -L | ||
+ | |||
+ | ===Правила, правила и правила=== | ||
+ | |||
+ | Чтобы компьютеры позади брандмауэра могли связаться с удаленными серверами и получать от тех ответы, вы должны использовать IP-маскировку. Это устанавливается в '''/etc/shorewall/masq'''. Файл по умолчанию в примере с двумя интерфейсами работает, если ваш «красный» интерфейс '''eth0''' – если нет, сделайте соответствующие изменения в этом файле. | ||
+ | |||
+ | Если вы хотите добавить правила, разрешающие доступ DHCP из локальной сети, или HTTP-доступ из Интернет, это делается в '''/etc/shorewall/rules'''. Чтобы разрешить доступ к web-серверу (Порт 80) на 192.168.1.2 (ваши серверы должны иметь статические IP-адреса), добавьте следующие строки в файл с правилами: | ||
+ | |||
+ | #ACTION SOURCE DEST PROTO | ||
+ | DNAT net loc:192.168.1.2:80 tcp | ||
+ | |||
+ | Они велят использовать DNAT для перенаправления соединения от сетевой зоны к порту 80 на сервере. Есть более простой способ сделать это для многих сервисов, так как ''Shorewall'' предлагает для этого макрос: | ||
+ | |||
+ | HTTP(DNAT) net loc:192.168.1.2 | ||
+ | |||
+ | Если заменить HTTP на web, одно правило будет отвечает и за HTTP-, и HTTPS-трафик – а от web-сервера обычно это и требуется. Список доступных макросов можно получить командой | ||
+ | |||
+ | shorewall show macros | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF139_79_1.jpg|300px]] Использование ''SSH'' — лучший способ выяснить, что делать, но ''Webmin'' предлагает графический интерфейс пользователя.|Ширина=300px}} | ||
+ | |||
+ | Если вы хотите заменить только что созданные глобальные политики доступа из LAN в брандмауэр, можно добавить в файл правил '''rules''' строки, разрешающие DNS- и DHCP-соединения (''SSH'' уже включено в правила по умолчанию): | ||
+ | |||
+ | DNS(ACCEPT) loc $FW | ||
+ | DHCPfwd(ACCEPT) loc $FW | ||
+ | |||
+ | После изменения любого из файлов настройки ''Shorewall'' требуется перезапуск: | ||
+ | |||
+ | /etc/init.d/shorewall restart | ||
+ | |||
+ | ===Добавьте DMZ=== | ||
+ | |||
+ | Если вы хотите запустить сервер в DMZ – которую IPCop обозначает оранжевым – используйте файлы настройки из каталога '''three-interfaces examples'''. Установка примерно такая же, как описано выше; только здесь другая зона, под названием '''dmz''', которой отведен интерфейс '''eth2'''. Правила по умолчанию не обеспечивают никакой пересылки из Интернета в DMZ, так что вам необходимо добавить правила переадресации из Интернет и локальной сети в DMZ, такие как | ||
+ | |||
+ | Web(DNAT) net dmz:192.168.3.2 | ||
+ | Web(ACCEPT) loc dmz:192.168.3.2 | ||
+ | |||
+ | Обратите внимание, что для Интернет-правила используется '''DNAT''', потому что тут нужно использовать преобразование сетевых адресов, а для запросов из локальной сети – обычное '''ACCEPT'''. | ||
+ | |||
+ | Это всего лишь поверхностное знакомство с возможными применениями вашего личного маршрутизатора. Поинтересуйтесь использованием ''logrotate'' для сжатия файлов журналов, а может, чем-то вроде ''logwatch'' – для создания ежедневных обзоров по журналам и отправке их вам электронной почтой. Главные страницы различных программ содержат много информации, как и сайт ''Shorewall''. | ||
+ | |||
+ | Существует еще масса возможностей дальнейшей настройки. А можно просто добиться работы, положить его на полку и забыть о нем (кроме проверки обновлений для системы безопасности, конечно). Что бы ни предпочли, вы теперь лучше разбираетесь в маршрутизаторах и брандмауэрах, и мы надеемся, что процесс познания тоже доставил вам удовольствие. | ||
+ | |||
+ | ===Нет Ethernet?=== | ||
+ | |||
+ | Если вы не используете кабельный или ADSL-модем через Ethernet, вы все равно можете придерживаться описанной здесь установки, просто нужно кое-что изменить. В файле интерфейсов ''Shorewall'' назначьте '''eth0''' для интерфейса ''loc'', а устройство, используемое вашим интернет-соединением, скажем, '''ppp0''' – для интерфейса '''net'''. Сделайте такие же подстановки для всех других вхождений '''eth0''' или '''eth1'''. Также может понадобиться добавить ''init''-скрипт для запуска сетевого соединения. Например, если у вас PPP-соединение (телефонный или беспроводной 3G-модем), нужно запустить ''wvdial'' или ''pon'', для запуска обычным способом. |
Текущая версия
- Роутеры Создаем точку доступа в Интернет и защищаем свою новую сеть
Содержание |
Роутеры: Свой личный I
- Часть 1 Создайте мощный интернет-брандмауэр и роутер из старого ненужного компьютера – и обезопасите вашу сеть.
Linux построен на сетевой работе. Это заложено в ядре операционной системы, а не прикручивается расширениями. И для желающих создать интернет-устройство Linux – выбор очевидный. Самое популярное интернет-устройство – маршрутизатор (роутер); в наши дни таковое имеется в большинстве домов. Оно переводит ваше DSL или прямое подключение к Интернет в Ethernet или беспроводное соединение для передачи в компьютер. Если у вас дома не один компьютер, такие устройства становятся еще важнее, поскольку позволяют использовать Интернет сразу на нескольких машинах без проблем с пакетами.
Если у вас несколько компьютеров, то скорее всего есть и такой, который давно заброшен и пылится в шкафу, потому что его мощности мало для современных задач. Вы, возможно, подумывали выставить его на Ebay, но из-за лени и стремительно падающей ценности старого оборудования так и не выставили. Вдох-ните же в это барахло новую жизнь, в роли интернет-шлюза! Вы cпросите, почему бы вместо этого не взять готовый модем/маршрутизатор. Одна из причин – вы получаете гораздо больший контроль над тем, что происходит в устройстве, над его функциями и их организацией. Другая причина – ну, это любопытный способ узнать о подобных вещах, а не просто отдать все на откуп магическому черному ящику (или, что более вероятно, белому или серебристому).
К данной задаче есть два подхода. Первый – воспользоваться специальным дистрибутивом для этой работы, уже настроенным, с нужными пакетами. Другой – построить все самим, используя минимальную установку Linux и добавив только самое необходимое ПО для выполнения нужных вам функций. Сперва мы займемся первым способом, но полностью охватим подход «сделай сам» на следующем уроке.
Выберите дистрибутив
Существует немало дистрибутивов для использования на брандмауэрах, и часть из них основана на FreeBSD, а не на Linux. Дистрибутивы можно разделить на две группы: те, что обеспечивают определенный брандмауэр/маршрутизатор и те, что предоставляют более полный интернет-шлюз, в том числе такие вещи, как печать, почта, файловые и даже web-серверы. На данном уроке мы сконцентрируемся на чистом шлюзе, более гибкой и мощной альтернативе готовых модемов/маршрутизаторов, обеспечивающей большую безопасность другим услугам. Для этого мы выбрали дистрибутив IPCop (http://www.ipcop.org). Мы используем стабильный релиз 1.4.21, но любители приключений могут взять версию 1.9.
Естественно, вам также понадобится компьютер. Сойдет любой, который работает уже не на дровах, а на электричестве. I586 или более поздней версии вполне справится с небольшой сетью и выходом в Интернет. В IPCop нет рабочего стола – после установки все делается удаленно через web-браузер, поэтому требования к памяти оборудования минимальны. Вам потребуются клавиатура и монитор для установки, но их можно убрать, как только система будет перезагружена.
Компьютеру нужны как минимум два сетевых интерфейса: Ethernet для локальной сети и всего, что требует подключения к Интернет. Это может быть карта модема DSL-PCI, другая сетевая карта для подключения через стандартный кабель или DSL-модем или даже только порт USB, если у вас нет проводной связи и используется 3G-брелок. Если вам нужна демилитаризованная зона (DMZ), потребуется дополнительная сетевая карта, а также беспроводная карта, если вы хотите, чтобы эта коробка также выступала в качестве точки доступа Wi-Fi. Концентратор или коммутатор Ethernet, подключенный к порту локальной сети («зеленой»), позволит нескольким компьютерам одновременно выходит в Интернет через этот маршрутизатор.
Установка
Загрузитесь с CD IPCop для входа в текстовый режим. Если вы привыкли к графическим установщикам в стиле OpenSUSE, Mandriva и Ubuntu, вы ощутите легкий шок – перемещаться надо клавишами курсора, варианты выбирать клавишей пробела и нажимать Enter для продолжения. Обратите внимание на предупреждение на ранней стадии – установщик сотрет информацию на вашем жестком диске. Вы не можете сделать двойную загрузку маршрутизатора с Windows: это однозадачная машина. Отсутствие опций разбиения на разделы или выбора пакетов означает, что перед установкой делать особо нечего. Выберите Пропустить [Skip] на экране восстановления. Следующий шаг – выбрать интерфейс Ethernet для «зеленой» сети; другой интерфейс(ы) будет установлен позже. Обычно лучше дать установщику самому выбрать подходящий интерфейс, но есть и опции для ручной настройки, если у вас сетевой адаптер с нетипичными настройками.
Поскольку маршрутизатор будет также выступать в качестве сервера DHCP для вашей сети, он должен иметь свой адрес, присвоенный статически. Если есть сомнения, какой вписать, впишите 192.168.1.1. Тут вам дадут web-адрес для настройки; примите его к сведению. Одно из самых важных решений во время уста-новки – выбор типа конфигурации сети; исторически по умолчанию используется Ethernet для «зеленой» и модем для «красной» сети. Если ваш модем подключается через Ethernet, измените это на GREEN + RED. Выберите вариант ORANGE или BLUE, если вам также нужны DMZ или беспроводная сеть – вы можете изменить это позже, если предпочитаете простоту и только что установили «красную» и «зеленую» для начала. Затем нужно указать для IPCop, что использовать для дополнительных интерфейсов, в разделе Драйверы и карты [Drivers and Card Assignments].
Настройка адреса
Монитор и клавиатура после настройки IPCop вам уже не потребуются, но, возможно, стоит их попридержать, пока вы не освоитесь с web-интерфейсом... так, на всякий случай.
Раздел DNS и Gateway можно оставить пустым, если ваш модем получает эту информацию от интернет-провайдера по DHCP, но раздел настройки DHCP относится к адресам, которые IPCop дает «зеленым» и «синим» сетям. Необходимо указать диапазон адресов, из которых IPCop может выбрать, но оставить часть для тех компьютеров, которые могут использовать статический адрес. Я обычно задаю начало диапазона DHCP со 100 (192.168.1.100, если вы даете 192.168.1.1 для самого IPCop) и использую меньшие номера адресов для статических адресов, просто потому, что так сразу видны адреса, раздаваемые DHCP. На этом этапе также нужно включить DHCP-сервер. Основному серверу DNS можно оставить адрес компьютера IPCop – тогда IPCop станет кэшем DNS, ускорив обращение к домену, вызываемому более чем одним компьютером – а каким компьютерам в вашей сети не интересен http://www.google.com или http://www.linuxformat.com? Наконец, нужно установить пароли для трех пользователей: root (обычно не используется, если вы не намерены входить в систему из маршрутизатора), admin – пользователь web-интерфейса, обычно используемый для настройки, и резервный пользователь. Теперь вы можете удалить установочный компакт-диск и перезагрузить компьютер.
Запуск
После перезагрузки вы увидите неприветливое окно логина, но вам оно не понадобится. Откройте в браузере на другом компьютере в «зеленой» сети и перейдите по адресу https://192.168.1.1:445, заменив IP-адрес на тот, что был указан при установке. Если на компьютере, откуда вы подключаетесь, сеть была установлена после перезагрузки маршрутизатора, можете вместо этого использовать имя хоста, данное при установке; по умолчанию это ipcop (https://ipcop:445). Ваш браузер, вероятно, пожалуется при подключении на ненадежный сертификат, который вы прикажете ему принять. Это происходит потому, что IPCop сам генерирует сертификат, и ваш браузер не может проверить его достоверность. Так как вы только что установили его, вы знаете, что доверять ему можно.
Помните пароль пользователя с правами администратора, созданный вами в процессе установки? IPCop позволяет просматривать главную страницу без него, но при выборе чего-нибудь всплывает запрос пароля. Первое, куда следует перейти – это Система > Обновление [System > Updates], поскольку на главной странице вы увидите сообщение о наличии обновлений. Нажмите кнопку Скачать, которая с виду ничего не делает, кроме вывода описания обновлений в разделе ниже, поэтому нажмите Применить.
Если возникнет ошибка, что обновления не доверенные, то, вероятно, часы вашей системы отстали. Это довольно часто бывает с машинами, которые годами не использовались или делали переустановку BIOS. Перейдите в Сервисы > Сервер времени [Services > Time Server] и установите время вручную. Затем поставьте галочку, чтобы использовать время с сервера, и нажмите Сохранить. Вручную время сперва придется установить потому, что NTP не меняет время, если разрыв слишком велик.
С этого момента вы будете выполнять все действия из web-интерфейса. Можно выключить маршрутизатор, отключить клавиатуру и монитор и убрать их с глаз долой, а потом включить маршрутизатор снова (позаботьтесь, чтобы он имел достаточно воздуха для охлаждения). Новый маршрутизатор должен теперь предоставлять DHCP- и DNS-сервисы для вашей локальной сети и давать доступ к Интернет, так что пора изучать опции. Сначала перейдите в Система > Резервное копирование, где можно создать файл DAT, содержащий все настройки – это даст возможность отката при неудачно внесенных изменениях. Сделайте это, прежде чем начать эксперименты. Можно даже по кнопке Экспорт записать эти настройки на USB-брелок для пущей сохранности.
Изучим свойства
Web-интерфейс имеет много вариантов настройки. Очень легко внести изменения, получив хорошие рабочие параметры, и новым изменением нечаянно все сломать. При экспериментах почаще делайте резервное копирование, чтобы иметь возможность отката.
IPCop предоставляет ряд сервисов, которые по умолчанию не включены, но стоят внимания и включения. Их можно найти в меню Севисы [Services]: они включают web-прокси, для уменьшения трафика и времени отклика для часто используемых страниц, сервер времени, динамический DNS для обновления вашего IP-адреса на сервисах типа http://www.dyndns.org, обнаружение вторжений с помощью Snort и управление трафиком. Последнее полезно, когда несколько машин делят ограниченную полосу пропускания, а вы не хотите, чтобы кто-то, скачивая ISO-образ Ubuntu через BitTorrent, замедлял ваш просмотр форумов по Fedora. Установив приоритеты высокими для портов электронной почты, таких как 25, 110 и 143, средними для web-портов 80 и 443 и низкими для FTP (21) и BitTorrent (6881‑6999), вы можете пресечь замедление просмотра сайтов из-за скачивания файлов, не препятствуя работе почты.
Мы говорили, что можно добавить сеть после установки, но как же это сделать, ведь в web-интерфейсе нет такой опции? Ответ – сделайте это в командной строке: либо непосредственно на компьютере с IPCop (если клавиатура и монитор все еще при нем), либо через SSH-соединение из «зеленой» сети. Во втором случае необходимо включить SSH-доступ из меню Система [System], затем подключиться к нему командой
ssh -p 222 root@ipcop
Затем запустите setup, чтобы перейти к графическому интерфейсу, схожему с интерфейсом установщика, где можно изменить сделанные настройки. Перейдите в Сеть > Изменить тип сети [Network > Change Network Type] и выберите GREEN + ORANGE + RED для добавления DMZ, или BLUE – для беспроводного сектора. По любому, сперва нужно установить у себя на компьютере подходящую сетевую карту. Перейдите в Драйверы и карты [Drivers and Card Assignments] для новой сети, а затем используйте Настройки адреса [Address Settings], чтобы выбрать адрес для интерфейса новой сети. Она, скорее всего, будет в другой подсети, так что если вы использовали 192.168.1.1 для зеленой, используйте 192.168.2.1 для оранжевой. Сделав этого, выключите SSH – безопасности ради.
Настройка DMZ
Сделали DMZ – значит, надо ее настроить. В «оранжевой» сети нет сервера DHCP, так что любой добавленный здесь компьютер должен иметь статический адрес, и это хорошо, если вы хотите организовать доступ извне, потому что нужно будет перенаправить трафик на определенный адрес. Чтобы настроить доступ к web-серверу с адресом 192.168.2.2, первым шагом нужно сделать переадресацию портов, так же, как на стандартном модеме/маршрутизаторе, только сервер устанавливается в DMZ. Перейдите к странице Брандмауэр > Переадресация портов [Firewall > Port forwarding]. Исходный IP [Source IP] или Cетевая машина [Network box] обычно оставляют пустым, чтобы обеспечить доступ со всех внешних адресов, но вы можете ограничить доступ определенным адресом или диапазоном, если хотите, чтобы ваш сервер был доступен только из одного места (хотя VPN, пожалуй, более приемлемый подход в этой ситуации). Установите исходный порт в 80 (HTTP), IP-адрес назначения – в 192.168.2.2, и нажмите Добавить [Add], чтобы увидеть появившееся ниже правило. Теперь нажмите Переустановить [Reset] и повторите процесс для порта 443 (HTTPS).
Теперь у вас есть web-сервер, доступный из Интернет и локальной сети («зеленая» сеть), но сам он не имеет доступа к «зеленой» сети. Это означает, что если на сервер, или, возможно, в запущенный на нем код PHP пробрался эксплойт, он может повредить только себе, но не остальным компьютерам.
Просверлить дырку
Иногда ваш web-сервер должен общаться с машинами из зеленой сети – например, рассылаать резервные копии таблицы MySQL. IPCop имеет функцию под названием DMZ pinhole, обеспечивающую ограничение доступа с одного компьютера в «оранжевой» сети к одному порту на одном компьютере из «зеленой» сети. Это устанавливается в Firewall > DMZ Pinholes, но использовать данную опцию следует только при необходимости, потому что она частично нарушает безопасность, обеспечиваемую DMZ.
Есть много других вещей, выполняемых с помощью IPCop, но мы рассказали вам достаточно для того, чтобы начать работу. Посмотрите web-интерфейс и почитайте связанную с ним документацию на сайте IPCop для получения подробной информации.
Расширения
Если IPCop не предоставляет все необходимые вам функции, расширьте его возможности дополнениями. Это модули сторонних разработчиков; их список – в комплекте со ссылками – имеется на сайте IPCop. Они включают URL-фильтр, ограничивающий доступ для конкретного компьютера и/или времени дня (например, запретить сотрудникам торчать в рабочее время на сайтах социальных сетей – а себе-то позволить), и улучшенный прокси-сервер на основе перекомпилированного Squid. Есть также L2TP VPN, в дополнение к включенному OpenVPN позволяющий посетителям с Windows подключаться к вашей сети, и еще несколько. Список см. на http://sourceforge.net/apps/trac/ipcop/wiki/Addons.
Зоны сети
Маршрутизатор/брандмауэр выполняет две основные функции: дать доступ в Интернет из вашей сети и защитить вашу сети от несанкционированного доступа из Интернет. Для этого сеть можно разделить на зоны. Две зоны присутствуют всегда: во-первых, явно небезопасный Интернет, а во-вторых, локальная проводная (и доверенная) сеть. Некоторым маршрутизаторам безразлично, беспроводное подключение у компьютера или проводное, но другие признают возможность нежелательного воздействия при подключении через Wi-Fi и контроль такого доступа.
Вам может также понадобиться компьютер, к которому можно подключаться из Интернет, такой как web- или почтовый сервер, но для него всегда есть риск атаки извне. Общий подход — предусмотреть в сети демилитаризованную зону (DMZ), доступную извне и изнутри вашей сети, но доступ которой к доверенной сети ограничен или отсутствует. Это минимизирует вред, который способен нанести эксплойт. IPCop дает каждой из этих зон свой цвет: зеленый для локальной сети, красный для Интернет, оранжевый для DMZ и синий – для беспроводного сектора.
Альтернативы
Мы выбрали IPCop, потому что он основан на Linux (множество подобных пакетов сделаны на базе FreeBSD), популярен в использовании и прост в установке и управлении. Однако это отнюдь не единственный доступный дистрибутив брандмауэра/маршрутизатора. Среди альтернатив:
- Astaro Security Gateway (http://www.astaro.com) На базе OpenSUSE, доступна свободная и коммерческая версии, а также предварительно установленная на оборудовании.
- Coyote Linux (http://coyotelinux.com) Первоначально представлял собой брандмауэр на дискете, а сейчас это небольшой встраиваемый дистрибутив для малых и средних сетей.
- ClearOS (http://www.clearfoundation.com) Ранее был известен как ClarkConnect; это больше, чем маршрутизатор и брандмауэр, поскольку предлагает различные серверы в одной коробке. Однако это означает, что вы теряете защиту DMZ.
- SME Server (http://www.contribs.org) Основанный на CentOS дистрибутив, обеспечивающий работу с файлами, печать, почтовый и web-сервисы, а также функции брандмауэра и маршрутизатора.
- SmoothWall (http://www.smoothwall.org) Солидный дистрибутив маршрутизатора в коммерческой и свободной версиях. IPCop первоначально был основан на SmoothWall.
- Zentyal (http://www.zentyal.com) Ранее назывался Ebox. Основан на дистрибутиве Ubuntu и необычен наличием рабочего стола для настройки; большинство альтернатив – обезглавленные коробки с web-интерфейсом.
Роутеры: Свой личный II
- Часть 2 Постройте собственный интернет-брандмауэр и роутер с нуля, чтобы обеспечить безопасность и заодно выяснить, как они работают.
В первой части мы изучали, как с помощью IPCop, спецдистрибутива брандмауэра, превратить старый компьютер в Интернет-шлюз и брандмауэр. Для большинства людей IPCop обеспечивает все, что нужно – особенно с дополнительными модулями; но есть и такие, кому прямо не уснуть, если велосипед изобрели не они. Поэтому сейчас мы собираемся рассмотреть создание аналогичных Интернет-шлюзов, но не на готовом дистрибутиве, а с нуля. В пределах урока мы с этим брандмауэром сумеем сделать меньше, чем с подобными IPCop, но он будет иметь два важных преимущества. В процессе работы его можно сколь угодно расширить, и вдобавок – настроив его сами, вы получите более глубокое понимание того, что именно брандмауэр делает и как он работает.
Первый шаг – выбор основного дистрибутива. Тут решение принять просто. Очевидный кандидат – Debian: он доступен в виде установочного компакт-диска (диск с чистой установкой), обеспечивающего минимальную систему, то есть платформу, на которой мы построим наш роутер-маршрутизатор. Какой-нибудь Ubuntu вынудил бы нас удалить до 90 % пакетов сразу же после установки – уповая,что удалено именно ненужное, а не критически важное. Но зачем вообще что-то удалять? Так ведь любая программа является потенциальной угрозой безопасности, и в каждую строку кода может вцепиться эксплойт, вот мы и устанавливаем только строго необходимое. Стабильные релизы Debian иногда высмеивают за медленные циклы выпуска, но нам как раз и требуется проверенный и надежный код, который не будет еженедельно требовать обновления до новой версии. Обновления – еще одна причина выбрать Debian, особенно их система «ползучих» обновлений. Единожды установив систему, легко поддерживать ее соответствие современным требованиям, даже не прибегая к новым релизам. Вы же не хотите попасть в ситуацию, когда вам придется переустановить маршрутизатор, потеряв установленное Интернет-соединение!
Базовая установка
Возьмите чистый дистрибутив CD с http://www.debian.org/CD/netinst, запишите его на компакт-диск и загрузитесь с него. Вам будeт предоставлены на выбор текстовый или графический инсталлятор – в графическом не обойтись без мыши, но функции у обоих аналогичные. Установщик обшарит все ваши сетевые карты и спросит, какие использовать для установки. Выберите ту, что подключена к модему, это будет «красная» (внешняя, выходящая в Интернет) сеть (сохраним красный, оранжевый и зеленый цвета для обозначения сетей, как в случае IPCop).
Когда дойдет до разбивки на разделы, тут все работает по-другому. Поскольку при входе в компьютер нет пользователей, нет смысла делать отдельный раздел /home, но отдельный /var – это отличная идея. Там хранятся данные системных демонов, а также журналы. Пошедшая вразнос программа или ошибка может быстро заполнить /var/log, и вынесение этого раздела из корневой файловой системы предотвратит неприятную ситуация переполнения /.
Разумным будет отвести по 2 ГБ на / и /var, а для раздела подкачки – помноженный на два объем ОЗУ. Если у вас достаточно места на диске, отдельная файловая система для /tmp на 1 ГБ – также неплохая идея, по тем же причинам, что и для /var. А если у вас много оперативной памяти, можете использовать для /tmp систему tmpfs, это повысит производительность. Дойдя до экрана выбора ПО, снимите галочки со всего, поскольку установка у нас минимальная. После перезагрузки компьютера войдите в систему от имени root.
Настройка сети
Теперь создадим различные сетевые интерфейсы. Установщик Debian уже настроил «красный» интерфейс за вас: он использует DHCP для запроса конфигурации с модема. Интерфейсов Ethernet vожет быть до трех – «красный», «зеленый» и «оранжевый» – и вы должны знать, который какой. Чтобы каждая сетевая карта всегда получала одно и то же имя интерфейса, применим Udev – переключение eth0 и eth1 на перезагрузке может стать катастрофой. Это устанавливается в файле /etc/udev/rules.d/70‑persistent-net.rules.
Как правило, этот файл лучше не трогать, но изменение названий делается именно там. Каждая строка привязывает MAC-адрес карты к имени интерфейса, и вы можете изменить названия карт путем переключения имен интерфейсов, а затем перезагрузиться. Далее будем считать eth0 «красным», eth1 – «зеленым» и eth2 – «оранжевым». Если вы измените имя интерфейса для «красного», отредактируйте /etc/network/interfaces и измените оба упоминания ethX.
Чтобы настроить зеленый интерфейс, отредактируйте /etc/network/interfaces. По умолчанию используется редактор Nano, а для мазохистов предусмотрен Vi.
nano /etc/network/interfaces
Зеленому интерфейсу также потребуется статический адрес, поэтому добавим в файл следующие строки:
# Green interface auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
Если вы используете DMZ, добавьте аналогичную строфу с адресом 192.168.2.1 для «оранжевого» интерфейса. Введите команду
ifup -a
для включения всех сконфигурированных интерфейсов.
Устанавливаем ПО
Никак не упомните, какой порт к какой сети принадлежит? Потратьтесь на несколько сетевых красных, зеленых и оранжевых проводов – сразу будет видно, что с чем соединяется.
Поскольку маршрутизатор должен обеспечивать на нашем интерфейсе DHCP- и DNS-сервисы, следующей программой установим dnsmasq, выполняющую обе эти функции.
apt-get install dnsmasq
apt-get install c одним или несколькими названиями пакетов установитвсеэтипакеты,а такжеих зависимости. Отредактируйте /etc/dnsmasq.conf, чтобы установить его, найдите закомментированную строку interface= line и исправьте ее на interface = eth1 – то есть «зеленая» сеть получит только DNS и DHCP. Если вам нужна DMZ, там понадобится DNS, но не DHCP, так что используйте вместо этого
except-interface=eth0 no-dhcp-interface=eth2
Включите DHCP-сервер и укажите диапазон адресов для использования:
dhcp-range=192.168.1.100,192.168.1.200
В dnsmasq гораздо больше настроек, но этих достаточно для работы. Перезагрузите сервер, чтобы изменения вступили в силу, и подключите компьютер к зеленой сети.
Передача пакетов
Теперь у нас есть один интерфейс, подключенный к Интернет и один подключенный к локальной сети, что обеспечивает DHCP и DNS. Следующий шаг является важным: теперь нам нужно связать их вместе таким образом, чтобы из локальной сети был полный доступ к интернету, а не наоборот. Прежде чем сделать это, маршрутизатор предполагается «обезглавить», поэтому мы используем apt-get install ssh для получения удаленного доступа.
Нам нужны удаленные входы только из «зеленой» сети, поэтому откройте /etc/ssh/sshd_config и добавьте строку
ListenAddress 192.168.1.1
Теперь вы можете связаться с брандмауэром с любого компьютера в вашей сети – если знаете пароль, конечно. Следующим шагом является установка брандмауэра, но сначала мы должны разрешить ядру пересылку пакетов – это нам нужно, чтобы использовать коробку в качестве маршрутизатора. Отредактируйте /etc/sysctl.conf – найдите следующие две строки:
# Net.ipv4.ip_forward = 1 # Net.ipv6.conf.all.forwarding = 1
Удалите # в начале первой строки, а также во второй, если вы используете IPv6. Выполните
sysctl -р
чтобы применить изменения.
Брандмауэр
Есть много Linux-программ для брандмауэра, но все они, по сути, являются редакторами настроек, потому что сам код брандмауэра, сетевого фильтра, сидит в ядре Linux. Сетевой фильтр контролируется iptables, где устанавливаются правила фильтрации. Список команд можно написать вручную, что даст вам максимум гибкости – а заодно и повысит шансы по неосторожности открыть свою сеть незаконному вторжению; а можно использовать редактор. Возможно и сочетание этих способов, так как большинство редакторов генерируют множество правил iptables, которые вы можете изменить, обретя уверенность в себе.
Воспользуемся для настройки своего брандмауэра утилитой Shorewall Firewall, более известной как Shorewall (http://www.shorewall.net). Shorewall берет набор правил из группы файлов настройки и преобразует их в набор правил Iptables. Преобразование одного набора правил в другой может показаться бессмысленным, но Shorewall имеет простой для понимания синтаксис, проверяет правила на ошибки перед компиляцией правил Iptables и, что для нас главное, поставляется с рядом готовых конфигураций – в том числе парой таких, которые точно соответствуют нашим потребностям. Версия Shorewall из Debian Lenny (5.0) довольно стара, но предусмотрено портирование пакета для более новой версии, Squeeze (6.0). Добавьте следующие строки в /etc/apt/sources.list:
deb http://people.connexer.com/~roberto/debian/lenny main deb-src http://people.connexer.com/~roberto/debian/lenny main
Затем выполните:
gpg --keyserver keyring.debian.org --recv-key 63E4E277 gpg --export -a 63E4E277 | apt-key add - apt-get update apt-get install shorewall
Первые две строки добавят ключ GPG для проверки подлинности пакетов; затем мы обновляем списки пакетов и устанавливаем пакет shorewall. Сделать это важно, потому что конфигурация для серии 4.4 отличается от версии в Debian Lenny.
Установим границы
Чтобы протестировать работу вашего брандмауэра извне вашей сети, используйте ноутбук с беспроводным 3G-модемом. Так вы будете находиться вне сети, но физически достаточно близко для работы с настройками.
Стандартные настройки хранятся в /usr/share/doc/shorewall/examples, по папке для каждого типа установки. Для стандартного брандмауэра с двумя интерфейсами, «красным» подключением к Интернет и «зеленым» для LAN, скопируйте содержимое папки two-interfaces в каталог /etc/shorewall. Файл Shorewall.conf упакован архиватором gunzip; распакуйте его, перезаписав предыдущий shorewall.conf.
Shorewall использует концепцию зон – каждая определяет один сегмент сети – затем использует политики и правила, описывающие взаимодействие зон. Файл zones – это списки зон, здесь определены три: fw – сам брандмауэр, а loc и net – две зоны сети. Если хотите, переименуйте net и loc в «красный» и «зеленый», но тогда придется редактировать и другие файлы, чтобы привести в порядок ссылки на эти зоны. Файл interfaces присваивает зоны каждому из интерфейсов; здесь eth0 – net («красная» зона), а eth1 – loc («зеленая» зона). Если вы настроили Интернет- и LAN-соединения иначе, отредактируйте эти файлы соответственно.
Политики по умолчанию о том, что может делать каждая зона, определены в файле policy: по умолчанию loc' имеет доступ к net, но не наоборот. Однако ничто не определено для зоны fw, а значит, вы не можете подключиться к самому брандмауэру, да и брандмауэр не может подключиться к Интернету. Первое необходимо для настройки брандмауэра через SSH, а компьютеры вашей локальной сети должны подключаться к нему для получения сер висов DHCP и DNS. Последнее необходимо потому, что вы должны быть в состоянии применить обновления для системы безопасности с apt-get (или заведите у себя в сети локальный кэш apt). Исправим ситуацию, добавив такие правила в /etc/shorewall/policy:
loc $FW ACCEPT $FW loc ACCEPT $FW net ACCEPT
Первые два обеспечивают доступ из локальной сети к брандмауэру и наоборот, а третье позволяет брандмауэру подключаться к Интернет. Заметим, что они применяются только к пунктам назначения пакетов: компьютер в локальной сети можно подключить к Интернету через брандмауэр, даже если ему нельзя подключаться к самому брандмауэру. Если вы не хотите обеспечивать полный доступ к брандмауэру из локальной сети, опустите первые две строчки и создайте конкретные правила для сервисов, которые хотите разрешить; их мы скоро рассмотрим.
Для базовой конфигурации этого достаточно, но скрипт init Debian не станет запускать Shorewall, пока вы не скажете ему, что конфигурация создана (чтобы не дать вам по ошибке запустить открытую и небезопасную конфигурацию по умолчанию). Отредактируйте /etc/default/shorewall, изменив startup = 0 на startup = 1, затем в /etc/shorewall/shorewall.conf измените STARTUP_ENABLED на Yes. Теперь запустите
/etc/init.d/shorewall start
Это необходимо только при изменении конфигурации – при перезагрузке маршрутизатора shorewall запускается автоматически. Хотя Shorewall запускается из скрипту init, это не фоновый сервис – скрипт прочтет файлы в /etc/shorewall, установит правила брандмауэра и завершится. Вы можете просмотреть правила, которые Shorewall устанавливает, запустив
iptables -L
Правила, правила и правила
Чтобы компьютеры позади брандмауэра могли связаться с удаленными серверами и получать от тех ответы, вы должны использовать IP-маскировку. Это устанавливается в /etc/shorewall/masq. Файл по умолчанию в примере с двумя интерфейсами работает, если ваш «красный» интерфейс eth0 – если нет, сделайте соответствующие изменения в этом файле.
Если вы хотите добавить правила, разрешающие доступ DHCP из локальной сети, или HTTP-доступ из Интернет, это делается в /etc/shorewall/rules. Чтобы разрешить доступ к web-серверу (Порт 80) на 192.168.1.2 (ваши серверы должны иметь статические IP-адреса), добавьте следующие строки в файл с правилами:
#ACTION SOURCE DEST PROTO DNAT net loc:192.168.1.2:80 tcp
Они велят использовать DNAT для перенаправления соединения от сетевой зоны к порту 80 на сервере. Есть более простой способ сделать это для многих сервисов, так как Shorewall предлагает для этого макрос:
HTTP(DNAT) net loc:192.168.1.2
Если заменить HTTP на web, одно правило будет отвечает и за HTTP-, и HTTPS-трафик – а от web-сервера обычно это и требуется. Список доступных макросов можно получить командой
shorewall show macros
Если вы хотите заменить только что созданные глобальные политики доступа из LAN в брандмауэр, можно добавить в файл правил rules строки, разрешающие DNS- и DHCP-соединения (SSH уже включено в правила по умолчанию):
DNS(ACCEPT) loc $FW DHCPfwd(ACCEPT) loc $FW
После изменения любого из файлов настройки Shorewall требуется перезапуск:
/etc/init.d/shorewall restart
Добавьте DMZ
Если вы хотите запустить сервер в DMZ – которую IPCop обозначает оранжевым – используйте файлы настройки из каталога three-interfaces examples. Установка примерно такая же, как описано выше; только здесь другая зона, под названием dmz, которой отведен интерфейс eth2. Правила по умолчанию не обеспечивают никакой пересылки из Интернета в DMZ, так что вам необходимо добавить правила переадресации из Интернет и локальной сети в DMZ, такие как
Web(DNAT) net dmz:192.168.3.2 Web(ACCEPT) loc dmz:192.168.3.2
Обратите внимание, что для Интернет-правила используется DNAT, потому что тут нужно использовать преобразование сетевых адресов, а для запросов из локальной сети – обычное ACCEPT.
Это всего лишь поверхностное знакомство с возможными применениями вашего личного маршрутизатора. Поинтересуйтесь использованием logrotate для сжатия файлов журналов, а может, чем-то вроде logwatch – для создания ежедневных обзоров по журналам и отправке их вам электронной почтой. Главные страницы различных программ содержат много информации, как и сайт Shorewall.
Существует еще масса возможностей дальнейшей настройки. А можно просто добиться работы, положить его на полку и забыть о нем (кроме проверки обновлений для системы безопасности, конечно). Что бы ни предпочли, вы теперь лучше разбираетесь в маршрутизаторах и брандмауэрах, и мы надеемся, что процесс познания тоже доставил вам удовольствие.
Нет Ethernet?
Если вы не используете кабельный или ADSL-модем через Ethernet, вы все равно можете придерживаться описанной здесь установки, просто нужно кое-что изменить. В файле интерфейсов Shorewall назначьте eth0 для интерфейса loc, а устройство, используемое вашим интернет-соединением, скажем, ppp0 – для интерфейса net. Сделайте такие же подстановки для всех других вхождений eth0 или eth1. Также может понадобиться добавить init-скрипт для запуска сетевого соединения. Например, если у вас PPP-соединение (телефонный или беспроводной 3G-модем), нужно запустить wvdial или pon, для запуска обычным способом.