Различия между версиями 2 и 3
Версия 2 от 2013-11-29 13:29:17
Размер: 5336
Редактор: FrBrGeorge
Комментарий:
Версия 3 от 2013-11-29 14:03:22
Размер: 7676
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
/!\
----
netcat
=== Полезные утилиты ===
Неполезные утилиты: `rsh` и `telnet`
Строка 6: Строка 5:
socat ==== netcat и другие ====
 * Сервер (-l, -p порт) и клиент
 * UDP (-u) и unix domain (-U)
 * Всякое: пакетная отдача (-l секунды), тайм-аут (-w секунды). socks…
Строка 8: Строка 10:
wget Другие
 * [[http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLES|socat]]
 * [[http://www.openssl.org/docs/apps/s_client.html|openssl s_client -connect]]
==== wget и другие ====
 * [[http://www.gnu.org/software/wget/manual/wget.html|wget]]
 * [[http://curl.haxx.se/docs/manpage.html|curl]], [[http://lftp.yar.ru/lftp-man.html|lftp]], [[http://aria2.sourceforge.net/|aria2]]…
Строка 10: Строка 17:
tcpdump ==== tcpdump ====
 [[http://www.tcpdump.org/tcpdump_man.html|Документация]]
Строка 12: Строка 20:
конвейерный принцип в UNIX === Сеть в VirtualBox ===
 * интерфейсы и их режимы: NAT, мост, внутренняя сеть, …
 * работа «внутренней сети»
 * работа "NAT" режима
 * «проброс портов»
 * [[/static/LinuxNetwork2013/Nano.7z|Стенд]]: организация сети и проброс портов (часть `.ssh/config`):
 {{{
host nano
        Hostname localhost
        Port 2210
        HostKeyAlias nano
        User root
Строка 14: Строка 33:
gpg host nanoclient
        Hostname localhost
        Port 2211
        HostKeyAlias nanoclient
        User root
 }}}
Строка 16: Строка 40:
работа "NAT" режима в !VirtualBox и «проброс портов» === GnuPG ===
 * Подпись и шифрование
 * доверенные и недоверенные ключи
 * сети доверия; падение уровней доверия
 * [[http://malpaso.ru/gpg-keysigning-party/|Как проводить встречи для подписи ключей GnuPG]]

=== Secure Shell, великий и могучий ===
 * Шифрование и аутентификация
 * Ключ сервера и ключ пользователя: их применения
 * Первоначальный обмен ключами и man-in-the-middle
 * Проброс портов по защищённому каналу
 * SSH-Агент
  * Проблема доступа к ssh-агенту, ssh-askpass
 * Socks
 * … !
Строка 36: Строка 74:
   * снова зайти на сервер и в отладочной информации увидеть, что предложенный ключ был отвергнут    * удалить файл `.ssh/known_hosts` и снова зайти на сервер. Увидеть диалог`The authenticity of host 'srv (10.30.50.1)' can't be established` и в нём отпечаток (обращаю внимание, что отвечать надо '''yes''', а не '''y'''). В отладочной информации увидеть, что предложенный ключ был отвергнут

Полезные сетевые утилиты. Использование шифрования

Полезные утилиты

Неполезные утилиты: rsh и telnet

netcat и другие

  • Сервер (-l, -p порт) и клиент
  • UDP (-u) и unix domain (-U)
  • Всякое: пакетная отдача (-l секунды), тайм-аут (-w секунды). socks…

Другие

wget и другие

tcpdump

Сеть в VirtualBox

  • интерфейсы и их режимы: NAT, мост, внутренняя сеть, …
  • работа «внутренней сети»
  • работа "NAT" режима
  • «проброс портов»
  • Стенд: организация сети и проброс портов (часть .ssh/config):

    host    nano
            Hostname localhost
            Port 2210
            HostKeyAlias nano
            User root
    
    host    nanoclient
            Hostname localhost
            Port 2211
            HostKeyAlias nanoclient
            User root

GnuPG

Secure Shell, великий и могучий

  • Шифрование и аутентификация
  • Ключ сервера и ключ пользователя: их применения
  • Первоначальный обмен ключами и man-in-the-middle
  • Проброс портов по защищённому каналу
  • SSH-Агент
    • Проблема доступа к ssh-агенту, ssh-askpass
  • Socks
  • … !

Д/З

  • Поговорить с самим собой с помощью netcat:

    [root@uneex ~]# nc -l 12345 
    [root@uneexclient ~]# nc srv 12345 
    
    • Для того, чтобы закрыть поток В/В, достаточно нажать "Ctrl+D"
  • Зайти с клиента на сервер по 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

  • Импортировать открытый GPG-ключ и проверить его отпечаток:
     [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 ~]# 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.msg 
    

LecturesCMC/LinuxNetwork2013/09-SecurityAndTools (последним исправлял пользователь FrBrGeorge 2014-01-12 13:39:46)