Fedora 8 Руководство пользователя — страница 24 из 28

7.5.1. Что такое брандмауэр

Основная задача брандмауэра (другие названия - межсетевой экран, бастион, firewall) - фильтрация пакетов. Брандмауэр просматривает заголовки всех пакетов, которые передаются по сетевым интерфейсам вашего компьютера, и выполняет действия над этими пакетами к соответствии c установленными для него правилами.

Брандмауэр может использоваться как для защиты едкого компьютера, например, домашнего компьютера, подключаемого к Интернету, так и для защиты всей сети, В случае с сетью брандмауэр устанавливается на шлюзе - компьютере, через который остальным компьютерам в сети предоставляется доступ к Интернету,

Настройка брандмауэра для зашиты одного компьютера очень проста. По умолчанию брандмауэр запрещает доступ к вашему компьютеру всем пользователям Интернета. Для настройки брандмауэра вам нужно лишь указать, каким службам можно будет обращаться к вашему компьютеру. Например, если вы хотите получить удаленный доступ к консоли своего компьютера, необходимо разрешить службу SSH (Secure Shell), После этого вы сможете подключиться к консоли своего компьютера с другого компьютера (из любой точки земного шара) с помощью следующей команды: ssh имя_вашего_компьютера

Понятно, что в момент удаленного подключения наш компьютер должен быть включен, загружен и подключен к Интернету.

Настройка брандмауэра на шлюзе чуть сложнее. Предположим, у нас есть небольшая сеть (пусть это будет домашняя сеть) из нескольких компьютеров. Лишь один компьютер в этой сети непосредственно подключен к Интернету (далее мы будем называть его шлюзом), но мы хотим, чтобы все компьютеры в сети тоже могли работать в Интернете.

На компьютере-шлюзе должно быть как минимум два сетевых интерфейса. Один интерфейс (внешний) будет использоваться для выхода в Интернет, а второй (внутренний) - для связи с компьютерами локальной сети.

Сетевые интерфейсы могут быть разными, например, сетевая плата (для связи с сетью) и модем (для связи с Интернетом). Если у вас ADSL-модем, тогда вам придется купить еще одну сетевую плату. К одной сетевой плате (интерфейс eth0) вы подключите ADSL-модем, а вторая (интерфейс eth1) будет использоваться для подключения к локальной сети.

В локальной сети используются так называемые локальные адреса вроде 10.*.*.* или 192. 168.*.*. Такие адреса не пропустит ни один шлюз Интернета, поэтому наш шлюз должен выполнять преобразование адресов. Сейчас поясню, что это такое. Предположим, что компьютер внутренней сети с IP-адресом 192.168.1.2 пытается получить доступ к узлу www.mail.ru. Он посылает запрос (который получит наш шлюз) вида: "Отправитель: 192.1б8.1.2, получатель: 194.67.57.226 (это IР-адрес сайта www.mail.ru)".

