Сетевые протоколы в Linux: вопросы безопасности
Безопасность: надёжность и секретность.
Ненадёжная природа всемирной сети и борьба с ней
- Повышение связности
- IPv6: решение возможных вопросов гарантированного канала
- Overprovisioning
Секретность и Интернет
- Проблемы аутентичности данных
- Проблемы скрытия данных
Чрезмерно упрощённая классификация видов атак:
- Порча данных и DOS
- Трансляция фальшивых данных
- Чтение
- Модификация
История сетевых протоколов в свете защиты данных
Просто протоколы: FTP, SMTP, POP, … (см. man dsniff)
- Security through obscurity и другие наивные методы шифрования (например, обмен ключами в начале сеанса), Basic HTTP Auth, MIT-MAGIC-COOKIE-1 и т. п.
- Проблема обмена ключами
- Введение алгоритмов шифрования:
- в прикладной протокол
- в «уровень представления» согласно модели ISO/OSI
- Использование асимметричного шифрования
IPSec и другие методы шифрования низкоуровневого трафика
«Полицейские и воры» в современной криптографии (см. историю атак на SSL/T%LS)
Симметричное и асимметричное шифрование
Симметричное шифрование:
- Обмен ключами ⇒ вероятность засвечивания
- Мнение папаши Мюллера: «Что знают двое, знает и свинья»
- Нет аутентичности
Асимметричное шифрование (Диффи, Хеллман, Меркель 1975), (Ривест, Шамир, Адельман 1977), (неизвестные британские учёные ранних 70-х):
- Начало:
- (Диффи, Хеллман, Меркель 1975) Использование различных, не выводимых друг из друга функций шифрования и дешифрования
- (Ривест, Шамир, Адельман 1977) RSA
- (неизвестные британские учёные ранних 70-х) «Мы это раньше открыли, но нас засекретили»
- Открытый (передаваемый) и закрытый (секретный) ключи:
- запрет передачи секретного ключа
обеспечение секретности: A: ОБ(данные) → B: ЗБ(данные)
обеспечение аутентичности: A: ЗА(данные) → B: ОА(данные)
- Вычислительная сложность, использование симметричного шифрования
- Проблема надёжности первоначального обмена ключами
- Атака «man-in-the-middle»
- Подписывание ключа?
Использование шифрования
- «родной» IPSec: шифрование payload IP-пакета
NAT ⇒ невозможность расшифровки
- туннелированый IPSec: инкапсуляция исходного пакета (⇒ MTU-=H, FW)
- «родной» IPSec: шифрование payload IP-пакета
- PGP (Циммерман)
- серверы публикации открытых ключей
- цепочка достоверности
- TLS/SSL:
- сертификат
- подписанный сертификат и торговля ими
- SSH
- шифрование учётных записей и трафика
- авторизация по ключу
- проброс портов и другая сетевая активность в защищённом туннеле
Д/З
Открытая передача учётных записей в старых протоколах
- Убедиться в небезопасности 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