Решение домашних задания для сдачи экзамена

Внимание! Примеры на лекциях чаще всего рассчитаны на работу с правами суперпользователя (входное имя 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

Как заполнять журнал

Журнал заполняется сам. Но в некоторых случаях (когда в домашнем задании задаётся вопрос)нужно кое-что предпринять.

Журнал ведётся для каждого сеанса работы в shell, поэтому включать и выключать виртуалку можно сколько угодно раз. Но не забывайте:

Какие получать оценки

  1. Вы (как-то) сделали больше половины Д/З и у вас получилось отослать мне журнал.
  2. Вы честно делали («а я учил…»™) все пункты Д/З, но некоторые (не более 1/4) у вас не получились, и вы не понимаете, почему. А времени понять у вас нет (иначе см. примечание к следующему пункту).
  3. Вы успешно сделали все пункты Д/З (+/- 2 элемента списка), за исключением, быть может, тех, что не получились не по вашей вине (см. неудачу с whois на демолекции)

    • Если у вас что-то тупо не выходит, всегда можно спросить у меня (FrBrGeorge).

    • Д/З не обязательно делать в один присест или сразу успешно. Возможен итеративный подход, только сообщайте мне, что именно не сделали или доделали.

Неподписанные, фальсифицированные и решённые менее, чем наполовину журналы не принимаются.

Выставленные оценки

Как отсылать журнал

  1. Убедитесь, что всё домашнее задание, которое вы хотели сделать, сделано.
  2. Убедитесь, что обе виртуалки запущены.
  3. Убедитесь, что адрес второй виртуалки (клиента) действительно 10.30.50.7.

    • Если это не так, то, скорее всего, при импорте виртуалки ей сгенерировали новые MAC-адреса сетевых карточек. Посмотрите MAC-адрес интерфейса enp0s8 на клиенте и поменяйте на сервере в файле /etc/dhcp/dhcpd.conf поле hardware ethernet на этот MAC-адрес. Затем надо сделать service network restart на клиенте. Добейтесь правильного IP-адреса.

  4. Если вы не собираетесь подписывать журнал собственным настоящим ключом, убедитесь, что вы проделали домашнее задание по 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 (а не эти нули), он вам понадобится.
  5. Выполните команду 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    
      команда создаёт сводный журнал, подписывает его ключом, созданным в домашнем задании, и отсылает на специальный сервер. Если выдача содержит ошибки, значит, что-то пошло не так.
  6. Напишите мне (см. FrBrGeorge) письмо, упомянув:

    1. ФИО, курс
    2. Какие задания не сделали

    3. имя файла (из выдачи report)

      • копипасту выдачи report, если в ней содержатся ещё какие-то сообщения

    4. 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) с сервера на клиент

Запуск сетевых служб

  • Посмотреть список зарегистрированных служб:
    # 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        

LecturesCMC/LinuxNetwork2013/HomeWork (последним исправлял пользователь FrBrGeorge 2014-01-10 13:53:41)