Решение домашних задания для сдачи экзамена
Внимание! Примеры на лекциях чаще всего рассчитаны на работу с правами суперпользователя (входное имя root, пароль root). Это плохой, негодный пароль, не надо в боевой системе использовать такие. Примеры хороших, годных паролей см. в выдаче команд pwqgen и pwgen.
Если вы не большой знаток Linux, редактировать конфигурационные файлы можно с помощью команды mcedit /путь/до/файла. Если вы знакомы с двухпанельными файловыми менеджерами типа «синенькое» (Far Manager, Total Commander и т. п.), можете воспользоваться mc. Символ # в начале строки конфигурационного файла начинает комментарий.
Обе машины — и «сервер», и «клиент» — имеют по два сетевых интерфейса, из которых один смотрит в «интернет» 10.0.2.0/24 (что это за интернет — об этом после), а второй — в невидимую ниоткуда, кроме виртуальных машин, внутреннюю сеть virtualbox 10.30.50.0/24 (очень удобно: внутренних сетей можно наделать сколько хочешь и моделировать любую топологию сети). Различаются только настройки: сервер по умолчанию ходит в интернет через интерфейс с интернетом, а клиент — через внутреннюю сеть посредством сервера.
Сам virtualbox может раздавать сетевые настройки при помощи DHCP, но этим пользуется только сервер (для «интенрентого» интерфейса). Внутренний интерфейс 10.30.50.1/24 в сервере настроен вручную, и по внутренней сети уже сам сервер раздаёт DHCP, а клиент — получает. Адрес 10.0.2.10/24 на «интернетном» интерфейсе клиент настраивает вручную.
Разумеется, при такой конфигурации клиент тоже может работать маршрутизатором для сервера!
Если в примере встречаются команды и клиента, и сервера, я включаю в него приглашение командной строки с именем машины.
Внимание пользователям Windows!. Проверьте настройки межсетевого экрана Windows для VirtualBox: есть сведения, что настройки по умолчанию режут некоторые протоколы (например, не работает traceroute).
Копипаста
Домашнее задание получится значительно быстрее, если работать не в консолях виртуальных машин, а подключаться к ним по SSH (как это было продемонстрировано на демо-лекции). 22-й порт «сервера» отображается на 2210-й порт хост-машины, а 22-й порт «клиента» — на 2211-й. подключение из командной строки:
$ ssh root@localhost -p 2210
лучше работы в консоли тем, что команды можно копировать с этой страницы и вставлять терминальное в окно.
Пользователи VirtualBox под Windows могут воспользоваться PuTTY
Как заполнять журнал
Журнал заполняется сам. Но в некоторых случаях (когда в домашнем задании задаётся вопрос)нужно кое-что предпринять.
На вопросы вида «что находится в файле таком-то?» отвечать запуском команды cat файл такой-то.
На вопросы вида «найти», помеченные как , отвечать таким образом, чтобы из ваших действий следовало, что вы действительно что-то нашли :).
Как минимум, стоит выполнить команду вида "# otwet na wopros" (с точки зрения командной строки это — комментарий, а в журнал запишется, см. первую команду примера ниже).
Более крутой способ — это использовать конструкцию вида: "получить_текстовую_информацию | grep шаблон". Пример: вопрос «как называется служба NFS?» и два варианта ответа:
[root@uneex ~]# # C.O.: nfs daemon is called "nfs" :) [root@uneex ~]# chkconfig --list | grep nfs nfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Точного соответствия не требуется, даже шаблон не обязан содержать ничего разумного: идея в том, чтобы с помощью grep уменьшить выдачу до небольшого объёма, в котором присутствует ответ.
На вопросы вида «что делает команда такая-то?» — как минимум, запускать эту команду, а ещё можно демонстративно запускать man команда такая-то (дескать, почитал руководство и теперь всё понял ).
Задания, помеченные , делать не обязательно (хотя и интересно).
Журнал ведётся для каждого сеанса работы в shell, поэтому включать и выключать виртуалку можно сколько угодно раз. Но не забывайте:
- выходить из всех сеансов перед выключением компьютера
- выключать компьютер с помощью "shutdown -h -P now" (для этого надо снова специально один раз залогиниться)
Какие получать оценки
- Вы (как-то) сделали больше половины Д/З и у вас получилось отослать мне журнал.
- Вы честно делали («а я учил…»™) все пункты Д/З, но некоторые (не более 1/4) у вас не получились, и вы не понимаете, почему. А времени понять у вас нет (иначе см. примечание к следующему пункту).
Вы успешно сделали все пункты Д/З (+/- 2 элемента списка), за исключением, быть может, тех, что не получились не по вашей вине (см. неудачу с whois на демолекции)
Если у вас что-то тупо не выходит, всегда можно спросить у меня (FrBrGeorge).
- Д/З не обязательно делать в один присест или сразу успешно. Возможен итеративный подход, только сообщайте мне, что именно не сделали или доделали.
Неподписанные, фальсифицированные и решённые менее, чем наполовину журналы не принимаются.
Как отсылать журнал
- Убедитесь, что всё домашнее задание, которое вы хотели сделать, сделано.
- Убедитесь, что обе виртуалки запущены.
Убедитесь, что адрес второй виртуалки (клиента) действительно 10.30.50.7.
Если это не так, то, скорее всего, при импорте виртуалки ей сгенерировали новые MAC-адреса сетевых карточек. Посмотрите MAC-адрес интерфейса enp0s8 на клиенте и поменяйте на сервере в файле /etc/dhcp/dhcpd.conf поле hardware ethernet на этот MAC-адрес. Затем надо сделать service network restart на клиенте. Добейтесь правильного IP-адреса.
Если вы не собираетесь подписывать журнал собственным настоящим ключом, убедитесь, что вы проделали домашнее задание по gpg:
[root@uneex ~]# gpg --fingerprint 'Joe Tester (with stupid passphrase) <joe@foo.bar>' /root/.gnupg/pubring.gpg ------------------------ pub 1024D/00000000 2013-12-22 Key fingerprint = 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 uid Joe Tester (with stupid passphrase) <joe@foo.bar>
Запишите полученный fingerprint (а не эти нули), он вам понадобится.
Выполните команду report какое-нибудь-имя на сервере:
[root@uneex ~]# report sarumanthewhitenoise Gathering info Reporting server Reporting client Merging reports Signing report Publishing report sarumanthewhitenoise-1387714551-uneex.tar.xz.gpg 100% 67KB 66.7KB/s 00:00
команда создаёт сводный журнал, подписывает его ключом, созданным в домашнем задании, и отсылает на специальный сервер. Если выдача содержит ошибки, значит, что-то пошло не так.
Напишите мне (см. FrBrGeorge) письмо, упомянув:
- ФИО, курс
Какие задания не сделали
имя файла (из выдачи report)
копипасту выдачи report, если в ней содержатся ещё какие-то сообщения
finergprint ключа из выдачи gpg --fingerprint
Опционально вы можете вытащить файл /tmp/sarumanthewhitenoise-1387714551-uneex.tar.xz (или как он там будет называться), подписать его собственным ключом (настоящим) и прислать подписанный файл и открытый ключ почтой. Вытащить файл можно, например, так:
$ scp -P2210 root@localhost:/tmp/sarumanthewhitenoise-1387714551-uneex.tar.xz .
или с помощью WinSCP в случае Windows.
Домашнее задание
Импорт виртуальных машин
Установить VirtualBox.
Удалить старые виртуальные машины «nano» и «naniclient» (если были)
Скачать архив с образами виртуальных машин, распаковать и импортировать их. Импорт из командной строки: VBoxManage import Nano.ovf или в GUI: «Файл → Импорт конфигураций → Nano.ovf»; то же самое для «клиентской» машины NanoClient.ovf.
- ЗУН
- Знать принципы организации стека протоколов TCP/IP и базовую терминологию
Ethernet: свойства носителя
Интерпретировать выдачу такой команды (enp0s3 — это название устройства, подключённого к среде ПД):
[root@uneex ~]# ethtool enp0s3
Последовательный порт
- Интерпретировать результаты работы команды
[root@uneex ~]# stty -a < /dev/ttyS0
Посмотреть в документации и обратить внимание на значение полей baud, cstopb, parenb, parodd и csN:
[root@uneex ~]# man stty | egrep -C1 'baud|cstopb|parenb|parodd|csN'
(Часть задания выполняется на хост-системе, в журнал не входит). Посмотреть на скорость передачи можно так: настроить ВМ таким образом, чтобы COM1 перенаправлялся в создаваемый при старте сокет («настройки ВМ → COM-порты» «Порт1 → хост-канал» + «создать канал» + какое-нибудь имя, например, nano)
[root@uneex ~]# stty 300 < /dev/ttyS0 [root@uneex ~]# cal > /dev/ttyS0
И на хост-системе поглядеть в этот сокет:$ socat UNIX-CONNECT:nano1 -
- ЗУН
- Знать принципы работы в командной строке shell; иметь представление о кодировании и передаче информации; владеть первичными навыками работы в командной строке
Ethernet
С помощью ip link узнать имена сетевых интерфейсов
- Сколько их?
С помощью ethtool посмотреть параметры Ethernet-интерфейсов. обратить внимание на различие скорости
[root@uneex ~]# ethtool enp0s3 | grep 100 [root@uneex ~]# ethtool enp0s8 | grep 100
С помощью ifdown enp0s8 «опустить» интерфейс. Что изменилось?
[root@uneex ~]# ip l show dev enp0s8 [root@uneex ~]# ifdown enp0s8 [root@uneex ~]# ip l show dev enp0s8
ifdown — это сценарий. Какой командой «опускается» интерфейс?
- заглянуть внутрь трафика:
(NB: вы можете использовать несколько консолей для работы, они переключаются по ALT-F1, ALT-F2 и т. д; также можно несколько раз подключиться по ssh)
# socat TUN:192.168.255.1/24,up,tun-type=tap - | hexdump -C
- Посмотреть с другой консоли на созданный виртуальный сетевой интерфейс:
[root@uneex ~]# ip l show dev tap0
- Посмотреть с другой консоли на созданный виртуальный сетевой интерфейс:
# ping 192.168.255.2 (также с другой консоли)
(трудно отчитаться) Наблюсти в выдаче MAC-адрес интерфейса tap0, широковещательный адрес ff ff ff ff ff ff и IP-адрес
- Это какого уровня трафик?
- ЗУН
Знать основную терминологию протоколов канального уровня, принципы работы протокола ethernet, иметь представление о формате фрейма, особенностям WiFi; иметь базовый навык в использовании команд ip link и ethtool; уметь находить сетевые интерфейсы Linux и изучать их параметры.
IP: адресация и маршрутизация
Какие адреса выдаёт команда ip a?
Что умеет ip addr (краткий список: ip a help)
Как устроена таблица маршрутизации (ip r)?
Каков адрес маршрутизатора по умолчанию?
Какой интерфейс ведёт в интернет?
Что можно узнать из команды whois 158.250.10.1?
в частности — номер автономной системы (ASномер). Что выдаёт команда whois этот_номер?
ARP
Сколько машин показывает ip n?
[root@uneex ~]# ip n [root@uneex ~]# ip n | wc -l
Добиться, чтобы выдача ip n менялась после ping чего-нибудь
- Сеанс работы протокола ARP
убедиться, что в ip n на клиенте пропал адрес сервера
- Выполнить
[root@uneex ~]# tcpdump -v -n -i enp0s8 arp
[root@uneexclient ~]# ping -c1 srv
- пронаблюдать сеанс заполнения ARP-таблицы в выдаче tcpdump
ICMP
Сеанс работы traceroute
- запустить
[root@uneex ~]# tcpdump -v -i enp0s3 host www.ru or icmp
[root@uneexclient ~]# traceroute -q1 -w1 www.ru
пронаблюдать работу traceroute. Обратить внимание на увеличивающиеся значения ttl
- запустить
Настройка сети
- Настройки сети на сервере:
ip r, ip a
ls /etc/net, ls /etc/net/ifaces
find /etc/net/ifaces/[el]* -type f -print (эта команда рекурсивно просматривает соответствующие каталоги и находит в них файлы)
find /etc/net/ifaces/[el]* -type f -print -exec cat {} \; (эта командавыводит не только имена файлов, но и их содержимое)
(вариант предыдущей команды, в которой find только выдаёт имена файлов, а выводом занимается sh): find /etc/net/ifaces/[el]* -type f -print | while read f; do echo " ====== $f"; cat $f; done
каких привычных настроек сети не задано явно в текущей конфигурации etcnet и почему?
- Настройка DHCP:
- Настройки сервера:
[root@uneex ~]# cat /etc/dhcp/dhcpd.conf
- Посмотреть сеанс настройки клиента по DHCP:
[root@uneex ~]# tcpdump -v -n -i enp0s8 port bootps or port bootpc
- Перезапустить сеть на клиенте, чтобы этот сеанс произошёл:
[root@uneexclient ~]# service network restart
- Настройки сервера:
- Настройки сети на клиенте
- См. настройки на сервере.
ip rule (обратить внимание на пока пустую нестандартную таблицу "back")
cat /etc/iproute2/rt_tables
В файле /etc/net/ifaces/enp0s3/ipv4route расскомментировать по одной строчке (остальные должны быть закомментированы), посмотреть, что изменится после service network restart
В частности, выполнить команды ip r и ip route get 217.76.32.61
Обратите внимание на то, что записей вида default в таблице может быть несколько; если не заданы приоритеты, побеждает первая (она же последняя добавленная)
Целевая маршрутизация
- Настройка и работа Policy routing
На клиенте раскомментировать в enp0s3/ipv4route только строку default via 10.0.2.2 table back (она заполняет таблицу "back"), перезапустить сеть
ip route list table back
ip r get from 10.30.50.1 iif enp0s8 217.76.32.61
- что делает эта команда?
чем её результат отличается от ip r get 217.76.32.61 и почему?
- Пронаблюдать процесс целевой маршрутизации:
Выяснить ip-адрес клиента в сети 10.30.50.0/24:
[root@uneexclient ~]# ip a
[root@uneexclient ~]# tcpdump -ni enp0s3 port 80
[root@uneex ~]# ip r add 217.76.32.61/32 via ip-адрес-клиента
[root@uneex ~]# ip r get 217.76.32.61; ip r get 217.76.32.60
[root@uneex ~]# echo -e "QQ\n\n" | netcat 217.76.32.61 80
Закомментировать обратно все строки в enp0s3/ipv4route на клиенте и на сервере, а то работать будет не так, как надо
TCP
- Посмотреть TCP-трафик
На сервере запустит tcpdump:
[root@uneex ~]# tcpdump -KlSnni enp0s3 tcp and port 80
- на клиенте — сходить куда-нибудь по 80-му порту, например:
[root@uneexclient ~]# date | netcat linux.org.ru 80
Наблюсти TCP-сеанс. Обратить внимание на флаги [S] (syn) [P] (payload) и [F] (fin), возникающие в сеансе, а также на использование двух нарастающих seq (туда и обратно)
Наблюсти тот же сеанс, убрав S и nn из ключей tcpdump
UDP и ICMP
- На сервере посмотреть трафик по 53-му и 123-му портам и протоколу ICMP
[root@uneex ~]# tcpdump -Klvnni enp0s3 port domain or port ntp or icmp
- На клиенте:
пингануть что-нибудь (например ping -c3 linux.org.ru)
обновить время (ntpdate ru.pool.ntp.org)
выполнить traceroute (traceroute -N1 -q1 -n linux.org.ru)
- Наблюсти на сервере
- DNS-трафик (от ping, ntpdate и т. п.). Где в нём DNS Query ID?
ICMP-трафик (для ping — id. для traceroute — увеличивающиеся ttl, UDP и ICMP)
- NTP-трафик (Transmit Timestamp и Originator Timestamp в ответе)
FTP и его непростой выбор портов
На сервере запустить tcpdump -i enp0s8
- На клиенте выполнить
[root@uneexclient ~]# ftp 10.30.50.1 … Name (10.30.50.1:root): ftp … ftp> ls … ftp> passive … ftp> ls … ftp> exit
- Найти:
- в passive режиме (по умолчанию):
в выводе FTP: предложение сервера подключиться для передачи данных к случайному порту (представлен в побайтно-десятичном виде сразу после адреса, например 234.12 — это 234*256+12 = 59916
подключение к этому порту (в tcpdump) с клиента на сервер
в active режиме (после команды passive)
в выводе FTP: предложение клиента подключиться для передачи данных к случайному порту
подключение к этому порту (в tcpdump) с сервера на клиент
- в passive режиме (по умолчанию):
Запуск сетевых служб
- Посмотреть список зарегистрированных служб:
# chkconfig --list
Обратите внимание на то, что команда chkconfig управляет и запуском служб посредством sysvinit, и метадемоном xinetd
Остановить службу dhcpd и посмотреть, что изменилось (можно также проверить с клиента, что DHCP недоступен):
# netlist > full # service dhcpd status … # service dhcpd stop … # netlist > no_dhcp # diff -u full no_dhcp … # service dhcpd start …
Что делает утилита netlist?
Посмотреть выдачу утилиты rpcinfo без параметров, с ключом -s и с ключом -p. Что эти команды делают?
Метадемон xinetd
Посмотреть настройки xinetd на сервере:
# cat /etc/xinetd.conf … # ls /etc/xinetd.d/ … # cat /etc/xinetd.d/bftpd-tcp … # grep disable /etc/xinetd.d/* …
Обратите внимание, как выключаются зарегистрированные inetd-фильтры
(пример уже воспроизведён). Воспроизвести пример «Обслуживание прикладного уровня в Linux» из учебника (подключаться с клиентской машины с помощью netcat вместо telnet)
- Посмотреть самодельный xinetd-файл и проверить его работу:
[root@uneex ~]# chkconfig --list calendar
[root@uneex ~]# cat /etc/xinetd.d/calendar
[root@uneexclient ~]# netcat srv 26000
DNS
Посмотреть настройку сети: [root@uneex ~]# cat /etc/net/ifaces/enp0s3/options
Что лежит в /etc/resolv.conf на сервере и на клиенте?
- Создать DNS-запрос на клиенте и посмотреть, как его разрешает сервер (напоминаю, что подсказка в начале показывает, на какой машине давать команды):
[root@uneex ~]# tcpdump -i enp0s3 port 53 … [root@uneexclient ~]# dig cmc.msu.ru … [root@uneex ~]# tcpdump -i enp0s8 port 53 … [root@uneexclient ~]# hostinfo 10.30.50.13 … [root@uneexclient ~]# hostinfo host17 …
- Заглянуть в настройки BIND на сервере:
прямую и обратную зоны: /var/lib/bind/zone/* (в т. ч. для localhost)
настройки: /var/lib/bind/etc/options.conf (обратите внимание на поле forwarders) и /var/lib/bind/etc/local.conf
NFS
- посмотреть работу NFS:
[root@uneex ~]# tcpdump -i enp0s8 not port 53 … [root@uneexclient ~]# showmount -e srv … [root@uneexclient ~]# mount srv:/home /mnt [root@uneexclient ~]# find /mnt … [root@uneexclient ~]# umount /mnt
- Обратите внимание на premission denied. Отчего это?
Посмотреть DNS-трафик при ls /mnt/net/home с клиента (используются анонсированные через DNS службы)
Zeroconf
- Работа Avahi:
# avahi-browse -at
- Посмотреть анонсирующую настройку:
[root@uneex ~]# cat /etc/avahi/services/nfs-home.service …
- посмотреть трафик работы zeroconf:
[root@uneexclient ~]# tcpdump -i enp0s8 … [root@uneex ~]# ping uneexclient.local … [root@uneex ~]# tcpdump -i enp0s8 … [root@uneexclient ~]# ls /mnt/net/Homes …
Открытая передача учётных записей в старых протоколах
- Убедиться в небезопасности FTP (login: "user", password: "user"):
[root@uneex ~]# dsniff -i enp0s8 … [root@uneexclient ~]# ftp srv … Name (srv:root): user … Password: user …
SSL-сертификаты
- создание самоподписанного сертификата
короткая команда: [root@uneex ~]# cert-sh generate lighttpd (это просто небольшой сценарий)
- посмотреть, какими командами генерируется самоподписанный сертификат:
[root@uneex ~]# rm -rf tmp/test; mkdir -p tmp/test/{private,certs} [root@uneex ~]# SSLDIR=tmp/test sh -x cert-sh generate lighttpd 2>&1 | egrep '^[+] (openssl|cat|ln)'
должно быть четыре стадии: создание ключа, создание запроса на подпись этим ключом, подпись самим собой и склеивание подписи с ключом перезагрузить http-сервер: [root@uneex ~]# service lighttpd restart
- проверка разных сертификатов:
[root@uneexclient ~]# openssl s_client -verify on -connect srv:443 < /dev/null
[root@uneexclient ~]# LC_ALL=C lynx https://www.uneex.org
[root@uneexclient ~]# LC_ALL=C lynx https://uneex.ru
[root@uneexclient ~]# LC_ALL=C lynx https://srv
Netcat
Поговорить с самим собой с помощью netcat:
[root@uneex ~]# nc -l 12345 … [root@uneexclient ~]# nc srv 12345 …
- Для того, чтобы закрыть поток В/В, достаточно нажать "Ctrl+D"
Secure shell
Зайти с клиента на сервер по ssh, почитать отладочную диагностику и обнаружить там имена файлов с ключами:
[root@uneexclient ~]# ssh -v root@srv
- Сгенерировать ключ (защищённый кодовой фразой "123456"):
[root@uneexclient ~]# rm -rf /root/.ssh/id_dsa && ssh-keygen -P123456 -t dsa -f /root/.ssh/id_dsa
Повторять эту команду до тех пор, пока ASCII-арт отпечатка не покажется красивым
удалить файл .ssh/known_hosts и снова зайти на сервер. Увидеть диалогThe authenticity of host 'srv (10.30.50.1)' can't be established и в нём отпечаток (обращаю внимание, что отвечать надо yes, а не y). В отладочной информации увидеть, что предложенный ключ был отвергнут
- Скопировать открытый ключ на сервер (надо будет ввести кодовую фразу):
[root@uneexclient ~]# ssh-copy-id srv
ssh-copy-id — это простой сценарий, запустить sh -x ssh-copy-id srv и посмотреть, какими командами что копируется
- Ещё раз зайти на сервер (теперь вместо пароля надо будет вводить кодовую фразу)
Запустить ssh-агент (обратите внимание, что команда ssh-agent генерирует все остальные команды, их просто надо скопировать, и числа там будут другие)
[root@uneexclient ~]# ssh-agent SSH_AUTH_SOCK=/root/tmp/ssh-XIglJWV12040/agent.12040; export SSH_AUTH_SOCK; SSH_AGENT_PID=12041; export SSH_AGENT_PID; [root@uneexclient ~]# SSH_AUTH_SOCK=/root/tmp/ssh-XIglJWV12040/agent.12040; export SSH_AUTH_SOCK; [root@uneexclient ~]# SSH_AGENT_PID=12041; export SSH_AGENT_PID;
- Вместо всего этого можно было выполнять такую команду:
[root@uneexclient ~]# eval `ssh-agent`
- Добавить в него ключ, посмотреть на ключ и зайти наконец-то без пароля!
[root@uneexclient ~]# ssh-add -l The agent has no identities. [root@uneexclient ~]# ssh-add Enter passphrase for /root/.ssh/id_dsa: Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa) [root@uneexclient ~]# ssh-add -l 1024 5c:5f:59:eb:97:ec:e0:fc:f7:18:1f:10:89:dd:f4:90 /root/.ssh/id_dsa (DSA) [root@uneexclient ~]# ssh srv Last login: Fri Nov 29 14:16:39 2013 from host13.class.altlinux.org
- Пробросить подключение с клиента на uneex.ru:80 на порт сервера 8001:
[root@uneexclient ~]# ssh srv -R8001:www.ru:80 Last login: Fri Nov 29 14:25:26 2013 from host13.class.altlinux.org [root@uneex ~]# netlist | grep 8001 root 14358 sshd 8 tcp 127.0.0.1:8001 0.0.0.0:0 LISTEN [root@uneex ~]# links http://localhost:8001 …
С помощью tcpdump убедиться, что трафик идёт так: сервер(localhost):8001 → клиент(ssh-тоннель):22 → www.ru:80
GnuPG
- Импортировать открытый GPG-ключ и проверить его отпечаток:
[root@uneex ~]# rm -rf $HOME/.gnupg [root@uneex ~]# gpg --list-keys [root@uneex ~]# gpg --recv-keys 7C10D900 [root@uneex ~]# gpg --fingerprint /root/.gnupg/pubring.gpg ------------------------ pub 1024D/7C10D900 2003-10-17 Key fingerprint = D01B B410 C69D AE98 8EB0 16F0 E1F0 3D6E 7C10 D900
Проверить подпись этого файла:
[root@uneex ~]# curl 'https://uneex.ru/LecturesCMC/LinuxNetwork2013/09-SecurityAndTools?action=AttachFile&do=get&target=signed.txt' > signed.txt [root@uneex ~]# gpg --verify signed.txt
- Обратите внимание, что ключ хотя и проверен, но вы лично не подписывали его, так что причин доверять ему нету.
Сгенерировать учёбный ключ (ВНИМАНИЕ!. Учётные данные в этом ключе менять не надо, они исползуются для формирования отчёта. Вы можете нагенерировать ещё ключей, но этот надо оставить).
[root@uneex ~]# echo " Key-Type: DSA Key-Length: 1024 Name-Real: Joe Tester Name-Comment: with stupid passphrase Name-Email: joe@foo.bar Expire-Date: 0 %commit " | gpg --batch --gen-key -
При появлении надписи (если вдруг) "Not enough random bytes available." придётся зайти в соседнюю консоль и нажимать на все подряд клавиши клавиатуры. В VirtualBox с энтропией плоховато.
- Подписать ключ 7C10D900 и снова проверить подпись
[root@uneex ~]# gpg --sign-key 7C10D900 … [root@uneex ~]# gpg --verify signed.txt …
Межсетевые экраны
(задание по МЭ в отчёт можно не включать) Следующая команда выдаёт ошибку. Почему?
[root@uneex ~]# iptables -A POSTROUTING -d 217.76.32.61 -j REJECT iptables: No chain/target/match by that name.
(задание по МЭ в отчёт можно не включать) В следующих примерах для проверки связности запускать команду
# echo -e "GET / HTTP/1.0\nHost: linux.org.ru\n" | netcat linux.org.ru 80
с клиента и с сервера и просматривать сами правила с помощью[root@uneex ~]# iptables-save
- Добавить фильтрующее правило:
[root@uneex ~]# iptables -A FORWARD -d 217.76.32.61 -j REJECT
- Удалить фильтрующее правило:
[root@uneex ~]# iptables -D FORWARD -d 217.76.32.61 -j REJECT
- Добавить фильтрующее правило:
[root@uneex ~]# iptables -A OUTPUT -d 217.76.32.61 -j REJECT
- Удалить фильтрующее правило
- Посмотреть на соединения, обслуживаемые conntrack:
[root@uneex ~]# cat /proc/net/nf_conntrack
- Добавить фильтрующее правило: