четверг, 28 января 2016 г.

SSL. Просто и понятно.

Генерируется сеансовый ключ для защищенного соединения. Это делается следующим образом:
— Клиент генерирует случайную цифровую последовательность
— Клиент шифрует ее открытым ключом сервера и посылает результат на сервер
— Сервер расшифровывает полученную последовательность при помощи закрытого ключа
Учитывая, что алгоритм шифрования является асимметричным, расшифровать последовательность может только сервер. При использовании асимметричного шифрования используется два ключа — приватный и публичный. Публичным отправляемое сообщение шифруется, а приватным расшифровывается. Расшифровать сообщение, имея публичный, ключ нельзя.
Отсюда - http://mnorin.com/tls-ssl-neobhodimy-j-minimum-znanij.html

Добавлю, что случайная цифровая последовательность, которую сгенерировал клиент, является ключом для симметричного шифрования. После того, как сервер расшифрует данные, отправленные клиентом, зашифрованные публичным ключом, он получает эту случайную последовательность. После этого начинается уже симметричное шифрование с использованием общего ключа.

SSL использует как асимметричную, так и симметричную криптографию.
Суть асимметричного шифрования заключается в том, что используется пара ключей. Один из них используется в качестве открытого (как правило, он публикуется в самом сертификате владельца), второй ключ называется секретным - он держится в тайне и никогда никому не открывается. Оба ключа работают в паре: один используется для запуска противоположных функций другого ключа. Если открытый ключ используется для того, чтобы зашифровать данные, то расшифровать их можно только секретным ключом.   
Любой пользователь может получить открытый ключ по назначению и использовать его для шифрования данных, расшифровать которые может только пользователь, владеющий секретным ключом.
 RSA - самый распространенный алгоритм шифрования с использованием асимметричных ключей.
 При шифровании симметричным ключом  используется один и тот же ключ для шифрованных данных. Если стороны хотят обменяться зашифрованными сообщениями в безопасном режиме, то у обеих сторон должны быть одинаковые симметричные ключи. Такой тип шифрования используется для большого объема данных. 
 Протокол SSL использует шифрование с открытым ключом для аутентификации клиент-сервер и наоборот, а также для определения ключа сессии, который, в свою очередь, используется более быстрыми алгоритмами симметричной криптографии для шифрования большого объема данных.
Отсюда - https://ru.wikipedia.org/wiki/SSL 

четверг, 14 января 2016 г.

Изменить MTU в Windows

Изменение размера MTU в ОС Windows Vista/2008/7

Запустите командную строку Windows от имени администратора (Пуск > Выполнить > cmd). Выполните команды для просмотра текущих значений MTU:

netsh interface ipv4 show subinterfaces

Далее выполните команду для установки нового значения MTU (например, 1452; по умолчанию в Windows используется значение MTU=1500):


netsh interface ipv4 set subinterface "Local Area Connection" mtu=1452 store=persistent 

или для беспроводного интерфейса:



netsh interface ipv4 set subinterface "Wireless Network Connection" mtu=1452 store=persistent

Затем перезагрузите компьютер.


Для просмотра текущих значений MTU вновь выполните команду:
netsh interface ipv4 show subinterfaces


При необходимости, для сброса значений MTU на установки по умолчанию выполните команду:

netsh interface ipv4 reset

и перезагрузите компьютер.

Отсюда - https://zyxel.ru/kb/1815

пятница, 25 сентября 2015 г.

Private VLAN trunk

В рамках подготовки к экзамену CCIE written.

conf t
!
vtp transparent mode
!
vlan 200
private-vlan primary
private-vlan association 205,210
!
vlan 205
private-vlan community
!
vlan 210
private-vlan isolated
!
!
!
interface Fastethernet 4/24
switchport mode private-vlan host
switchport private-vlan host-accociation 200 205
!
interface Fastethernet 4/25
switchport mode private-vlan host
switchport private-vlan host-accociation 200 205
!
interface Fastethernet 4/26
switchport mode private-vlan host
switchport private-vlan host-accociation 200 210
!
interface Fastethernet 4/27
switchport mode private-vlan promiscuous
switchport private-vlan mapping 200 205,210
!
!
! В сторону маршрутизатора без поддержки PVLAN.
! Для исходящих пакетов ставит метку 200 вместо 205 или 210
! Для входящих - оставляет как есть
!
interface Fastethernet 4/28
switchport mode trunk private-vlan trunk promiscuous
switchport private-vlan mapping trunk 200 205,210
!
! На сколько я понял, для добавления обычных VLAN:
! где 10,200,290 - обычные VLAN (primary)
! 205,210 - secondary
!
interface fastethernet 5/2
switchport mode private-vlan trunk promiscuous
switchport private-vlan trunk native vlan 10
switchport private-vlan trunk allowed vlan 10,200,290
switchport private-vlan mapping trunk 200 205,210
!
! Все, что связано с Private VLAN Trunk работает только на 4500, 6500
!
! В сторону коммутатора с поддержкой protected-port (isolated)
! Для исходящих пакетов ставит метку 210 вместо 200
! Для входящих - оставляет как есть
!
interface Fastethernet 4/29
switchport mode private-vlan trunk secondary
switchport private-vlan association 200 210
!
!
! В случае, если нужен SVI в VLAN 200 - Primary, нужно сконфигурить его как
! promiscuous
!
!
interface vlan200
private-vlan mapping 205,210
ip address 192.168.0.1 255.255.255.0

