Для каждого сетевого устройства (серийная линия с модемом, Ethernet плата) Вы должны подключить драйвер (на этапе сборки ядра или динамически) и установить интерфейс.
Динамическое подключение драйверов и устнановка интерфейса для устройств, как правило производится в файле /etc/rc/rc.inet1.
Для динамического подключения драйвера необходимо в файл rc.inet1. добавить команду(ы):
/sbin/insmod /lib/modules/<номер_ядра>/net/<имя_об'ектого_файла_драйвера>
Интерфейсом с точки зрения ОС является устройство через которое система получает и передает IP-пакеты. Каждое устройство (не вся машина) имеет свой IP-адрес. Интерфейс для устройства устанавливается командой ifconfig.
В файле rc.inet1 Вы должны установить следующие интерфейсы:
Настройка локального интерфейса автоматически включается в файл 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. Драйвер платы должен быть подключен в ядро, либо на этапе сборки ядра (см. выше), либо командой подключения динамически загружаемых драйверов:
insmod <имя_об'ектного_модуля_драйвера>
Ядро именует драйверы Ethernet как eth0, eth1 и т. д.
Для конфигурации интерфейса Вам надо знать :
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 (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 по вышеперечисленным трем интерфейсам:
Локальный инерфейс поддерживает сеть с 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-провайдеру
для ведения сервиса имен.
Защита локальной сети от взлома осуществляется следующими способами:
Данный режим защиты использует возможности ядра 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 (см. следующий раздел).
В ОС 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
Содержимое этой главы, Главное оглавление
Начало документа, Начало этой главы