Шлюз получает этот запрос и перезаписывает его так: "Отправитель: 193.254.219.230, получатель: 194.67.57.226". Как вы уже догадались, 193.254.219.230 - это (IР-адрес самого шлюза в Интернете. Данный адрес является реальным (не локальным), поэтому запрос от такого адреса пройдет по глобальной сети нормально.

Шлюз, получив ответ от узла 194.67.57.236 вида "Отправитель: 134.67.57.226, получатель 193.254.219.230", перезаписывает его так: "Отправитель: 194.67.57.226, получатель 192.168.1.2". Сайт 194.67.57.226 ничего не заподозрит - он будет считать, что "общается" с узлом 193.254.219.330, а узел 192.168.1.2 будет полагать, что получил ответ непосредственно от www.mail.ru.

Как видите, все достаточно просто. Данная процедура называется NAT (Network Address Translation) - преобразование сетевых адресов. Теперь, когда теория изучена, можно приступать к практике.

7.5.2. Конфигуратор system-config-firewall

Для настройки брандмауэра используется конфигуратор system-config-firewall. При запуске программа сообщит, что является всего лишь оболочкой и позволяет произвести только базовую настройку брандмауэра (рис. 7.3). Но в нашем простом случае этого будет вполне достаточно.

Проще всего выполнять первую настройку брандмауэра с помощью мастера, поэтому щелкните на кнопке Wizard панели инструментов. Первый вопрос мастера - подключена ли ваша система к сети (к любой сети, в том числе и к Интернету). Понятно, что подключена, поэтому выбираем в списке значение System with network access (рис 7.4).

Рис. 7.3. Предупреждение об ограниченных возможностях программы-конфигуратора

Рис. 7.4. Запрос: система подключена к Сети?


Затем нужно указать, подключена система только к одной сети (значение Up to one) или к нескольким сетям (значение More than one). Если у вас только один компьютер и вы не хотите настраивать общий доступ к Интернету, тогда следует выбрать в списке значение Up to one. В противном случае (когда у вас несколько компьютеров и вы хотите настроить общий доступ) нужно выбрать значение More than one (рис. 7.5).

Рис. 7.5. Запрос: система подключена к одной или к нескольким сетям?

Далее нужно честно оценить ваши знания по настройке сети; новички выбирают значение Beginner, а более опытные пользователи - значение Expert. Понятно, что в режиме Expert (рис. 7.6) конфигуратор предоставляет больше возможностей по настройке брандмауэра, чем в режиме Beginner. (А точнее, в режиме Beginner недоступны разделы Доверенные интерфейсы, Маскарадинг и Custom Rules). Далее нужно пару раз щелкнуть на кнопке Next, и конфигурация брандмауэра будет создана.

Теперь можно перейти к основному окну брандмауэра (рис. 7.7), в котором присутствует пять разделов.

• Trusted services - доверяемые службы: службы, которым разрешен удаленный доступ к вашему компьютеру. По умолчанию отмечены IPsec, mDNS, Сетевая печать и SSH. Рекомендую отключить службу SSH - вряд ли вы будете подключаться к своему компьютеру по протоколу SSH.

Рис. 7.6. Выбор режима настройки интерфейса

Рис. 7.7. Основное окно конфигуратора system-config-firewall


Other ports - в предыдущем разделе перечислены только общеизвестные службы, например, Web-сервер, FTP-сервер и др. (см. врезку ниже). Если нужной вам службы в списке нет, ее можно добавить в разделе Other ports. Например, вы установили в системе игровой сервер (для того же Counter Strike) и хотите разрешить к нему доступ извне (из Интернета), чтобы другие пользователи могли подключиться к вашей игре.

Custom rules - позволяет добавить пользовательские правила. Пользовательские правила - это правила, сохраненные в специальном файле с помощью программы iptables-save. Кстати, программа iptables - это и есть брандмауэр Linux, a system-config-firewall - это всего лишь оболочка для нее. Раздел Custom rules предназначен для тех случаев, если брандмауэр у вас был настроен ранее (в предыдущих версиях Fedora), вы сохранили его настройки, переустановили систему, а теперь хотите их импортировать. Хотя, если честно, пользователям, умеющим настраивать iptables, никакой конфигуратор для импорта настроек не нужен вовсе! Разделы Доверенные интерфейсы и Маскарадинг используются для настройки NAT, т. е. общего доступа к Интернету. Но, вообще говоря, для настройки общего доступа к Интернету намного проще использовать утилиту Firestarter (пакет называется firestarter).

О настройке Web-сервера и FTP-сервера вы можете прочитать в других моих книгах, посвященных настройке сетевого сервера под управлением Linux. В данной книге настройка этих сетевых служб не рассматривается.

7.5.3. Программа Firestarter: общий доступ к Интернету

С немощью Firestarter вы можете настроить общий доступ к Интернету всего за пару щелчков мыши. Данная программа намного удобнее стандартного конфигуратора system-config-firewall.

Сначала установим саму утилиту firestarter.

# yum install firestarter


После установки запустите firestarter: firestarter. При первом запуске откроется окно мастера (рис. 7.8), помогающего настроить брандмауэр.

Рис. 7.8. Стартовое окно мастера Firestarter

Первым делом мастер попросит указать устройство, с помощью которого вы подключаетесь к Интернету (рис. 7.9).

Рис. 7.9. Выбор сетевого интерфейса для подключения к Интернету

В очередном окне нужно установить флажок опции Enable Internet connection sharing (рис. 7.10), а в следующем - Start firewall now (рис. 7.11). Этим вы разрешите общий доступ к Интернету и запустите брандмауэр прямо сейчас.

Рис. 7.10. Разрешение общего доступа к Интернету


Рис. 7.11. Немедленный запуск брандмауэра

На этом настройка шлюза завершена. Теперь нужно настроить остальные компьютеры вашей сети. На каждом компьютере нужно запустить конфигуратор system-config-network, выделить интерфейс сетевой платы (eth0), щелкнуть на кнопке Свойства и в качестве IP-адреса шлюза установить IP-адрес компьютера, на котором запушен Firestarter (рис. 7.12),

Затем нужно перейти на вкладку DNS конфигуратора system-config-network и установить адреса DNS-серверов провайдера (рис. 7.13).

На этом настройку брандмауэра можно считать завершенной.


Рис. 7.12. Установка адреса шлюза на остальных компьютерах сети

Рис. 7.13. Прописывание DNS-адресов

7.6. Планировщики заданий

7.6.1. Выбор планировщика

В состав Fedora входит три планировщика: crond, anacron и atd. Планировщик crond используется для создания расписания, т.е. для периодического выполнения указанных пользователем команд в определенное время. Например, вы можете задать команду, которая будет выполняться каждый час, каждый день или раз в месяц.

Планировщик atd немного проще. Он умеет выполнять программы в строго определенное время, т.е. вы можете задать время и дату, например, 7 часов 11 октября, и команду, которая будет выполнена и это время.

Понятно, что планировщик crond более универсальный, поэтому в большинстве случаев вы будете использовать именно его. A планировщик atd можно вообще отключить.

Планировщик anacron является ближайшим родственником crond. Он похож на crond, но в то же время заслуживает отдельного разговора.

7.6.2. Планировщик crond

7.6.2.1. Файл конфигурации /etc/crontab

Основной конфигурационный файл данного планировщика называется /etс/crontab. Этот файл является общесистемным расписанием и его может редактировать только пользователь root. Формат файла crontab следующий:

М Ч Д ММ ДН Команда

где;

М - минута (0-59);

Ч - час (0-23);

Д - день (1-31);

ММ - месяц (1-12);

ДН - день недели (0=Вс, 1=Пн и т.д.).

Рассмотрим типичный пример данного файла (листинг 7.3).

Листинг 7.3. Типичный пример файла crontab

SHELL= /bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/


# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Здесь SHELL, PATH, MAILTO и HOME - это переменные окружения, задающие, соответственно, оболочку, путь поиска программ, адрес администратора и домашний каталог - они нужны только в общесистемном файле. Нас больше интересует вторая часть этого файла:

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Команда run-parts означает, что должны быть выполнены все выполняемые файлы (обычно это сценарии) из указанного каталога. Не сложно догадаться, что из каталога /etc/cron.hourly команды будут выполняться каждый час, из каталога /etc/cron.daily - каждый день (в 4 часа утра), из каталога /etc/cron.weekly - раз в неделю по воскресеньям, а из каталога /eta/сron.monthly - раз в месяц, 1-го числа.

7.6.2.2. Правильное расписание для домашнего компьютера

Взгляните на формат файла crontab, а затем на имеющееся расписание. Программа crond довольно "древняя". Первоначально она появилась в UNIX, а UNIX преимущественно устанавливалась на серверах, которые работают круглосуточно и никогда не выключаются. Потом программа crond ''перекочевала" в Linux. Система Linux тоже сначала использовалась на машинах, которые практически никогда не выключаются - на компьютерах профессиональных пользователей-фанатов и на серверах. Со временем система Linux плавно переехала на домашние компьютеры, но в 4 часа утра компьютеры домашних пользователей… выключены. Следовательно, заданные команды не будут выполнены никогда!

Поэтому нам, как домашнему пользователю, нужно изменить расписание хотя бы так, как показано ниже (думаю, к 9 часам можно включить компьютер практически в любой день, включая воскресенье),

02 9 * * * root run-parts /etc/cron.daily

22 9 * * 0 root run-parts /etс/cron.weekly

42 9 1 * * root run-parts /etc/cron.monthly

Если вы работаете за домашним компьютером преимущественно вечером, то время выполнения следует "переместить" на вечер:

02 20 * * * root run-parts /etc/cron.daily

22 20 * * 0 root run-parts /etc/cron.weekly

42 20 1 * * root run-parts /etc/cron.monthly

Кроме того, может потребоваться изменить день недели для команд, которые выполняются еженедельно (в приведенных примерах задан день недели 0 = Bс, а в воскресенье компьютер может быть выключен):

22 20 * * 1 root run-parts /etc/cron.weekly

В результате команды из каталога /etc/cron.weekly будут запускаться каждый понедельник в 20 часов 22 минуты.

7.6.2.3. Сценарии

Как уже было отмечено выше, в каталоги /etc/cron* помещаются сценарии, которые нужно выполнить в указанное время. Рассмотрим шаблон типичного сценария (листинг 7.4).

Листинг 7.4. Шаблон сценария

#!/bin/bash

команды

Первая строка обязательна. После нее можно писать любые команды, которые нужно выполнить, например freshclam (используется для обновления антивирусных баз).

После того как сценарий создан, нужно сделать его выполняемым (без этого система не сможет его запустить);

# chmod + имя_файла_сценария

7.6.2.4 Пользовательские файлы crontab

Каждый пользователь может создать свой файл crontab. Для этого используется команда crontab. Пользовательские файлы crontab помещаются в каталог /var/spool, чтобы исключить их непосредственное редактирование в текстовом редакторе.

Пользовательские файлы crontab никак не влияют на общесистемный файл /etc/crontab, который редактируется только пользователем root.

7.6.3. Планировщик anacron: отдельный разговор

Как уже было отмечено, anacron - это ближайший родственник crond. Он создан для того, чтобы устранить некоторые недостатки crond. Предположим, вы хотите, чтобы антивирусная база обновлялась в понедельник, в 18.00. Но если в один прекрасный день вы еще не придете с работы в указанное время, компьютер останется выключенным и, следовательно, обновления не произойдет. В результате вы останетесь со старой базой (если, конечно, не запустите обновление вручную).

Планировщик Anacron контролирует выключения и перезагрузки компьютера, поэтому ваши задания не останутся невыполненными. Тем не менее, и у anacrontab есть недостатки,

• Пользователи не могут создавать свои расписания, системный файл /etc/anacrontab может редактировать только пользователь root.

• Планировщик crond более гибкий в настройке: вы можете указать часы и минуты, когда должна быть выполнена команда. В случае планировщика anacron можно указать только период, когда будет выполнена указанная команда, и допустимую задержку.

Формат файла /etc/anacrontab следующий: Период Задержка ID-задачи Команда

Пример файла anacrontab представлен в листинге 7.5.

Листинг 7.5. Пример файла /etc/anacrontab

# /etc/anacrontab: файл настройки для anacron

# См. anacron(8) и anacrontab(5) для более подробной инфoрмации

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# These replace cron's entries

1 5 cron.daily run-parts /etc/cron.daily

7 10 cron.weekly run-parts /etc/cron.weekly

30 75 cron.monthly run-parts /etc/cron.monthly

7.6.4. Планировщик atd

Теперь разберемся, как использовать планировщик atd - это совсем просто. Для создания нового задания используется команда:

at ‹время› [дата]

Если дата не указана, по подразумевается, что команды нужно выполнить сегодня. Время указывается в формате АМ/РМ. Например, если вам нужно выполнить команду в 9 утра, то нужно указать at 9 am. Если же нужно выполнить команду в 21.00, тогда нужно ввести команду at 9pm.

После того как, задав время, вы нажмете ‹Enter›, планировщик atd будет ждать, пока вы введете все необходимые команды, которые нужно выполнить в указанное время. Для завершения ввода перечня команд нужно нажать комбинацию клавиш ‹Clrl+D›.

Чтобы просмотреть очередь заданий, введите команду atq, a для удалении заданий используется команда atrm номер. Номер заданий можно узнать с помощью команды atq.

7.7. Система SELinux: краткое руководство