главная / полезное... / Записки про Linux / Введение Linux / Настройка программного обеспечения

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

 


4.1 Настройка интерфейсов
Для каждого сетевого устройства (серийная линия с модемом, Ethernet плата) Вы должны подключить драйвер (на этапе сборки ядра или динамически) и установить интерфейс.
Динамическое подключение драйверов и устнановка интерфейса для устройств, как правило производится в файле /etc/rc/rc.inet1.
Для динамического подключения драйвера необходимо в файл rc.inet1. добавить команду(ы):
/sbin/insmod /lib/modules/<номер_ядра>/net/<имя_об'ектого_файла_драйвера>

Интерфейсом с точки зрения ОС является устройство через которое система получает и передает IP-пакеты. Каждое устройство (не вся машина) имеет свой IP-адрес. Интерфейс для устройства устанавливается командой ifconfig.
В файле rc.inet1 Вы должны установить следующие интерфейсы:
  • Локальный интерфейс (lo). Настройка этого интерфейса, как правило, автоматически включается в файл rc.inet1 при установке дискет N1-4 (TCP/IP) ОС Linux.
  • Интерфейс для платы Ethetnet (eth0).
  • Интерфейс для серийного порта - SLIP/CSLIP (sl0) или PPP (ppp0) в зависимости от возможностей IP-провайдера.



Настройка локального интерфейса 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 и т. д.


Для конфигурации интерфейса Вам надо знать:
  • IP-номер машины в сети
  • Широковещательный адрес (BROADCAST)
  • маску подсети (subnetmask)

В файле 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 по вышеперечисленным трем интерфейсам:


  • Локальный интерфейс (lo).
  • Интерфейс для платы Ethetnet (eth0).
  • Интерфейс для серийного порта - SLIP/CSLIP (sl0).


Локальный инерфейс поддерживает сеть с 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).
  • выключение серверов на локальным машинах
  • закрытие или ограничение доступа к серверам на локальных машинах
    (wrapping).



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


  • Вам необходимо подправить файл /etc/inetd.conf на всех локальных машинах
  • Вы закрываетет доступ к серверу не только Internet'овских пользователей но
    и локальных.


Если Вы хотите лишь огранчить доступ к серверу, не выключая его, то Вам надо
настроить 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

:: назад