Показаны сообщения с ярлыком ubuntu. Показать все сообщения
Показаны сообщения с ярлыком ubuntu. Показать все сообщения

пятница, 18 июля 2008 г.

Полный разбор файла конфигурации OpenVPN

Пример файла /etc/openvpn/server.conf
port 1194
proto udp
dev tun
;dev-node tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.10.10.0 255.255.255.0 # vpn subnet
ifconfig-pool-persist ipp.txt
push "route 192.168.7.0 255.255.255.0" # home subnet
;duplicate-cn
keepalive 10 120
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
;status openvpn-status.log
;log-append openvpn.log
verb 10
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd
route 192.168.1.0 255.255.255.0

Указываем, на каком порту принимать соединения:

port 1194

Указываем протокол (tcp или udp):

proto udp

Указываем, что именно будем инкапсулировать в туннеле (ethernet фреймы - tap или ip пакеты - tun)

dev tun

Прописываем пути к ключам и сертификатам:

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem

Выделяем внутренний диапазон адресов для VPN:

server 10.10.10.0 255.255.255.0 # vpn subnet

В какой файл будем записывать выданные для VPN адреса?:

ifconfig-pool-persist ipp.txt

Прописываем на клиенте маршрут до домашней сети (той которая за сервером):

push "route 192.168.7.0 255.255.255.0" # home subnet

Пинговать каждые 10 секунд, если хост не отвечает в течении 120 секунд, считать его в недоступным:

keepalive 10 120

Разрешить сжатие пакетов:

comp-lzo

Прописываем пользователя и группу, от имени которых будет запускаться демон:

user nobody
group nogroup

Пытаться переподключаться после падений интерфейса (не уверен, что правильно перевёл):

persist-key
persist-tun

Уровень подробности логов (от 0 до 9):

verb 4

Не писать в логи повторяющиеся сообщения:

mute 20

Разрешить пересылку пакетов между клиентами:

client-to-client

Автоматически прописать машрут на сервере до клиента

client-config-dir /etc/openvpn/ccd
route 192.168.1.0 255.255.255.0

Настройка OpenVPN в Ubuntu

Должен быть установлен пакет openvpn:

sudo apt-get install openvpn

Сервер

Создаём конфигурационный файл для сервера /etc/openvpn/server.conf:

port 1194
proto udp
dev tun
;dev-node tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.10.10.0 255.255.255.0 # vpn subnet
ifconfig-pool-persist ipp.txt
push "route 192.168.7.0 255.255.255.0" # home subnet
;duplicate-cn
keepalive 10 120
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
;status openvpn-status.log
;log-append openvpn.log
verb 4
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd
route 192.168.1.0 255.255.255.0

Полный разбор файла конфигурации

Примечание: при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf.

