Настройка программного обеспечения 2
Настройка программного обеспечения
href="http://www.linux.org.ru:8101/books/gateway/tcpiptune.html#toc4">Содержимое
этого раздела
Для каждого сетевого устройства (серийная линия с модемом, 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 и ее настроек Вы
найдете в документации на команду.
Настройка 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.
Если Вы не собираетесь заводить поддержку сервиса имен для свой сети (что
является довольно сложной организациооной и технической проблемой) и доверяете
ведение своих имен Вашему IP-провайдеру, то Вам достаточно указать в файле
/etc/resolv.conf адрес nameserver'а вашего провайдера:
nameserver <адрес>
указать в файле /etc/host.conf
order hosts, bind
и описать Ваши локальные машины в файле
/etc/hosts. Не забудьте имена Ваших машин, которые должны быть видны из
Internet'а по их доменам, передать IP-провайдеру для ведения сервиса имен.
Защита локальной сети от взлома осуществляется следующими способами:
- запретом роутирования (машрутизации) указанных пакетов с одного интерфейса
на другой (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
След.
Глава, href="http://www.linux.org.ru:8101/books/gateway/tcpiptune-3.html">Пред.
Глава
Содержимое href="http://www.linux.org.ru:8101/books/gateway/tcpiptune.html#toc4">этой
главы, Главное href="http://www.linux.org.ru:8101/books/gateway/tcpiptune.html#toc">оглавление
Начало
документа, href="http://www.linux.org.ru:8101/books/gateway/tcpiptune-4.html#0">Начало этой
главы
:: назад