Технологии сетевых коммуникаций. Учебно-методическое пособие
.pdfпроверяет активность сетевого интерфейса (факт подключения его к корректному сетевому окружению;
проверяет возможность доступа с вашего IP-адреса в локальную сеть, выдает сообщение;
проверяет возможность доступа с вашего IP-адреса в сеть Интернет по протоколу http, выдает сообщение;
в цикле раз в минуту перехватывать 10 пакетов из интерфейса eth0 (tcpdump). Если в перехваченных пакетах есть адресованные или полученные с адреса 192.168.1.2, вывести содержание таблицы ARP в лог-файл, завершить работу.
Вариант 4
Написать shell скрипт, выполняющий следующие действия:
проверяет наличие в системе своей запущенной копии, принимает решение о продолжении работы;
проверяет наличие и количество сетевых интерфейсов в системе, принимает решение о продолжении работы;
проверяет активность сетевого интерфейса (факт подключения его к корректному сетевому окружению;
проверяет возможность доступа с вашего IP-адреса в локальную сеть, выдает сообщение;
проверяет возможность доступа с вашего IP-адреса в сеть Интернет по протоколу http, выдает сообщение;
в цикле раз в минуту проверяет содержание таблицы маршрутизации. Если в таблице не обнаружен адрес 192.168.1.1, сообщить в лог файл (echo ‘message’>> flogfile.rep и на терминал tty6), изменяет шлюз по умолчанию на 192.168.1.2, завершить работу.
Вариант 5
Написать shell скрипт, выполняющий следующие действия:
проверяет наличие в системе своей запущенной копии, принимает решение о продолжении работы;
проверяет наличие и количество сетевых интерфейсов в системе, принимает решение о продолжении работы;
проверяет активность сетевого интерфейса (факт подключения его к корректному сетевому окружению;
21
проверяет возможность доступа с вашего IP-адреса в локальную сеть, выдает сообщение;
проверяет возможность доступа с вашего IP-адреса в сеть Интернет по протоколу http, выдает сообщение;
в цикле раз в минуту проверяет содержание таблицы маршрутизации. Если в таблице обнаружен адрес 192.168.1.1, сообщить в лог файл (echo ‘message’>> flogfile.rep и на терминал tty6), изменяет шлюз по умолчанию на 192.168.1.2, завершить работу.
Вариант 6
Написать shell скрипт, выполняющий следующие действия:
проверяет наличие в системе своей запущенной копии, принимает решение о продолжении работы;
проверяет наличие и количество сетевых интерфейсов в системе, принимает решение о продолжении работы;
проверяет активность сетевого интерфейса (факт подключения его к корректному сетевому окружению);
проверяет возможность доступа с вашего IP-адреса в локальную сеть, выдает сообщение;
проверяет возможность доступа с вашего IP-адреса в сеть Интернет по протоколу http, выдает сообщение;
в цикле раз в 30 секунд проверяет таблицу маршрутизации. Если
втаблице есть запись для 192.168.1.100 (echo ‘message’>> flogfile.rep и
на терминал tty6), изменяет шлюз по умолчанию на 192.168.1.2, завершает работу.
Вариант 7
Написать shell скрипт, выполняющий следующие действия:
проверяет наличие в системе своей запущенной копии, принимает решение о продолжении работы;
проверяет наличие и количество сетевых интерфейсов в системе, принимает решение о продолжении работы;
проверяет активность сетевого интерфейса (факт подключения его к корректному сетевому окружению;
проверяет возможность доступа с вашего IP-адреса в локальную сеть, выдает сообщение;
22
проверяет возможность доступа с вашего IP-адреса в сеть Интернет по протоколу http, выдает сообщение (рекомендуется использовать команду netcat, ss) ;
в цикле раз в 30 секунд проверяет таблицу маршрутизации. Если
втаблице нет записи для 192.168.1.1 (echo ‘message’>> flogfile.rep и на терминал tty6), изменяет шлюз по умолчанию на 192.168.1.2, завершает работу.
5. Содержание отчета
5.1. Цель работы. 5.2. Вариант задания.
5.3. Имена, размер, путь, время модификации файлов согласно порядку выполнния работы.
5.4. Текст shell-скрипта. 5.5. Выводы.
6. Методическая информация для преподавателя
Для выполнения данной лабораторной работы потребуется произвольная версия операционной системы Линукс. Автор настоящего учебно-методического пособия рекомендует использовать для этой цели версию Ubuntu с длительным сроком поддержки (на момент написания данного пособия актуальными являлись версии 14.04 и 12.04). Специальных требований к программному обеспечению на компьютерах студентов и преподавателя не выдвигается (предполагается, что пакеты к лабораторной работе № 1 уже установлены).
Контрольные вопросы
1.Виды циклов при создании скриптов на встроенных командных языках.
2.Методы взаимодействия с сетевыми командами.
3.Алгоритмические приемы ветвления программы.
4.Использование стандарных переменных окружения при создании программ на скриптовых языках.
23
Приложение 1
Пример shell-скрипта
Проверяет наличие программы task.pl в памяти и «убивает» ее.
------------------------------- начало листинга -----------------------------------
#!/bin/bash
#Признак, что это шелл-скрипт
echo "Сканер запущен! ";date; #вывели строку на консоль
while [ $(ps -e | grep "tasks.pl" | wc -c) -eq 0 ]; do
# проверили, встречается ли в списке задач "task.pl"
echo "task.pl в памяти не обнаружен" > /dev/tty6;
#выдали на терминал 6 сообщение
sleep 30;
#заснули на 30 секунд done
#признак конца while
var=$( killall virus.pl );
#присвоили переменной var ответ killall echo $var "процесс task.pl"
#напечатали строку на консоль echo "работа завершена"
---------------------------------конец листинга------------------------------------
24
Приложение 2
Справочник команд
Сетевые команды
Ss - Утилита ss позволяет просматривать информацию об используемых сокетах. Подробнее man ss
Netcat (nc) позволяет принимать или передавать информацию через сокеты в командном режиме. Подробнее man nc.
tcpdump – протоколирует трафик в сети
tcpdump [- c N] –i интерфейс
[-c N] – получить N пакетов и выйти -i интерфейс – имя интерфейса –i eth0
tcpdump –c 10 -i eth0:1
netstat – предоставляет информацию о сетях, сокетах портах.
netstat –r – выводит таблицу маршрутов netstat –i – информация об интерфейсах
флаг –n – позволяет распечатывать адреса хостов, а не имена, подробнее смотрите в маn и info
traceroute – трассировка маршрута. Позволяет отследить маршрут движения IP-пакетов от одного хоста к другому.
traceroute [-n] назначение
[-n] – требует распечатывать IP-адреса вместо имен назначение – IP-адрес, к которому исследуется маршрут. traceroute –i eth0
Ping – пакетный локатор. Посылает эхо-запрос, на этот эхо-запрос адресат создает эхо-отклик. Таким образом проверяется доступность адресата и выполняется хронометраж.
ping [-c N] назначение
[-c N] посылать N эхо-запросов Назначение – IP-адрес
25
ping –c 5 192.168.6.100
Некоторые команды bash
wc – счетчик количества строк символов в потоке (файле). Ключ [–c] позволяет подсчитывать количество байт в потоке.
grep – команда фильтр. Позволяет выделять строки из потока (файла), содержащие заданную подстроку.
grep “подстрока” файл
echo [строка] – печатает строку в поток. По умолчанию вывод осуществляется в поток stdout.
echo “Hello, world!”
Циклы и условное ветвление
Конструкция if: if {list} then {list2} else {list3} fi
Конструкция for: for name in words do list done for a in 1 2 3 ; do
touch /home/test/foo_$a done
Конструкции while, until: while listl do list2 done while [ -d /home/test/dir ] ; do
Is -1 /home/test/dir >> /home/test/dir.log echo -- SEPARATOR — >> /home/test/dir.log sleep 60
done
Команда проверки выражений для операторов ветвления test, или []
Условные выражения, строятся на основе проверки файловых атрибутов, сравнения строк и обычных арифметических сравнений. Ключи команды:
a –e –f file – верно, если файл существует
-b –c –d –p -S file верно, если файл соотвующего типа
-h –l file верно, если ссылка
-r/-w/-x file верно, если дано право на чтение/запись/исполнение
-s верно, если размер больше нуля
26
-N file верно, если с момента последнего чтения файл был изменен
filel -nt file2 – верно, если время модификации 1 позднее
filel -ot file2 – верно, если 1 старше
filel -ef file2 – верно, если файлы эквививалентны (inode)
-z/-n string верно, если длина строки =/<> 0
stringl == string2 верно, если строки совпадают
stringl != string2 верно, если строки совпадают
argl –ne/-le/-lt/-gt/-ge arg2 – арифметическая проверка
Список литературы
1.Стивенс У. Ричард. Протоколы TCP-IP Практическое руководство. – СПб.: Невский диалект; БХВ-Петербург, 2003. – 672 с.
2.Костромин В.А. Самоучитель Linux для пользователя. – СПб.: БХВ-Пе-
тербург, 2003. – 672 с.: ил.
3.Колесниченко Д.Н. Linux сервер своими руками. – СПб.: Наука и техни-
ка, 2002. – 576 с.: ил.
4.Кирх Олаф. Lunux для профессионалов. Руководство администратора
сети. – СПб.: Питер, 2000. – 368 с.: ил.
27
ЛАБОРАТОРНАЯ РАБОТА № 3
Защита информации в сетях
Цель работы: ознакомление с построением фильтров TCP-IP пакетов. Ознакомление с методами шифрования с открытым ключом на примере пакета gnupg.
1. Краткие теоретические сведения
Firewall. Во все ядра Linux, начиная с 2.0, встроено средство для фильтрации сетевых пакетов. В 2.0 – это ipfwadm, в 2.2 – ipchains, а в 2.4 и 2.6 – iptables. Мы будем рассматривать последний вариант как наиболее современный. Принцип фильтрации: когда через ядро проходит пакет, он проверяется на совпадение с одним или несколькими правилами. При этом в зависимости от этих правил он может быть пропущен (ACCEPT), отброшен (DROP) или отклонен (REJECT). Кроме того, он может быть отправлен на проверку в следующую цепочку правил. Здесь же можно указать, что факт прохождения пакета, подходящего под определенное правило, должен быть отмечен в syslog. Правила могут включать в себя проверку адреса/порта источника/получателя, протокола, флагов TCP.
Для изменения используемого набора правил используется утилита – iptables. Все правила хранятся в памяти ядра и при перезагрузке сбрасываются. По этой причине необходимо создать файл конфигурации, из которого правила фильтрации будут считываться при загрузке машины. Обычно это /etc/rc.d/rc.firewall – обычный скрипт оболочки, который вызывает /sbin/iptables с определенными параметрами, соответствующими составленным правилам. Поэтому в большинстве дистрибутивов для изменения конфигурации iptables необходимо отредактировать указанный файл и запустить его (этот файл, как правило, автоматически выполняется при загрузке машины). После чего можно посмотреть обновленную таблицу правил командой iptables -L.
28
Изначально существуют три цепочки, через которые пакеты входят на фильтрацию. INPUT – для входящих пакетов, OUTPUT – для исходящих и FORWARD – для проходящих через данную машину к другой. По мере движения пакета по цепочке выполняется сравнение с критериями и по результатам сравнения принимается решение о действии. Часть пакетов отбрасывается (на разных этапах по разным причинам), часть (опять же лишь подходящие под определенные правила) успешно выходит из фильтра. Оставшиеся (не подошедшие ни под одно правило) следуют действию по умолчанию для этой цепочки. Обычно таким действием делают DROP или REJECT, чтобы пропускать лишь пакеты, подошедшие под вполне определенные правила. В отличие от действия DROP в случае REJECT отправителю отсылается ICMP пакет с сообщением об ошибке. Это создает дополнительный трафик, но в соответствующих случаях приводит к тому, что отправитель перестает посылать нам пакеты (DROP выглядит для отправителя как таймаут, т.е. пакеты просто уходят и не приходит никакого подтверждения, а при REJECT он может посчитать, что наш компьютер недоступен или не существует).
Формат командной строки утилиты iptables: iptables [-t table] command [match] [target/jump]
Каждая строка, которую вы вставляете в ту или иную цепочку, должна содержать отдельное правило.
Нигде не утверждается, что описание действия (target/jump) должно стоять последним в строке; мы, однако, будем придерживаться именно такой нотации для удобочитаемости.
По умолчанию предполагается использование таблицы filter, иначе требуется указать имя таблицы посредством ключа [-t].
За именем таблицы должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п.
Match задает критерии проверки.
Target указывает действие, которое должно быть выполнено при условии выполнения критериев в правиле.
29
Пример rc.firewall с типичным набором правил: #!/bin/sh
#Все сбросили iptables -F
iptables -X COUNT
#Правила по умолчаниию iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
# разрешаем доступ к внутренней петле iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
#считаем все входящие пакеты ($$$)
#Создаем цепочку счетчиков iptables -N COUNT
iptables -A INPUT -i eth0 -j COUNT
# Разрешаем ходить пакетам icmp iptables -A INPUT -p ICMP -j ACCEPT iptables -A OUTPUT -p ICMP -j ACCEPT
#Разрешаем соединения "запрошенные" с нашего компьютера. Избавляет от некоторых видов атак
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
#Разрешаем пользовательские порты
iptables -A OUTPUT -p TCP --sport 32768:65535 -j ACCEPT iptables -A OUTPUT -p UDP --sport 32768:65535 -j ACCEPT
#Разрешаем порты SMB для доступа Windows-машин к нашему серверу
# Smb Данныые
iptables -A INPUT -i eth1 -p TCP --dport 137:139 -j ACCEPT iptables -A INPUT -i eth1 -p UDP --dport 137:139 -j ACCEPT iptables -A OUTPUT -o eth1 -p TCP --sport 137:139 -j ACCEPT iptables -A OUTPUT -o eth1 -p UDP --sport 137:139 -j ACCEPT
30
