Решение домашних задания для сдачи экзамена
Внимание! Примеры на лекциях чаще всего рассчитаны на работу с правами суперпользователя (входное имя 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) (Часть задания выполняется на хост-системе, в журнал не входит). Посмотреть на скорость передачи можно так: настроить ВМ таким образом, чтобы 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 — это сценарий. Какой командой «опускается» интерфейс? 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-адрес (трудно отчитаться) Наблюсти в выдаче MAC-адрес интерфейса tap0, широковещательный адрес ff ff ff ff ff ff и IP-адрес
- Это какого уровня трафик?
 
 
- ЗУН
- Знать основную терминологию протоколов канального уровня, принципы работы протокола ethernet, иметь представление о формате фрейма, особенностям WiFi; иметь базовый навык в использовании команд ip link и ethtool; уметь находить сетевые интерфейсы Linux и изучать их параметры. 
IP: адресация и маршрутизация
- Какие адреса выдаёт команда ip a?  Что умеет ip addr (краткий список: ip a help) Что умеет ip addr (краткий список: ip a help)
 
- Как устроена таблица маршрутизации (ip r)?  Каков адрес маршрутизатора по умолчанию? Каков адрес маршрутизатора по умолчанию?
 Какой интерфейс ведёт в интернет? Какой интерфейс ведёт в интернет?
 
- Что можно узнать из команды whois 158.250.10.1?  в частности — номер автономной системы (ASномер). Что выдаёт команда whois этот_номер? в частности — номер автономной системы (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 в выводе FTP: предложение сервера подключиться для передачи данных к случайному порту (представлен в побайтно-десятичном виде сразу после адреса, например 234.12 — это 234*256+12 = 59916
 подключение к этому порту (в tcpdump) с клиента на сервер подключение к этому порту (в tcpdump) с клиента на сервер
 
- в active режиме (после команды passive)  в выводе FTP: предложение клиента подключиться для передачи данных к случайному порту в выводе FTP: предложение клиента подключиться для передачи данных к случайному порту
 подключение к этому порту (в tcpdump) с сервера на клиент подключение к этому порту (в 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) (пример уже воспроизведён). Воспроизвести пример «Обслуживание прикладного уровня в 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-арт отпечатка не покажется красивым Повторять эту команду до тех пор, пока 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 С помощью 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 
 
- Добавить фильтрующее правило: 
