4 Настройка программного обеспечения

Содержимое этого раздела

4.1 Настройка интерфейсов

Для каждого сетевого устройства (серийная линия с модемом, Ethernet плата) Вы должны подключить драйвер (на этапе сборки ядра или динамически) и установить интерфейс.

Динамическое подключение драйверов и устнановка интерфейса для устройств, как правило производится в файле /etc/rc/rc.inet1.

Для динамического подключения драйвера необходимо в файл rc.inet1. добавить команду(ы):

/sbin/insmod /lib/modules/<номер_ядра>/net/<имя_об'ектого_файла_драйвера>

Интерфейсом с точки зрения ОС является устройство через которое система получает и передает IP-пакеты. Каждое устройство (не вся машина) имеет свой IP-адрес. Интерфейс для устройства устанавливается командой ifconfig.

В файле rc.inet1 Вы должны установить следующие интерфейсы:

Настройка локального интерфейса lo

Настройка локального интерфейса автоматически включается в файл rc.inet1 после установки TCP/IP. Локальный интерфейс устанавливается командой:

/sbin/ifconfig lo 127.0.0.1
Этот интерфейс используется для связи программ IP-клиентов с IP-серверами той же машины.

Например, чтобы проверить правильность установки TCP/IP, наберите команду:

ping 127.0.0.1

Чтобы проверить правильность работы IP-серверов используйте для IP-клиентов адрес локального интерфейса: 127.0.0.1. Например, для проверки работы ftp-сервера, наберите команду

ftp  127.0.0.1

Настройка интерфейса платы Ethernet локальной сети (eth0)

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

insmod <имя_об'ектного_модуля_драйвера>

Ядро именует драйверы Ethernet как eth0, eth1 и т. д.

Для конфигурации интерфейса Вам надо знать :

В файле rc.inet1 после инсталляции уже есть закомментированные строки с настройкой интерфейса. Вам надо лишь определить вышеперечисленые переменные и раскомментировать строки:
IPADDR="194.220.22.1"   # REPLACE with YOUR IP address!
NETMASK="255.255.255.0" # REPLACE with YOUR netmask!
BROADCAST="194.220.22.255" # REPLACE with YOUR broadcast address, if you
                           # have one. If not, leave blank and edit below.
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}

Интерфейс для серийного порта - SLIP/CSLIP (sl0) или PPP (ppp0)

Для работы по серийному порту Вы можете использовать как SLIP (Serial Line Interface Protocol) с его модификацией CSLIP (Compressed Serial Line Interface Protocol), так и PPP (Point To Point) протокол.

PPP-протокол (программа pppd) является более сложным - он позволяет проверять достоверность входа для коммутируемых линий, поддерживает не только IP-протокол но и другие.

SLIP/CSLIP - протокол является более простым и удобным в настройке и часто используется для выделенных линий.

В данной работе мы рассмотрим настройку SLIP/CSLIP протокола для работы по выделенной линии через модемы.

Наиболее популярной программой для работу по протоколу SLIP/CSLIP по модему является dip (DialUpIP). Она позволяет использовать модем как по выделенной так и по комутируемой линии и производить настройки скорости соединения, IP-адресов, процедуры входа и т. п.

Основная проблема в программой dip состоит в том, что при вызове она становится фоновым процессом и после падения линии снимается без повторного запуска так что очень трудно отследить падение линии и перезапустить процесс соединения. Для решения этой проблемы в данном примере используется модифицированая программа dip, которая не уходит в фоновый процесс и вы можете легко ее перезапустить после падения линии, написав процедуру на языке shell:

#!/bin/sh

while :;
do
    /sbin/dip файл_конфигурации_dip
    sleep 5
done
и вставив вызов этой процедуры в файл rc.inet1.

Файл конфигурации описывает номер порта, скорость работы модема, локальный и удаленый IP-адрес интерфейса и т. п. Пример файла конфигурации приведен ниже:

# Установка локального IP-адреса
get $local 193.124.190.229

# Установка удаленного IP-адреса
get $remote 193.124.190.230
# Установка номера порта и скорости соединения
port ttyS0
speed 38400


# Установка размера максимально передаваемого пакета
# maximal transfere unit
get $mtu 576

# для комутируемых линий далее следует команды
# инициализации модема, дозвонки до IP-провайдера и процедуры входа
# для выделенной линии этот раздел опущен

done:
  print CONNECTED $locip ---> $rmtip
  default
  mode CSLIP
  exit
Более подробное описание команды dip и ее настроек Вы найдете в документации на команду.

4.2 Настройка routing'а

Настройка routing'а (маршрутизации пакетов между интерфейсами) может быть как статической (однократно настраиваемая таблица), так и динамической.

Динамическая настройка бывает необходима в том случае, если у Вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например через разные Ethernet или SLIP интерфейсы). Для динамической настройки routing'а служат команды routed и gated.

Как правило в большинстве ситуаций бывает достаточно статической настройки интерфейса командой route.

Настройка routing'а производится в файле rc.inet1. Как правило Вам бывает необходимо настроить routing по вышеперечисленным трем интерфейсам:

Локальный инерфейс поддерживает сеть с IP-номером 127.0.0.1 . Поэтому для машрутизации пакетов с адресом 127.... используется команда :

/sbin/route add -net 127.0.0.1

Если у Вас для связи с локалной сетью используется одна плата Ethernet и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки routing'а достаточно вызвать:

NETMASK=255.255.255.0
/sbin/route add -net ${NETWORK} netmask ${NETMASK}
Если же Вы имеете насколько интерфейсов, то Вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса.

