В головном офисе работают женщины обладающие определенными ресурсами, желающие поделиться ими с мужчинами одного из подразделений. Для того чтобы это было надежно и безопасно нужно реализовать такую схему.
0. Что имеем:
a. Interfaces на сервере
auto lo
iface lo inet loopback
# The primary network interface
auto eth1
iface eth1 inet static
address 1.2.3.174
netmask 255.255.255.0
network 1.2.3.0
broadcast 1.2.3.255
gateway 1.2.3.1
dns-nameservers 8.8.8.8
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
bridge_ports eth0
bridge_fd 0
b. Interfaces на клиенте
# The loopback network interface
auto lo
iface lo inet loopback
auto em0
iface em0 inet static
address 1.2.33.123
network 1.2.33.0
gateway 1.2.33.1
netmask 255.255.255.0
broadcast 1.2.33.255
dns-nameservers 8.8.8.8
auto eth0
iface eth0 inet manual
auto wlan0
iface wlan0 inet manual
auto br0
iface br0 inet static
address 192.168.11.1
network 192.168.11.0
netmask 255.255.255.192
broadcast 192.168.11.63
bridge-ports eth0 wlan0
bridge_fd 0
1. На сервере ставим:
apt-get install openvpn easy-rsa libssl-dev openssl
и на клиенте:
apt-get install openvpn
2. Переходим на сервер, и копируем:
cp -Rp /usr/share/easy-rsa/ /etc/openvpn/vpn-tun/
3. Подправим основные параметры в файле vars, чтобы значения в дальнейшем подставлялись сами:
nano /etc/openvpn/vpn-tun/vars
export KEY_COUNTRY="RU"
export KEY_PROVINCE="SZFO"
export KEY_CITY="SPb"
export KEY_ORG="Firma"
export KEY_EMAIL="it@firma.com"
export KEY_OU="FirmaHead"
4. Перейдем в папку:
cd /etc/openvpn/vpn-tun/
Инициализируем PKI:
. ./vars
и
./clean-all
5. Генерируем сертификат авторизации (СА) и ключ, для этого выполняем команду:
./build-ca
Большинство параметров должно подхватиться из файла vars, если что-то не так - указываем явно.
6. Генерируем секретный ключ Диффи-Хелмана (займет продолжительное время):
./build-dh
7. Генерируем сертификат, и секретный ключ сервера:
./build-key-server servername
Вместо servername укажите например hostname сервера, это избавит от возможной путаницы в дальнейшем. Параметры подхватятся из vars, однако параметр Name укажите явно - ваш servername. Какой указали при запуске этого скрипта.
8.Также сгенерим ключ для TLS шифрования:
openvpn --genkey --secret keys/ta.key
9. Сгенерируем ключи для клиента:
./build-key clientname
Вместо "clientname" придумайте свое имя, и укажите его в параметре Name при генерации ключа.
Если через некоторое время Вам понадобится включить еще один офис в Вашу сеть надо будет запустить команду:
. ./vars
После чего сгенерируйте ключи для клиента:
./build-key clientname
Не забудьте только создать ccd файл для нового клиента. Об ccd ниже.
10. Создаем папку для ccd файлов:
mkdir /etc/openvpn/vpn-tun/ccd/
затем:
nano /etc/openvpn/vpn-tun/ccd/clientname
(имя файла должно совпадать с названием ключа для клиента см. п.8)
внесем след. параметры:
#disable
ifconfig-push 192.168.255.5 192.168.255.6
iroute 192.168.11.0 255.255.255.192
push "route 192.168.1.0 255.255.255.0"
Если в дальнейшем какой-либо клиент придется отключить, просто раскомментируйте #disable.
11. Теперь создадим conf-файл OpenVpn-сервера:
nano /etc/openvpn/server-tun.conf
dev tun
port 1194
proto udp
tls-server
tls-server
tls-auth /etc/openvpn/vpn-tun/keys/ta.key 0
tls-timeout 120
auth SHA1
cipher BF-CBC
tls-auth /etc/openvpn/vpn-tun/keys/ta.key 0
tls-timeout 120
auth SHA1
cipher BF-CBC
server 192.168.255.0 255.255.255.0
ifconfig 192.168.255.1 192.168.255.2
push "route 192.168.1.0 255.255.255.0"
route 192.168.11.0 255.255.255.192 # подсеть clientname (см. п.8)
#если будут другие клиенты пишем здесь же роуты:
#route 192.168.2.0 255.255.255.0 #например
ca /etc/openvpn/vpn-tun/keys/ca.crt
cert /etc/openvpn/vpn-tun/keys/server.crt
key /etc/openvpn/vpn-tun/keys/server.key
dh /etc/openvpn/vpn-tun/keys/dh2048.pem
client-to-client
client-config-dir /etc/openvpn/vpn-tun/ccd
comp-lzo
persist-tun
persist-key
verb 3
keepalive 10 60
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов
log-append /var/log/openvpn_tun.log
status /var/log/openvpn_status_tun.log
12. Теперь настроим iptables на сервере, добавим правила:
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -i br0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o br0 -j ACCEPT
Если на самом сервере кроме OpenVpn находятся другие сервисы, к которым необходимо дать доступ во внутренней сети добавим правило:
-A INPUT -i tun0 -j ACCEPT
Если мучает паранойя уточним условия:
-A INPUT -i tun0 -p tcp -m multiport --dports ХХ,ХХХХ -j ACCEPT
если нужен UDP:
-A INPUT -i tun0 -p udp -m multiport --dports ХХ,ХХХХ -j ACCEPT
где XXX нужные порты.
13. Переходим клиент, создадим conf файл клиента :
nano /etc/openvpn/clientname_to_server.conf
remote ip_servera 1194
client
verb 5
dev tun0
proto udp
resolv-retry infinite
nobind
tls-client
tls-auth /etc/openvpn/ta.key 1
auth SHA1
cipher BF-CBC
remote-cert-tls server
tls-client
tls-auth /etc/openvpn/ta.key 1
auth SHA1
cipher BF-CBC
remote-cert-tls server
persist-key
persist-tun
ca "/etc/openvpn/ca.crt"
cert "/etc/openvpn/clientname.crt"#см.п.8
key "/etc/openvpn/clientname.key"#см.п.8
comp-lzo
verb 4
mute 20
verb 3
#redirect-gateway
log-append /var/log/clientname_to_server.log#см.п.8
13. Любым удобным для Вас способом перемещаем сертификаты и ключ (ca.crt, clientname.crt, clientname.key, ta.key) с сервера на клиент, и помещаем их в /etc/openvpn.
14. Настроим iptables на клиенте, добавим правила:
-A FORWARD -i br0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o br0 -j ACCEPT
Если нужен доступ к локальным ресурсам, расположенным на клиенте см.п. 11.
15. Рестартуем OpenVpn:
/etc/init.d/openvpn restart
и на клиенте и на сервере, и пробуем начинать пинговать хосты в подсетях. Если что-то не так - смотрим логи. Удачи.
Комментариев нет:
Отправить комментарий