!

понедельник, 21 сентября 2015 г.

My CCIE start

Я стал на путь CCIE. Специализация - Routing and Switching. Уже есть куча видосов и книг. Начал просмотр и изучение. Нет только лабораторного стенда. Первая серьезная задача - собрать стенд. Нужен нормальный эмулятор.

Начало положено.

http://www.gns3.com/
https://community.gns3.com/thread/4557

Сейчас старт взял ещё один эмулятор - UNetLab http://www.ciscolab.ru/labs/42-unetlab-stroim-stend-dlya-podgotovki-k-ccie-rs-sp-dc-sec.html



пятница, 21 августа 2015 г.

Squid transparent HTTPS Proxy

Сейчас на рынке много платных продуктов, которые предлагают раскрывать SSL трафик и фильтровать запросы пользователей. Когда-то я занимался freeware решениями на linux. Тогда в squid не было возможности на лету раскрыть SSL, сейчас есть. В интернетах много статей на эту тему, но не нашел такой, после которой все заработало бы без шаманств.

1. Соберем squid

Посмотрите последнюю версию сквида.
wget http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.7.tar.gz
tar -zxf squid-3.2.7.tar.gz
cd squid-3.2.7
./configure --prefix=/opt/squid --enable-ssl --enable-ssl-crtd --with-openssl

make all
make install

2. Создадим сертификат

openssl genrsa -out privkey.pem 1024
openssl req -new -key privkey.pem -out certreq.csr
openssl x509 -req -days 3650 -in certreq.csr -signkey privkey.pem -out squid.pem

3. Подготовим кэширование сертификатов

mkdir /opt/squid/var/lib
/opt/squid/libexec/ssl_crtd -c -s /opt/squid/var/lib/ssl_db
chown -R nobody /opt/squid/var/lib/ssl_db

Если меняется сертификат сервера, нужно грохнуть /opt/squid/var/lib/ssl_db, после чего запустить по новой процедуру подготовки кэширования.

4. Добавим в конфиг сквида

http_port 3130
http_port 3128 intercept
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/opt/squid/etc/squid.pem key=/opt/squid/etc/privkey.pem cipher=TLSv1:!AES128:!CAMELLIA

sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow all
always_direct allow all

#ssl_bump client-first all
ssl_bump server-first all
ssl_bump none all

Забегая вперед скажу, что заработало все, когда я закоментил строку "ssl_bump client-first all" и добавил "cipher=TLSv1:!AES128:!CAMELLIA". После этого в динамических сертификатах появилась строка с доменным именем хоста. До этого при динамическом перехвате трафика и отправки его в проксю, гмаил ругался на mitm атаку (NET::ERR_CERT_COMMON_NAME_INVALID).

5. Запустить squid
/opt/squid/sbin/squid -z 
/opt/squid/sbin/squid

Клиенту я добавил сертификат squid.pem в доверенные корневые центры сертификации.
Во многих статьях (всех, которые мне попались) для клиента генерят сертификат так:

openssl x509 -in squid.pem -outform DER -out squid.der

У меня и Firefox и IE и, соответственно, Chrome отказались есть .der

На squid я отправляю трафик микротиком, указывая его в качестве шлюза для пакетов с определенными метками (их микротик ставит в таблице mangle). На линуксовой машине в нужные порты распихивает iptables:

-A PREROUTING -i tun0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
-A PREROUTING -i tun0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 127.0.0.1:3129

---
Использовал выдержки и инфу их статей:
http://habrahabr.ru/post/168515/
https://toster.ru/q/43184

Очень помог этот тред - http://www.linux.org.ru/forum/admin/11419750

Пока что не получается импортировать сертификать в смартфон Nexus 5 с ОС Android 5.1.1. Процедура проходит без ошибок ()http://android.stackexchange.com/questions/61540/self-signed-certificate-install-claims-success-but-android-acts-as-if-cert-isn, но в результате во вкладке "пользовательские сертификаты" нет импортируемого сертификата. Рута нет. Если кто победит, прошу поделиться. Тут точное описание проблемы с импортом сертификата - http://android.stackexchange.com/questions/61540/self-signed-certificate-install-claims-success-but-android-acts-as-if-cert-isn

Вот описан способ с рутом - http://wiki.cacert.org/FAQ/ImportRootCert, но интересует без рута.