Настройку routing'а по интерфейсу SLIP/CSLIP производит команда dip, вызывая при установлении связи команды ifconfig и route.

4.3 Настройка nameserver'а

Если Вы не собираетесь заводить поддержку сервиса имен для свой сети (что является довольно сложной организациооной и технической проблемой) и доверяете ведение своих имен Вашему IP-провайдеру, то Вам достаточно указать в файле /etc/resolv.conf адрес nameserver'а вашего провайдера:

nameserver <адрес>
указать в файле /etc/host.conf
order hosts, bind
и описать Ваши локальные машины в файле /etc/hosts. Не забудьте имена Ваших машин, которые должны быть видны из Internet'а по их доменам, передать IP-провайдеру для ведения сервиса имен.

4.4 Настройка защиты

Защита локальной сети от взлома осуществляется следующими способами:

Screening routing

Данный режим защиты использует возможности ядра Linux блокировать указанные пакеты при их передаче (forwarding) с одного интерфейса на другой. Эти возможности включаются при конфигурации ядра (make config - см.выше) с параметрами:

IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y]
IP firewalling (CONFIG_IP_FIREWALL) [y]

Преимущество данного метода состоит в том, что Вы можете на одной машине (gateway между локальной сетью и Internet'ом) защитить всю локальную сеть, не защищая каждую мащину в отдельности.

Для того чтобы включить защиту Вам необходимо воспользоваться программой настройкой защиты ipfwadm.

В 90% случает бывает достаточно закрыть TCP-порты c 1-го по 1024 для запреты доступа к основным TCP-серверам и порты с 5000 по 65535 для запреда доступа с X-серверам, оставив порты 1025-4999 для работы программ-клиентов локальной сети. Если Вы хотите открыть доступ клиентам Internet к Вашим серверам (ftp,http и т п) (предварительно тщательно проверив защиту), то вы можете оставить открытыми соответствующие порты (см. /etc/service).

Все команды защиты Вы можете записать в отдельный командный файл (например /etc/rc.d/rc.firewall) и вызывать его при выходе системы в мультирежим из файла /etc/rc.d.rc.inet1.

Пример файла настройки защиты:

#!/bin/sh

NET=198.223.25
LOCALNET=198.223.25.0

/sbin/ipfwadm -B -f     #сброс блокировок

#Пропускать все пакеты внутри локальной сети
/sbin/ipfwadm -B -a accept -S ${LOCALNET}/24 -D ${LOCALNET}/24

#Задерживать пакеты на TCP-серверы локальной сети сети
/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${LOCALNET}/24 0:1024

#Задерживать пакеты на X-server'ы локальной сети
/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${LOCALNET}/24 5000:64575

# Пакеты с TCP-портов 1025 по 4999 разрешены для доступа из/в Internet
# эти порты используются клиентами (а не серверами) и взлом по ним невозможен


#Задерживать пакеты на UDP-серверы локальной сети
/sbin/ipfwadm -B -P udp -a deny -S 255.255.255.255/0 -D ${LOCALNET}/24 0:1024


#Защита gateway в Internet
GateWayIP=194.126.198.229/32

/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${GateWayIP} 0:20
# оставить окрытыми порты 21-23 - ftp -доступ
/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${GateWayIP} 24:79
# и 80 - http - доступ
/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${GateWayIP} 81:1024
/sbin/ipfwadm -B -P tcp -a deny -S 255.255.255.255/0 -D ${GateWayIP} 5000:64575
/sbin/ipfwadm -B -P udp -a deny -S 255.255.255.255/0 -D ${GateWayIP} 0:1024
# не забудьте максимально защитить ftp и www серверы от возможности взлома


#Зашита машин локальной сети вне Internet'a
#  Запретить локальным машинам с номерами 32-255 доступ к Internet
#машины 32-63
/sbin/ipfwadm -B -a deny -S 255.255.255.255/0 -D ${NET}.32/27
#машины 64-128
/sbin/ipfwadm -B -a deny -S 255.255.255.255/0 -D ${NET}.64/26
#машины 128-255
/sbin/ipfwadm -B -a deny -S 255.255.255.255/0 -D ${NET}.128/25

Выключение серверов на локальным машинах

Для того чтобы полностью закрыть доступ на локальной машине (речь идет о UNIX-машинах) к определенному сервису (например telnetd) достаточно в файле /etc/inetd.conf закомментировать строчку запуска данного сервера. В отличие от защитычерез firewall

Если Вы хотите лишь огранчить доступ к серверу, не выключая его, то Вам надо настроить TCP-wrapper (см. следующий раздел).

Wrapping

В ОС Linux при обращении из сети к TCP-порту суперсервер inetd вызывает не сам сервер, а программу tcpd, передавая ей параметром имя необходимого сервера (см. файл /etc/inetd.conf). Программа tcpd определяет IP-адрес клиента ищет этот адрес для указанного сервиса в файлах /etc/hosts.allow и /etc/hosts.deny. Если адрес найден в файле /etc/hosts.allow - клиенту разрешается доступ к указанному серверу, если же адрес найден в файле /etc/hosts.deny, то клиент не получает доступ к серверу. Например, если Вы хотите открыть доступ на сервер telnetd только с одной машины Вы добавляете в файл /etc/hosts.deny строку:

in.telnetd:ALL EXCEPT 194.128.18.25

След. Глава, Пред. Глава

Содержимое этой главы, Главное оглавление

Начало документа, Начало этой главы