Полезные сетевые утилиты. Использование шифрования
Полезные утилиты
Неполезные утилиты: 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 …