16.11.2008
Мой компьютер – моя крепость. Это не девиз, скорее цель в долгосрочной перспективе. А ведь было время, когда мы обходились одними только антивирусными сканерами, и ничего страшного с нашими машинами не происходило…
Однако время то давно прошло. Сегодня товарищи, пренебрегающие защитой своего ПК (а таких, между прочим, не так уж и мало), рано или поздно начинают об этом жалеть. Скорее даже рано.
Сложно представить себе современный компьютер, на котором не найдется хотя бы пары программ, обеспечивающих защиту от всевозможных троянов, вирусов, руткитов и прочего вредоносного ПО. Особенно актуально это для систем Windows.
В «пингвине» все несколько проще: вирусов под эту «ось» мало, а те, что есть, в основном носят концептуальный характер и серьезного вреда нанести неспособны. Так уж устроен Linux – вредоносному софту в нем живется плохо и неуютно. К тому же к вашим услугам несколько антивирусов (и бесплатных, и коммерческих), с которыми не так уж и сложно разобраться. А вот с файрволлами дело обстоит несколько сложнее. Как правило, установив новую для себя «ось», недавний пользователь «Окошек» интересуется этим вопросом едва ли не в первую очередь.
Именно поэтому решено было рассказать подробно о файрволле в Linux для тех, кто недавно начал использовать эту ОС или вообще только собирается с ней познакомиться.
Обозначу уровень начальных знаний. Что касается собственно «пингвина», возможно, потребуется установить один-два пакета, может быть – собрать что-нибудь из «сырцов», но не более. Будет здорово, если вы как минимум понимаете, что такое межсетевой экран и каким образом он работает, а слова «хост», «порт» или «IP-адрес» не вызывают у вас особых вопросов.
Начнем, пожалуй, с того, что выбирать и устанавливать файрволл вам не придется. Он уже встроен в ядро Linux и зовется (кто там сказал «iptables»?) Netfilter (www. netfilter.org). А упомянутый iptables есть не что иное, как утилита для его конфигурирования. Однако, так как второе является неотъемлемой частью первого, предлагаю вам дальше использовать именно название «iptables» (такова традиция; кстати, о существовании Netfilter многие вообще не подозревают).
Основное отличие iptables от его «виндовых» сородичей заключается в том, что он не контролирует работу приложений. То есть вы можете создавать правила, касающиеся различных портов и адресов, но не приложений. И что там будет работать через открытые порты – это проблема ваша, а не файрволла. Однако в обморок по этому поводу падать не стоит, памятуя о том, что с вредоносным ПО в «пингвине» кризис.
На различных веб-форумах бурно обсуждается вопрос, так ли уж необходим в Linux брандмауэр (правда, корректнее было бы говорить о том, требуется ли вмешательство в его умолчальные настройки). Лейтмотив таков: если у вас не запущено на компьютере никаких сервисов, подразумевающих доступ из Сети (например WEB или FTP), то и файрволл не нужен.
Возможно, этот подход можно назвать правильным, но не для начинающего пользователя, который, ковыряясь в системе, может чего-нибудь там напортачить и что-то ненужное ему запустить. Поэтому мой вердикт таков: если ваш ПК подключен к интернету через шлюз в дружественной локалке (например в офисе или дома) – не стоит морочить себе голову. В остальных случаях защитой лучше не пренебрегать.
Поэтому приступаем непосредственно к настройке брандмауэра в Linux. Здесь нам предстоит нелегкий выбор: можно воспользоваться различными графическими утилитами, а можно пойти тропой настоящих индейцев и настроить все вручную.
Изначально я склонялся именно ко второму варианту, однако попытки уместить в рамки статьи теорию, номенклатуру, синтаксис и описание минимума необходимых правил для iptables потерпели полное и сокрушительное фиаско (грустный смайл).
Так что поневоле переходим к разговору о графических утилитах для настройки файрволла. Их довольно много – когда я планировал статью, то навскидку вспомнил штуки четыре. Однако поскольку задачи сравнения таких утилит не стояло, предлагаю остановиться на одной – Firestarter (www.fs-security.com).
Выбор обусловлен несколькими критериями: Firestarter – едва ли не самое популярное решение в этой области, его интерфейс прост и интуитивно понятен, при этом программа обладает функционалом, достаточным для решения практически любых задач, которые могут возникнуть у рядового пользователя. Кроме того, как мне кажется, именно Firestarter будет наиболее простым решением для тех, кто привык пользоваться файрволлами в «Окошках».
«Firestarter – это визуальная программа настройки файрволла с открытым кодом», – говорится на официальном сайте. Несмотря на то что он позиционируется как графическая оболочка для iptables, в Firestarter есть также неплохой набор дополнительных функций. Программа имеет простенький, но весьма полезный мастер настройки, умеет мониторить события и даже обеспечивать общий доступ к интернету. Ну а единственный, на мой взгляд, минус – это англоязычный интерфейс (точнее, он вроде как русифицирован, но лишь частично).
После установки программы вы увидите мастер настройки, там всего три этапа.
Первый – Network Device Setup: здесь необходимо указать сетевой интерфейс, через который компьютер подключен к интернету. Также имеются две галочки: Start the Firewall on Dial-out («Включить файрволл при дозвоне»; «счастливые» обладатели модемного доступа в Сеть – это для вас) и IP Address Is Assigned via DHCP (Dynamic Host Configuration Protocol – протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети) – это для тех, кто подключен через локалку. Если IP-адреса у вас назначаются автоматически (т. е. если вам никогда не приходилось вводить их вручную), эту галочку нужно установить.
Следующий шаг – Internet Connection Sharing Setup – будет интересен тем, кто хочет раздавать интернет со своей машины, скажем во внутреннюю домашнюю сеть. Подробнее об этом см. врезку «Делимся интернетом».
Наконец, мастер предложит запустить файрволл (т. е. проставить галочку Start Firewall Now). Если на последнем этапе нажать на кнопку «Сохранить», в трее появится значок Firestarter.
Кстати, давайте на секунду отвлечемся и поговорим об этом значке. Дело в том, что после перезагрузки компьютера вы его не увидите. Так что вам придется отправиться в меню (например, в Ubuntu нужный ярлычок появится в меню «Приложения» в разделе «Интернет») и запустить Firestarter вручную.
То, что соответствующая иконка появляется в трее только после старта программы, не должно вас смущать – файрволл все равно работает, даже когда иконки Firestarter в трее нет. Если же такое положение вещей нарушает ваше душевное равновесие, то, немного погуглив, вы без труда обнаружите способы решения этой проблемы.
Итак, с установкой и запуском, кажется, разобрались – перед нами главное окно программы, в котором всего-то три кнопки и три вкладки. Рассмотрим их по порядку.
Кнопка Preferences приведет вас в окно настроек. Их вообще-то не так уж и много. Раздел Interface – здесь всего две галочки. Первая (Enable Tray Icon), как следует из названия, отвечает за наличие или отсутствие в трее иконки Firestarter. Вторая (Minimize to Tray on Window Close) определяет, будет ли программа сворачиваться в трей или просто завершит работу, когда вы закроете ее окно. В разделе Interface содержатся две вкладки: Events позволит вам указать, какие из заблокированных соединений не нужно отображать в списке событий, а Policy содержит только одну-единственную галочку – Apply Policy Changes Immediately («Применять изменения в правилах немедленно»). Зачем она нужна, вы поймете позже, когда мы займемся созданием правил.
Переходим к разделу Firewall – здесь три галочки. Первая, Start / Restart Firewall on Program Startup, перезапускает файрволл при запуске графического интерфейса. Галочка по умолчанию стоит, и трогать ее мы не будем. Опцию Start / Restart Firewall on Dial-out стоит поставить тем, кто выходит в Сеть через модем. Наконец, последняя, третья, галочка – Start / Restart Firewall on DHCP Lease Renewal – должна быть проставлена у тех, в чьей локальной сети адреса раздаются по DHCP.
В разделе Firewall имеются также четыре вкладки. В первой (Network Settings) можно выбрать «смотрящий» в интернет сетевой интерфейс (Internet Connected Network Device). Здесь же расположены и параметры общего доступа в интернет, а также настройки DHCP-сервера – и то и другое мы с вами рассмотрим немного ниже.
Вкладки ICMP и TOS Filtering вряд ли вам нужны, если вы не знаете, что это такое. Поэтому в целях экономии журнального места отправляю вас в Google для ознакомления с этими терминами.
И, наконец, вкладка Advanced Options содержит настройки методов блокировки пакетов и широковещательного трафика. Менять здесь ничего не нужно. Вот и все, с настройками мы разобрались. Возвращаемся в главное окно программы и переходим к следующей кнопке – Lock Firewall.
Она служит для «запирания» файрволла, то есть прекращения любой сетевой активности, и может быть полезна в экстренных случаях, когда требуется немедленно перекрыть доступ к машине извне (мало ли что бывает). Для возвращения брандмауэра в исходное положение просто нажимаем ту же самую кнопку, которая, впрочем, теперь называется Unlock Firewall.
Последняя кнопка, Stop Firewall, служит для диаметрально противоположной цели: с ее помощью можно временно отключить межсетевой экран. Это может быть полезно в том случае, если вы, например, не можете понять, почему не работает с сетью то или иное приложение – из-за неправильно созданных правил брандмауэра (скажем закрыт нужный порт) или по какой-то другой причине. Кратковременное отключение файрволла – один из самых простых способов это проверить.
Теперь переходим к вкладкам. Открытая по умолчанию после запуска программы Status призвана информировать нас о том, работает или не работает в данный момент файрволл, о количестве событий вообще и требующих внимания (Serious) в частности. Чуть ниже, в разделе Network, отображаются данные о текущих сетевых подключениях: сколько данных принято (Received), сколько отправлено (Sent), активно ли подключение в данный момент, и с какой скоростью идет передача данных (Activity). Наконец, в самом низу вкладки расположен раздел Active Connections, подробно информирующий нас о параметрах активных подключений.
Вторая вкладка, Events, служит для просмотра событий, которые отображаются в списке разными цветами в зависимости от серьезности. Безобидные события – серые, регулярные попытки подключения к случайному порту – черные (как правило, в этом нет ничего страшного – либо детишки-кулхацкеры балуются сканированием портов, либо по сетке гуляет какой-нибудь червь или вирус). Красный цвет сигнализирует о попытке подключения к какому-либо закрытому сервису, на них следует обратить внимание.
Вот мы и подошли к самому важному – вкладке Policy, т. е. политики входящего и исходящего трафика. Начнем с настройки правил для входящих соединений (Inbound Traffic Policy). По умолчанию все они блокируются – другими словами, запрещено все, что не разрешено. Если вы не собираетесь предоставлять кому-либо доступ к сервисам, запущенным на вашем компьютере или во внутренней сети, то создавать какие-либо правила в этом разделе не нужно.
Если требуется разрешить доступ с какого-то одного конкретного IP-адреса или из определенной сети ко всем сервисам вашего компьютера, то правило нужно создать в разделе Allow Connection from Host (разрешить любые соединения с конкретного IP-адреса (-ов) или хоста). Для этого надо кликнуть правой кнопкой мыши в пустом поле раздела и выбрать в контекстном меню пункт Add Rule. В открывшемся окошке будет всего два поля – IP, Host or Network и Comment, последнее заполнять необязательно. В первое же требуется вписать IP-адрес той машины, которой нужно предоставить доступ к вашему компьютеру.
Если требуется, можно открыть доступ и для всех компьютеров сети. Например, если в вашей локалке внутренние адреса имеют вид 10.40.xx.xx, то для того, чтобы открыть доступ всем, введем следующее значение: 10.40.0.0.
Теперь предположим, что у вас на компьютере запущен веб-сервер и надо разрешить доступ только к нему. Обратимся к другому разделу – Allow Service (открыть порт). Здесь нас ждет намного больше полей. Name заполнять не обязательно (названия для большинства сервисов Firestarter выставит сам), а в поле Port вписываем необходимый порт (например, если вы ничего не меняли в настройках веб-сервера, то нужно выбрать 80-й). Ниже мы можем указать, кому разрешить доступ. Есть варианты Anyone (всем), LAN Clients (только из внутренней сети, если таковая имеется, а компьютер, на котором работает файрволл, в этом случае является шлюзом) и уже знакомое нам поле IP, Host or Network (заполняется аналогично тому, как указано выше).
А теперь предположим, что вам надо обеспечить доступ к веб-серверу не на машине, которая подключена к интернету, а на другом компьютере, расположенном во внутренней сети. Вот тут-то нам и потребуется последний раздел Forward Service (переадресация). В окне создания правила заполним следующие поля: в Forward Service from Firewall нужно указать номер порта, с которого будет осуществляться переадресация, в поле To Internal Host – IP-адрес и порт той машины, на которой «крутится» веб-сервер.
С политикой входящего трафика мы закончили и теперь, соответственно, перейдем к политике исходящего трафика – Outbound Traffic Policy. Здесь нас ожидает два варианта по умолчанию: Permissive by Default, Blacklist Traffic (установлен по умолчанию) – он подразумевает, что разрешен любой исходящий трафик, кроме того, который запрещен явно, путем создания каких-либо правил. В силу специфики работы межсетевого экрана в Linux это вполне приемлемый вариант для домашнего компьютера. Можно остановиться на нем и не создавать вообще никаких правил. Если же все-таки потребуется что-нибудь «перекрыть», то к вашим услугам три формы для создания правил (сам принцип того, как это делается, я думаю, вам уже понятен): Deny Connections to Host (запретить соединение с конкретным IP-адресом или хостом), Deny Connections from LAN Host (запретить соединение с конкретным IP-адресом или хостом во внутренней сети; пример: надо заблокировать доступ в интернет для какой-то одной машины) и Deny Service – (закрыть порт; тут, думаю, все и так понятно).
Второй вариант политики по умолчанию – Restrictive by Default, Whitelist Traffic – запрещено все, что не разрешено. Неплохой вариант для офиса (чтобы все, понимаешь, работали, а не в инете сидели) или для параноика. К вашим услугам, опять-таки, три раздела для создания правил, прямо противоположные описанным чуть выше: Allow Connections to Host (разрешить соединение с хостом или IP-адресом; это, например, тот случай, когда надо, чтобы с конкретного компьютера был доступ только к какому-то одному сайту), Allow Connections from LAN Host (разрешить соединение с IP-адресом или хостом из внутренней сети) и Allow Service (открыть порт). В последнем случае придется немного поработать. Если речь идет о домашнем компьютере, то вам как минимум понадобятся порты 80 (HTTP), 443 (HTTPS), 21 (FTP), 5190 (ICQ), 25 (SMTP), 110 (POP3) – остальное зависит исключительно от ваших потребностей, а описание того, какие порты для чего используется, вы без труда отыщете в Сети.
Вот и все. В заключение хочу обратить внимание еще на две вещи. Во-первых, если вы не поставили в окне настроек галочку Apply Policy Changes Immediately, то для вступления созданных вами правил в силу потребуется нажатие кнопки Apply Policy. А еще правила можно создавать прямо из списка событий, щелкнув правой кнопкой мыши на той или иной записи. Ничего особенно сложного там нет, так что, надеюсь, разберетесь сами.
Что в итоге? Даже если вы, установив Firestarter и ответив на вопросы мастера, не стали делать никаких дополнительных настроек, результат будет вполне удовлетворительным – доступ к вашему компьютеру извне закрыт, а этого по «пингвиньим» меркам вполне достаточно для спокойной жизни.
Делимся интернетом
Как уже говорилось, Firestarter можно использовать для организации общего доступа к Сети. Перейдем к реализации этой задачи на практике. Одним «Файрстартером» тут дело не ограничится.
Если вкратце, начать следует с установки DHCP-сервера и его настройки. Ссылок приводить не буду, так как в разных дистрибутивах эта операция может иметь некоторые отличия. Google поможет вам найти все, что нужно.
Затем надо правильно настроить оба интерфейса – внешний и внутренний. Что касается первого (того, который «смотрит» наружу, т. е. в сеть провайдера), то его настройка ничем не отличается от обычного подключения к интернету (если вы не знаете, как это сделать, поищите информацию в Сети – благо этому вопросу отведено много места в любом FAQ по «пингвину»). Второй интерфейс (который «смотрит» в домашнюю сеть) должен иметь статический IP-адрес – иначе Firestarter отругает вас последними словами. Компьютеры-клиенты следует настроить на получения IP-адреса по протоколу DHCP.
Потом в зайдите в окно настроек Firestarter (Preferences) и на вкладке Network Settings установите галочки Enable Internet Connection Sharing и Enable DHCP for the Local Network. Неплохое руководство размещено на этой страничке: www.fs-security.com/docs/connection-sharing.php (к сожалению, только на английском, но знание хотя бы основ языка Шекспира сильно облегчит жизнь в «Линуксе»).
Кстати, многим, как и мне, наверное, пришла в голову такая мысль: а нельзя ли обойтись без DHCP? Всего-то и надо, скажем, дома обеспечить инетом один-единственный ноутбук – как-нибудь не надорвемся задать IP-адрес вручную. Если говорить конкретно про Firestarter, то, видимо, нельзя. У меня, по крайней мере, это не получилось.
Однако способ есть – надо немного «пообщаться» напрямую с iptables. Здесь, по адресу 4pda.ru/forum/index.php?showtopic=58487, выложен скрипт, вбив в который имена нужных интерфейсов, вы добьетесь желаемого результата. Ссылка на «непрофильный» форум приведена потому, что первоисточник, указанный автором поста, к сожалению, уже недоступен.
Настоящим индейцам
Графический интерфейс (Firestarter) – конечно, удобная штука, кто бы спорил. Однако и вариант с настройкой iptables вручную, без использования графических утилит, не лишен преимуществ.
Судите сами. Во-первых, один раз написав конфигурационный файл, вы сможете сохранить его при переустановке системы или использовать в другом дистрибутиве. Во-вторых, это единственный вариант для тех, кто настраивает брандмауэр на машине, где Linux работает вообще без «иксов» (т. е. оконной среды X Window System, которая используется в Linux, официальный сайт www.x.org. – Прим. ред.).
Неплохой идеей будет начать с азов. Просто почитайте, как все устроено, – об этом довольно неплохо написано, например, в русскоязычной части «Википедии» (ru. wikipedia.org/wiki/Netfilter). Помимо этого рекомендую ознакомиться со следующими ссылками: posix.ru/network/iptables и www.opennet.ru/docs/RUS/iptables, причем именно в таком порядке.
Конечно, поначалу будет трудновато, потому что придется править конфигурационные файлы вручную и разбираться с внутренним миром Linux. Однако уверен, что все ваши усилия окупятся сторицей – вы получите знания, которые можно использовать при настройке файрволла в любом дистрибутиве.
|