Различия между версиями 8 и 9
Версия 8 от 2013-12-22 19:13:36
Размер: 7902
Редактор: FrBrGeorge
Комментарий:
Версия 9 от 2014-01-10 13:39:10
Размер: 7940
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 120: Строка 120:
 [root@uneex ~]# rm -rf $HOME/.gnupg

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

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

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

netcat и другие

  • Сервер (-l, -p порт) и клиент
  • UDP (-u) и unix domain (-U)
  • Всякое: пакетная отдача (-i секунды), тайм-аут (-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

  • Поговорить с самим собой с помощью 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
    

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