Теперь необходимо создать ключи и сертификаты для шифрования и авторизации (http://openvpn.net/index.php/documentation/howto.html#pki). Соответствующие скрипты для этого находятся в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0

Создаём CA (авторитетный сертификат):

cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
sudo bash
. ./vars
./clean-all
./build-ca

Теперь создадим сертификат и приватный ключ для сервера:

./build-key-server server

Создаём ключ для клиента (если клиентов несколько, процедуру придётся повторить):

./build-key client1

Примечание: для каждого клиента должно быть указано своё уникальное имя (в данном случае client1).

Примечание: если новый клиент создаётся спустя некоторое время, процедура будет выглядеть следующим образом:

cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
source ./vars
./build-key client2

Генерируем параметры Диффи-Хеллмана:

./build-dh

Помещаем следующие файлы в директорию /etc/openvpn/

  • ca.crt
  • server.crt
  • dh1024.pem
  • server.key

Создаём файл /etc/openvpn/ipp.txt в который программа будет помещать IP адреса выданные клиентам клиентов.

Клиент

Конфигурационный файл клиентской машины /etc/openvpn/client.conf будет выглядеть следующим образом:

remote XX.XX.XX.XX 1194
client
dev tun
proto udp
resolv-retry infinite # this is necessary for DynDNS
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
comp-lzo
verb 4
mute 20

Теперь необходимо скопировать с сервера в папку /etc/openvpn/ сгенерированные клиентские ключи и авторитарный сертификат сервера:

  • ca.crt
  • client1.crt
  • client1.key

Автоматическая настройка маршрута на сервере до удалённой сети

Важное замечание: Все клиенты идентифицируются на сервере по имени выданного им сертификата (в нашем примере client1).

Если за клиентом находится подсеть 192.168.1.0/24, то для того чтобы при подключении этого клиента, на нашем сервере автоматически прописывался маршрут до него, мы должны сделать следующее:

  • добавить в файл server.conf строки:
client-config-dir ccd
route 192.168.1.0 255.255.255.0
  • создать файл /etc/openvpn/ccd/client1 такого содержания:
iroute 192.168.1.0 255.255.255.0

воскресенье, 6 апреля 2008 г.

Запираем Skype в клетку AppArmor

Заметка написана по мотивам вот этой статьи и вот этого руководства.
Как мне стало известно, скайп проявляет любопытство (не по чину) к личным данным пользователя, который имел неосторожность запустить его на своём компьютере. Причем собирает любую мало-мальски ценную информацию: технические характеристики системы, историю посещения страниц и сохранённые пароли в Firefox и Opera, пользователей системы, установленные программы и много всего прочего...
Информация о таком непотребном поведении программы появилась в сети достаточно давно.
Естественным шагом был бы полный отказ от использования Skype. Но как бы-то не было, всё равно, время от времени приходится прибегать к услугам зловредной софтины. Естественно, хочется как то оградить себя от посягательств владельцев скайпа на пароли и прочую мою информацию. И выход конечно же есть. Как раз для таких случаев, умельцами из Novell написана хитрая программа под названием AppArmor. Суть её в том, чтобы ограничить список устройств и файлов к которым имеет доступ тот же Skype, будучи запущенным под ней.
Теперь подробнее.
Устанавливаем skype (с сайта или из репозитория).
AppArmor уже установлен в Ubuntu начиная с верси 7.10.
Открываем терминал и создаём новый профиль для skype:
sudo aa-genprof /usr/bin/skype
Теперь запускаем skype, делаем звонок, закрываем, выходим.
Переходим в терминал и нажимаем S. AppArmor собирает информацию об активности подопытной софтины (в данном случае скайпа), а затем по шагам показывает, где именно данная программа была, что читала, с каким железом взаимодействовала. Нажимаем 123, G, A или D, в зависимости от того, хотим ли мы видеть её там в дальнейшем.
В конце S чтобы сохранить и F чтобы закончить.
В итоге, мы получаем новый профиль для скайпа. Теперь его нужно немного подредактировать.
sudo nano /etc/apparmor.d/usr.bin.skype
Заменяем всё содержимое на следующий текст:
# Last Modified: Wed Nov 28 19:26:07 2007
#include
/usr/bin/skype {
#include
#include
#include
#include
#include
/dev/video0 mrw,
/etc/gai.conf r,
/home/*/.ICEauthority r,
/home/*/.Skype/** krw,
/home/*/.Xauthority r,
/home/*/.config/* kr,
/home/*/.kde/share/config/kioslaverc r,
/proc/*/cmdline r,
/tmp/.ICE-unix/* w,
/tmp/.X11-unix/* w,
/usr/bin/skype mr,
/usr/share/X11/* r,
/usr/share/icons/** r,
/usr/share/skype/** kr,
}

Сохраняем. Закрываем.
Перезагружаем AppArmor:

sudo /etc/init.d/apparmor restart

Активируем профиль для скайпа:

sudo aa-enforce skype

Готово!
Проверить можно так:

sudo apparmor_status

Теперь, каждый раз, когда вы запустите skype, вам в dmesg будут сыпаться сообщения где и за что скайпу надавали по сусалам.