Шрифт:
Интервал:
Закладка:
♦ multicast on или multicast off — изменяет флаг MULTICAST на устройстве;
♦ name — изменяет имя устройства;
♦ mtu <Число> — изменяет значение MTU на устройстве;
♦ address <Адрес> — изменяет адрес на устройстве;
♦ broadcast <Адрес> — изменяет широковещательный адрес на устройстве.
19.3.3. Просмотр параметров сетевого устройства
Команду ip link show лучше всего рассматривать на примерах. Для получения информации о состоянии устройства eth0 введите команду:
# ip link ls dev eth0
eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:44:67:91:31:1d brd ff:ff:ff:ff:ff:ff
Получить статистику устройства eth0 можно командой:
#ip -s link ls dev eth0
2: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:44:67:91:31 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
xxxxxxxx xxxxxx 0 0 0 0
TX: bytes packets errors dropped carrier collsns
xxxxxxxx xxxxxx 0 0 0 132934
Вместо xxxxxxxx xxxxxx вы увидите количество принятых(RX)/переданных(TX) байтов и пакетов.
19.3.4. Операции над адресами: команда ip address
Команда ip address управляет адресами на устройстве. Объект для нее — это IPv4 или IPv6 адрес. Эта команда показывает адреса и их свойства, а также добавляет новые адреса.
Чтобы добавить адрес 192.168.0.1/24 с маской подсети 255.255.255.0 со стандартным широковещательным адресом и именем eth0:Alias, введите команду
# ip addr add 192.168.0.1/24 brd + dev eth0 label eth0:Alias
Используются еще следующие варианты команды:
ip address delete предназначена для удаления адресов. Для удаления адреса 192.168.0.1/24 с устройства eth0 введите команду ip addr del 192.168.0.1/24 dev eth0.
ip address show выводит информацию об адресе.
19.3.5. Управление таблицей маршрутизации
Команда ip route управляет таблицей маршрутизации:
ip route add — добавить новый маршрут;
ip route change — изменить маршрут;
ip route replace — заменить маршрут.
Добавим маршрут к сети 192.168.0.0/24 через 192.168.1.1:
# ip route add 192.168.0.0/24 via 192.168.1.1
19.3.6. Динамическая маршрутизация
Команда ip route позволяет добавить динамический маршрут; шлюз будет выбираться в зависимости от текущей нагрузки на нега. Всегда будет выбираться шлюз с минимальной нагрузкой.
Пусть у нас есть два устройства — ppp0 и ppp1. Маршрут по умолчанию — через устройство ppp0, но если этот маршрут недоступен, будет использоваться ppp1:
# ip route add default scope global nexthop
dev ppp0 nexthop dev ppp1
Для удаления маршрута используйте команду ip route delete:
# ip route del default scope global nexthop
# dev ppp0 nexthop dev ppp1
19.3.7. Управление правилами маршрутизации
Для решения этой задачи предназначена команда ip rule. Маршрутизация производится в зависимости от:
♦ адреса получателя;
♦ адреса отправителя;
♦ IP-протокола;
♦ транспортного протокола.
По умолчанию используются три таблицы правил маршрутизации:
♦ Local — содержит таблицы для локальных и широковещательных адресов;
♦ Main — самая обыкновенная таблица маршрутизации;
♦ Default — пустая таблица по умолчанию.
Аргументы команды ip rule:
1. адрес отправителя;
2. адрес назначения;
3. имя интерфейса, с которого получен пакет;
4. метка пакета, которая устанавливается брандмауэром;
5. идентификатор таблицы маршрутизации: им может быть номер или строка из файла /etc/iproute2/rt_tables;
6. приоритет таблицы (число).
Вот несколько примеров. Требование пересылать пакеты с сети 192.168.0.0/24 согласно таблице Main:
# ip rule add from 192.203.80.0/24 table main prio 100
Теперь допустим, что у нас есть два канала в Интернет (два провайдера): ppp1 с адресом 193.168.99.99, который связан с 193.168.99.100, и ppp2 с адресом 193.168.100.99, связанный с 195.1.1.1. Пользователь ivanov хочет, чтобы мы его пакеты отправляли через ppp2 (второго провайдера):
# echo 200 ivanov >> /etc/iproute2/rt_tables
# ip rule add from 192.168.0.10 table ivanov
# ip rule ls
0: from all lookup local
32765: from 192.168.0.10 lookup ivanov
32766: from all lookup main
32767: from all lookup default
Теперь для этого пользователя назначим маршрут по умолчанию и очистим кэш-таблицы маршрутизации, чтобы наши изменения вступили в силу:
# ip route add default via 195.1.1.1 dev ppp2 table ivanov
# ip route flush cache
Рассмотрим еще один практический пример. Направим весь трафик на порт 21 через устройство eth1:
# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 21 -j MARK --set-mark 2
Теперь нужно создать правила для помеченных пакетов
# echo 202 21,tbl >> /etc/iproute2/rt_tables
# ip rule add fwmark 2 table 21.tbl
# ip route add default via 192.168.0.10 dev eth1 table 21.tbl
# ip route flush cache
19.4. Что такое брандмауэр
Брандмауэр (межсетевой экран, бастион, firewall) — это компонент системы, обеспечивающий защиту сети от несанкционированного доступа.
Как известно, весь трафик в сети состоит из пакетов. Каждый пакет состоит из двух частей: заголовка и тела. В заголовке пакета находится информация об источнике, адресате, типе пакета, а также прочая информация, которая характерна для пакетов определенных типов. В теле пакета находится собственно передаваемая информация. Так вот, брандмауэр представляет собой пакетный фильтр: он просматривает заголовок каждого проходящего через него пакета, а потом решает, что с этим пакетом делать: принять, игнорировать или отказать с уведомлением отправителя.
Обычно брандмауэр используется на шлюзах, соединяющих две сети. Например, на шлюзе между локальной сетью и Интернетом можно запретить передавать или принимать пакеты некоторых категорий, отграничив таким образом свою хорошо организованную сеть от всемирного хаоса.
Фильтрация пакетов встроена в ядро ОС Linux. В старых дистрибутивах (ядро 2.2 и ниже) стандартным брандмауэром служит IPChains, в новых (ядро 2.4 и выше) — IPTables. Оба они позволяют защититься от таких распространенных атак, как пинг смерти, атака на отказ, IP-спуфинг, фрагментация пакетов. Возможности пакетного фильтра IPTables значительно шире, чем у IPChains, но на практике дополнительные возможности используются редко — в основном применяются средства, присутствовавшие уже в IPChains. Поэтому я начну изложение принципов и приемов настройки брандмауэра с этого устаревшего фильтра.
19.5. Цепочки правил
Ядро стартует с тремя списками правил: input, forward, output. Эти правила называются firewall-цепочками или просто цепочками. Цепочка — это набор правил вида «заголовок пакета: действие». Если заголовок пакета соответствует заголовку, указанному в правиле, выполняется заданное в правиле действие. Если первое правило к этому пакету неприменимо, то рассматривается следующее правило в цепочке. Если ни одно правило не применимо к пакету, то пакет, скорее всего, будет отвергнут. Если какой-нибудь пакет отвергается, то сообщение об этом протоколируется службой syslog.
Пакет, поступающий извне, сначала проходит предварительную проверку. Она включает в себя сверку контрольной суммы (не поврежден ли пакет при пересылке) и «санитарную проверку» (не нарушит ли некорректный пакет работу кода проверки правил). Поврежденные и некорректные пакеты отвергаются.
Принятый пакет поступает на входной фильтр (цепочка input). Если входной фильтр пропускает пакет, то код маршрутизации проверяет адрес получателя, после чего пакет либо передается локальному процессу, либо маршрутизируется на другую машину. Пакет, предназначенный для другой машины, должен пройти через цепочку перенаправления forward. Если правила этой цепочки разрешают пакет, он будет маршрутизирован, в противном случае — отвергнут. Пакет также будет отвергнут, если ядро не поддерживает маршрутизации.
Прежде чем пакет выйдет из сетевого интерфейса, он должен пройти цепочку output. Любая программа может отправить пакет, который будет направлен в эту цепочку. Если она пропускает пакет, то он попадет в сеть — станет исходящим пакетом. Отвергнутый пакет не выйдет за пределы компьютера — он будет уничтожен.
Пакет, предназначенный для интерфейса lo (обратная петля или шлейфовый интерфейс), сначала проходит выходную цепочку, а потом попадает во входную цепочку интерфейса lo. Прохождение пакета через цепочки правил схематично представлено на рис. 19.1.
Рис. 19.1. Принцип работы пакетного фильтра
19.6. IPTables — пакетный фильтр для ядер 2.4.x. и 2.6.x
Фильтр IPTables, очень похожий на IPChains, называется так потому, что хранит цепочки правил в таблицах. Главной таблицей, в которой хранятся правила обработки всех стандартных типов трафика, является таблица filter. Именно с ней мы и будем работать. К стандартным таблицам относятся также:
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение