Практикум по администрированию программного обеспечения. Лабораторный практикум
.pdf
Лабораторный практикум 
3.Разрешить все ICMP пакеты на всех интерфейсах.
4.Запретить передачу пакетов с интерфейса на интерфейс.
5.Разрешитьвсевходящиесоединениянакольцевом(loopback) интерфейсе.
6.Запретить все входящие соединения кроме портов: 22/TCP (ssh), 25/TCP (smtp), 80/TCP (http), 110/TCP (pop3), 143/TCP (imap4)
и443/TCP (https) на всех интерфейсах.
Контрольные вопросы
1.Задачи, решаемые с помощью межсетевого экрана.
2.Возможности межсетевого экрана netfilter.
3.Технология администрирования netfilter.
4.Способы анализа протокола работы межсетевого экрана.
5.Сравнение межсетевого экрана в Linux и роутерах.
Литература : 1, 2, 3, 4.
8. ИССЛЕДОВАНИЕ УДАЛЁННОГО ДОСТУПА К СЕРВЕРУ С ПОМОЩЬЮ SSH
Цель – познакомиться с возможностями удалённого доступа с помощью SSH в Linux системах, научиться настраивать SSH сервера и соединения.
Формируемые компетенции или их части: ПК-10, ПК-12.
Теоретическая часть
SSH – это специальный сетевой протокол, позволяющий получать удаленный доступ к компьютеру с большой степенью безопасности соединения.
Описание принципов работы и используемых прило-
жений. В основном, SSH реализован в виде двух приложений – SSH-сервера и SSH-клиента1) В Ubuntu используется свободная реализация клиента и сервера SSH-OpenSSH. При подключении клиент проходит процедуру авторизации у сервера и между ними устанавливается зашифрованное соединение. OpenSSH сервер может работать как с протоколом ssh1, так и с протоколом ssh2. В настоящее время протокол ssh1 считается небезопасным, поэтому его использование крайне не рекомендуется.
41
Практикум по администрированию программного обеспечения
Установка. Установить OpenSSH можно из терминала командой: sudo apt-get install ssh
В метапакете ssh содержится как клиент, так и сервер, но при этом, скорее всего, будет установлен только сервер, т. к. клиент уже есть в Ubuntu по умолчанию.
Настройка сервера. При установке SSH-сервер автоматически прописывается в автозагрузку. Управлять его запуском, остановкой или перезапуском можно с помощью команд:
sudo service ssh stop|start|restart
Основной файл конфигурации SSH-сервера – файл /etc/ssh/ sshd_config, доступный для чтения или редактирования только суперпользователю. После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения таких изменений.
Рекомендуемые параметры. Безопасность. Сам по себе, неправильно настроенный SSH-сервер – огромная уязвимость в безопасности системы, т. к. у возможного злоумышленника есть возможность получить практически неограниченный доступ к системе. Помимо этого, у sshd есть много дополнительных полезных опций, которые желательно включить для повышения удобства работы и безопасности.
Port, ListenAddress иAddressFamily. Эти три параметра опре-
деляют, на каких портах и адресах сервер будет ждать входящие соединения. Во-первых, имеет смысл по возможности ограничить семейство обрабатываемых адресов реально используемыми, т. е. если используется только IPv4 – следует отключить IРv6 и наоборот. Сделать это можно при помощи параметра AddressFamily, например (для разрешения IPv4 и запрета IPv6):
AddressFamily inet.
Во-вторых, желательно сменить стандартный порт, на котором слушает sshd. Это связано с тем, что многочисленные сетевые сканеры постоянно пытаются соединиться с портом и как минимум получить доступ путем перебора логинов/паролей из своей базы. Даже если у вас и отключена парольная аутентификация – эти попытки сильно засоряют журналы и (в большом количестве) могут негативно повлиять на скорость работы ssh сервера. Если же нет необходимости изменить стандартный порт, то можно использовать как различные внешние утилиты для борьбы брутфорсерами, например fail2ban, так и встроенные, например MaxStartups.
Задать порт можно как абсолютным значением для всех интерфейсов при помощи директивы Port, так и конкретным значением для каждого интерфейса, при помощи директивы ListenAddress.
42
Лабораторный практикум 
Например:
Port 2002
или
ListenAddress 192.168.0.1:2003
ListenAddress 192.168.1.1:2004.
Запрещение удаленного доступа для суперпользователя.
Поумолчаниюroot-доступзапрещенпопаролю(поключу–можно)–
опция PermitRootLogin установлена в without-password). Но при ус-
ловии, что по умолчанию в Ubuntu пользователь, добавленный при установке системы имеет возможность решать все административные задачи через sudo, создавать возможность root доступа к системе через ssh – выглядит неразумно (даже при аутентификации по ключу). Рекомендуется совсем отключить эту опцию, или применять ее только в режиме forced-commands-only. Отключить root-доступ можно так:
PermitRootLogin no.
Парольная аутентификация. Разрешенная по умолчанию парольная аутентификация является практически самым примитивным способом авторизации в sshd. С одной стороны, это упрощает конфигурацию и подключение новых пользователей (пользователю достаточно знать свой системный логин/пароль), с другой стороны пароль всегда можно подобрать, а пользователи часто пренебрегают созданием сложных и длинных паролей. Специальные боты постоянно сканируют доступные из интернета ssh сервера и пытаются авторизоваться на них путем перебора логинов/паролей из своей базы. Настоятельно не рекомендуется использовать парольную аутентификацию. Отключить ее можно так:
PasswordAuthentication no.
Если по каким либо причинам есть необходимость использовать парольную аутентификацию, то следует позаботиться о том, чтобы никто не мог авторизоваться с пустым паролем. Для этого нужно задать директиву PermitEmptyPasswords:
PermitEmptyPasswords no.
Протоколы SSH1 и SSH2. Как уже было сказано, sshd может работать с протоколами SSH1 и SSH2. При этом использование небезопасного SSH1 крайне не рекомендуется. Заставить sshd работать только с протоколом SSH2 можно так:
Protocol 2.
Аутентификация на основе SSH2 RSA-ключей. Наиболее предпочтительным способом авторизации является аутентификация на основе SSH2 RSA-ключей. При таком способе пользователь
43
Практикум по администрированию программного обеспечения
генерирует на своей стороне пару ключей, из которой один ключ является секретным, а другой публичным. Публичный ключ копируется на сервер и служит для проверки идентичности пользователя. Более подробно про создание пары ключей и способы размещения их на сервере см. в описании SSH-клиента. Включить аутентификацию по публичному ключу можно так:
PubkeyAuthentication yes
Сервер должен знать, где ему следует искать публичный ключ пользователя. Для этого применяется специальный файл authorized_keys. Синтаксис его может быть следующим:
#Коментарии записываются только с новой строки
#общий вид записей в файле authorized_keys
#[опции] тип_ключа(ssh-rsa или ssh-dss) очень_длинная_ строка_непонятная_простому_человеку [логин@хост]
ssh-rsa AAAAB3Nza...LiPk== user@example.net from=«*.sales.example.net,!pc.sales.example.net» ssh-rsa
AAAAB2...19Q== john@example.net
command=«dump /home»,no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net
permitopen=«192.0.2.1:80»,permitopen=«192.0.2.2:25» ssh-dss AAAAB5...21S==
tunnel=«0»,command=«sh /etc/netstart tun0» ssh-rsa AAAA...== jane@example.net.
Можно указать как один общий файл с ключами, так и по файлу на каждого пользователя. Последний способ является более удобным и безопасным, т. к. можно, во-первых, указывать разные комбинации ключей для каждого пользователя, а во-вторых ограничить доступ к публичному ключу пользователя. Задать файл с ключами можно при помощи директивы AuthorizedKeysFile:
AuthorizedKeysFile %h/.ssh/my_keys
для схемы пользователь – файл или
AuthorizedKeysFile /etc/ssh/authorized_keys
для схемы с общим файлом. По умолчанию SSH-клиент ищет клю-
чи в файле ~/.ssh/authorized_keys .
Дополнительные настройки. Если сервере «живет» много пользователей, а доступ через ssh нужно разрешить только нескольким из них, то можно использовать директивы DenyUsers, AllowUsers, DenyGroups и AllowGroups. Более подробно про эти директивы см. комментарии в примере sshd_config.
Опции определения состояния соединения. По умолчанию из способов определения состояния соединения включен только
44
Лабораторный практикум 
способ проверки TCP-соединения – TCPKeepAlive, однако sshd умеет определять состояния соединения и более удобными и безопасными способами. Подробнее см. соответствующий раздел в примере sshd_config.
SFTP. В sshd по умолчанию встроен SFTP-сервер. Протокол
SFTP (SSH File Transfer Protocol) – SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2. Для того чтобы включить поддержку SFTP, добавьте в sshd_config строку
Subsystem sftp /usr/lib/openssh/sftp-server
По умолчанию поддержка SFTP включена.
Настройка SSH-клиента. Наиболее безопасным считается вход по ключу, и в большинстве случаев на стороне сервера такая возможность включена, так что для её использования никаких прав суперпользователя не требуется. На клиентской машине генерируем ключ:
ssh-keygen -t rsa.
Получаем предложение ввести пароль для защиты файла ключа (оказывается полезным при попадании файла в чужие руки). Если мы собираемся по SSH выполнять скрипты, то оставляем пустым. Передаём публичный ключ на сервер командой
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.
Диагностика проблем подключения. Анализ лога подклю-
чения:
ssh -vvv user@host
Возможные проблемы при использовании. Привычная ком-
бинация клавиш Ctrl+S, используемая во многих редакторах для сохранения исправлений, при работе в терминале с ssh-cервером приведёт к выполнению команды XOFF что внешне напоминает зависание сессии. Однако это не так. Сервер продолжает принимать вводимые символы и команды, но не выводит это на экран. Чтобы выйти из такого затруднительного положения, достаточно применить комбинацию Ctrl+Q, тем самым включив режим XON обратно.
Практическое задание
1.Описать алгоритм администрирования SSH соединений.
2.Описать доступные настройки SSH сервера.
3.Установить SSH сервер, проверить возможность подключения на сервер, не настраивая конфигурацию SSH сервера.
45
Практикум по администрированию программного обеспечения
4.Изменить настройки сервера по умолчанию. Описать, что изменилось. По возможности продемонстрировать изменения. Обязательно уделить внимание следующим опциям в настройке:
– требования к паролю при подключении;
– возможность подключения root пользователя;
– ограничение списка пользователей, которым доступен удаленный доступ.
5.Изменение порта для подклюючения.
6.Воспользоваться протоколом CSP (Secure Copy Protocol) для обмена файлами с удаленным сервером. Для использования CSP можно воспользоваться утилитой WinSCP.
7.Настроить подключение с помощью авторизации по серти-
фикату
Контрольные вопросы
1.История развития средств удаленного доступа.
2.Задачи, решаемые с помощью удалённого доступа.
3.Технология администрирования удаленного доступа.
4.Основные отличия при администрировании удалённого сервера по сравнению с локальным подключением к серверу.
5.Способы обеспечения безопасности при работе через SSH.
Литература : 1, 2, 3, 4.
9. ИССЛЕДОВАНИЕ РАЗВЕРТЫВАНИЯ
DHCP-СЕРВЕРА dhcpd
Цель – познакомиться с возможностями удалённого доступа с помощью SSH в Linux системах, научиться настраивать SSH сервера и соединения.
Формируемые компетенции или их части: ПК-10, ПК-40.
Теоретическая часть
Протокол динамического выделения адресов (DHCP) – это сетевой сервис, который позволяет компьютерам в сети автоматически получать настройки с сервера вместо того, чтобы настраивать каждый сетевой хост вручную. Компьютеры, настроенные быть клиентами DHCP, не управляют тем, какие настройки они полу-
46
Лабораторный практикум 
чат от DHCP-сервера, и эта настройка совершенно незаметна для пользователя компьютера.
В общем случае настройки, передаваемые DHCP-сервером DHCP клиентам, включают:
1)IP-адрес и сетевую маску;
2)IP-адрес шлюза по умолчанию;
3)IP-адрес DNS серверов.
Однако DHCP-сервер может также предоставить такие параметры настройки, как:
1)имя хоста;
2)имя домена;
3)адрес сервера времени;
4)адрес сервера печати.
Преимущество использования DHCP заключается в изменчивости сети, например, изменение адреса DNS сервера потребует изменений только на DHCP-сервере, а все сетевые хосты будут перенастроены в момент следующего запроса их DHCP клиента к DHCP-серверу. Дополнительное преимущество заключается в простом подключении новых компьютеров к сети, поскольку не требуется проверять доступность IP-адресов. Конфликты по выделенным IP-адресам также минимальны.
DHCP-сервер может предоставлять настройки, используя следующие методы.
Выделение вручную (по MAC адресу). Этот метод подразу-
мевает использование DHCP для определения уникального аппаратного адреса каждой сетевой карты, подключенной к сети, и затем продолжительного предоставления неизменной конфигурации каждый раз, когда DHCP клиент делает запрос на DHCP-сервер, используя это сетевое устройство. Это гарантирует, что определенный адрес будет автоматически присваиваться этой сетевой карте на основе ее MAC адреса.
Динамическое выделение (пул адресов). При этом методе, DHCP-сервер будет выделять IP-адрес из пула адресов (иногда называемым диапазоном или областью) на период времени (или в аренду), который настраивается на сервере, или пока клиент не проинформирует сервер, что больше вообще не нуждается в адресе. Таким образом, клиенты получают свои настройки динамически по принципу «первый пришел – первый обслужился». Когда DHCP клиент отсутствует в сети определенное время, настройка считается просроченной и возвращается в пул адресов для использования другими DHCP клиентами. Это означает, что адрес арендуется или
47
Практикум по администрированию программного обеспечения
выдается на определенный период времени. По истечении этого периода клиент должен повторно договариваться об использовании адреса с сервером.
Автоматическое выделение. Использую этот метод, DHCP
автоматически присваивает постоянный IP-адрес устройству, выбранный из пула доступных адресов. Обычно DHCP используется для выдачи временного адреса, но DHCP-сервер может использовать бесконечное время аренды.
Два последних метода можно рассматривать, как автоматические, поскольку DHCP-сервер выдает адреса без дополнительного вмешательства. Единственная разница заключается в том, насколько арендуется адрес, другими словами, когда истечет время использования адреса клиентом. Ubuntu поставляется вместе с DHCPсервером и клиентом. Сервером является dhcpd (сервис протокола динамического выделения адресов). Клиент, поставляемый с Ubuntu, – это dhclient и он может быть установлен на все компьютеры, требующие автоматических настроек. Обе программы просты в установке и настройке и автоматически стартуют при загрузке системы.
Установка. В терминале введите следующую команду для установки dhcpd:
sudo apt-get install isc-dhcp-server.
Возможно, потребуется изменить настройку по умолчанию редактированием /etc/dhcp/dhcpd.conf для удовлетворения вашим потребностям и специфическим настройкам.
Вы также можете исправить /etc/default/isc-dhcp-server для определения интерфейсов, которые должен слушать dhcpd.
Обратите внимание, что сообщения dhcpd будут посылаться в syslog. Смотрите его для диагностики.
Настройка. Сообщение об ошибке в конце установки может немного смущать, но следующие шаги помогут настроить сервис.
В большинстве случаев, все что нужно сделать, это выделять случайный IP-адрес. Это можно сделать следующими настройками:
# minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.150 192.168.1.200;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name «mydomain.example»;
}
48
Лабораторный практикум 
В результате DHCP-сервер будет выдавать клиентам IP-адре- са из диапазона 192.168.1.150-192.168.1.200. Адреса будут предоставляться на 600 секунд, если клиенты не запросят специфический промежуток времени. При этом максимально разрешенное время аренды будет 7200 секунд. Сервер будет также «рекомендовать» клиентам использовать адрес 192.168.1.254 в качестве шлю-
за и 192.168.1.1 и 192.168.1.2 как DNS сервера.
После изменения настройки вам потребуется перзапустить dhcpd:
sudo /etc/init.d/isc-dhcp-server restart.
Практическое задание
1.Установить DHCP-сервер.
2.Описать каждую строчку стандартного конфигурационного файла /etc/dhcp/dhcpd.conf.
3.Изменить уровень логирования, проанализировать файл ло-
гов /var/log/syslog.
4.Настроить подсеть, получить адрес на другой виртуальной машине.
5.Изучить структуру файла /var/lib/dhcp/dhcpd.leases. Найти выданный другой вирутальной машине адрес.
6.Научиться выдавать статические адреса по MAC адресу машины.
7.Настроить несколько подсетей на одном DHCP-сервере.
8.Разграничить принадлежность между подсетями по частям
MAC или hostname устройств.
Контрольные вопросы
1.Протокол DHCP.
2.Задачи, решаемые с помощью DHCP.
3.Технология администрирования DHCP-сервера.
4.Способы анализа протокола работы DHCP-сервера.
5.Способы обеспечения безопасности DHCP-сервера.
Литература : 1, 2, 3, 4.
49
Практикум по администрированию программного обеспечения
10. ИССЛЕДОВАНИЕ РАЗВЕРТЫВАНИЯ
WEB-СЕРВЕРА APACHE2
Цель – познакомиться с возможностями удалённого доступа с помощью SSH в Linux системах, научиться настраивать SSH сервера и соединения.
Формируемые компетенции или их части: ПК-37, ПК-40.
Теоретическая часть
ApacheHTTPServer–проект,развиваемыйTheApacheSoftware Foundation, в рамках которого разрабатывается кроссплатформенный HTTP сервер с открытым исходным кодом. Входит в состав
LAMP и XAMPP.
Хостинг сайтов. Можно реализовать четырьмя способами:
1)по умолчанию в папке /var/www/html. Доступом является http://localhost/;
2)настройки основного хостинга. Например, http://localhost/ phpmyadmin;
3)в любой папке с помощью модуля виртуальных хостов. На-
пример, http://mysite/;
4)в папке пользователя public_html (модуль userdir). Например, http://localhost/~username.
Установка. Для установки Apache выполните в терминале:
sudo apt-get install apache2.
Настройка. Для применения изменений в настройках необходимо перезапустить демон Apache:
sudo service apache2 restart.
В Ubuntu конечный файл настройки (apache2.conf) разделён на несколько файлов, расположенных в разных поддиректориях. Подробней написано в комментариях файла apache2.conf.
/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load
| `-- *.conf
|-- conf-enabled | `-- *.conf
`-- sites-enabled `-- *.conf
50
