Wstęp Instalacja i konfiguracja - PLD

Transkrypt

Wstęp Instalacja i konfiguracja - PLD
2016/01/16 19:23
1/6
Wstęp
Wstęp
W niniejszym opracowaniu krok po kroku pokażę jak stworzyć sieć VPN używając OpenVPN.
Instalacja i konfiguracja
Instalacja potrzebnych pakietów
najpierw instalujemy potrzebne rzeczy:
poldek -i openvpn easy-rsa pam
(pam instalujemy jeżeli chcemy robić autoryzację użytkowników za pomocą loginu/hasła. Jeśli
wystarczą Nam certyfikaty to nie musimy)
Generowanie certyfikatów
Pierwsze co robimy tgo generowanie certyfikatów dla serwera i opcjonalnie dla klientów (jeżeli
chcemy autoryzację certyfikatami). przechodzimy do katalogu /etc/easy-rsa i wydajemy polecenia:
/usr/share/easy-rsa/clean-all
./vars
/usr/share/easy-rsa/build-ca
Jeżeli dostajemy komunikat:
bash: ./vars: Permission denied
musimy wykonać:
chmod +x /etc/easy-rsa/vars
generujemy Diffie Hellman (dla zainteresowanych:
http://www.rsasecurity.com/rsalabs/node.asp?id=2248)
/usr/share/easy-rsa/build-dh
a następnie odpowiadamy na kilka pytań. Aby skrócić czas możemy najpierw wyedytować plik
/etc/easy-rsa/vars tak aby domyślne podpowiedzi przy generowaniu certyfikatu były tymi które nam
będą odpowiadały. Ważne jest aby podać Common Name.
Mamy już certfyikat centrum autoryzacyjnego którym będziemy podpisywać inne certyfikaty. teraz
generujemy certyfikat i klucz serwera:
PLD-users.org - http://pld-users.org/
Last
update:
pl:przewodniki:openvpn-tworzenie-szyfrowanych-tuneli http://pld-users.org/pl/przewodniki/openvpn-tworzenie-szyfrowanych-tuneli
2008/11/10
16:09
/usr/share/easy-rsa/build-key-server serwer
(zamiast serwer możemy podać dowolną nazwę) [ odpowiadamy dwa razy twierdząco (y) ] oraz
certyfikaty dla klientów (tylko jeśli chcemy autoryzować certyfikatami):
/usr/share/easy-rsa/build-key klient1
/usr/share/easy-rsa/build-key klient2
/usr/share/easy-rsa/build-key klient3
jeśli zależy nam aby każdy miał swoje hasło do klucza to zamiast powyższego wydajemy polecenie:
/usr/share/easy-rsa/build-key-pass
Po pomyślnym wygenerowaniu certyfikatów przystępujemy do konfigurowania OpenVPN.
Konfigurowanie serwera OpenVPN
W tym celu tworzymy plik /etc/openvpn/tunel.conf i wpisujemy tam:
# numer IP na którym ma nasłuchiwać OpenVPN (nieobowiązkowy)
local 123.123.123.123
port 1194
proto udp
dev tun
ca /etc/easy-rsa/keys/ca.crt
cert /etc/easy-rsa/serwer.crt
key /etc/easy-rsa/serwer.key # This file should be kept secret
# cztery linijki poniżej są tylko dla tych
# co chcą autoryzować za pomocą pam
plugin /usr/lib/openvpn/plugins/openvpn-auth-pam.so ovpn
client-cert-not-required
username-as-common-name
dh certs/dh1024.pem
# pula adresów używana przez vpn. można dobrać dowolne nieroutowalne
# 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
# należy przy tym pamiętać żeby dobrać maksymalnie niestandardowe
# (po to aby były różne od nieroutowalnego IP
# które dostanie klient np z publicznego AP
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway"
# poniżej możemy wstawić dowolne opcje które będą
# ustawione u klienta za pomocą DHCP
push "dhcp-option DNS 10.8.0.1"
http://pld-users.org/
Printed on 2016/01/16 19:23
2016/01/16 19:23
3/6
Wstęp
;push "dhcp-option WINS 10.8.0.1"
# jeżeli autoryzujemy certyfikatami i nie chce Nam się generować
# dla każdego klienta osobno można odśrednikować poniższą opcję
# (generalnie niezalecane jeśli nie masz 100% zaufania do klientów)
;duplicate-cn
keepalive 10 120
# włączamy kompresję danych
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log
openvpn.log
log-append openvpn.log
verb 3
#eof
po zapisaniu tego pliku, tworzymy kolejny /etc/pam.d/ovpn i wpisujemy tam:
#%PAM-1.0
auth
auth
account
password
password
required
required
required
required
required
pam_unix.so
pam_shells.so
pam_unix.so
pam_unix.so md5 shadow use_authtok
pam_make.so /var/db
teraz w pliku /etc/sysconfig/openvpn zmieniamy TUNNELS=„tunel” (tunel to nazwa pliku z
konfiguracją bez .conf)
Serwer mamy gotowy.
Konfiguracja klienta
plik konfiguracyjny klienta:
client
proto udp
#adres i port naszego serwera
remote 123.123.123.123 1194
dev tun
resolv-retry
infinite
nobind
tun-mtu 1500
tls-client
#jeśli autoryzujemy przez pam to poniższa linijka jest potrzebna.jeśli nie
to nie
auth-user-pass
# ścieżka do plik ca.crt (który klientowi przekazujemy). jeżeli klient jest
PLD-users.org - http://pld-users.org/
Last
update:
pl:przewodniki:openvpn-tworzenie-szyfrowanych-tuneli http://pld-users.org/pl/przewodniki/openvpn-tworzenie-szyfrowanych-tuneli
2008/11/10
16:09
# windowsowy to ścieżka może wyglądać jak poniżej
ca "c:\\Program Files\\OpenVPN\\config\\ca.crt"
# poniżej dwie linijki tylko dla tych co autoryzują certyfikatami
# oczywiście wygenerowane pliki klient1.crt i klient1.key przekazujemy
# bezpiecznym kanałem klientowi
cert "c:\\Program Files\\OpenVPN\\config\\klient1.crt"
key "c:\\Program Files\\OpenVPN\\config\\klient1.key"
ping-restart 60
ping-timer-rem
persist-tun
persist-key
resolv-retry 86400
ping 10
comp-lzo
verb 4
; eof
Uruchomienie
teraz możemy przetestować naszą konfigurację.
odpalamy serwer:
service openvpn start
obdlokowujemy na firewallu port 1194 (jeśli potrzeba) i próbujemy się połączyć klientem
(uwaga: przestanie działać internet na maszynie klienckiej - tylko połączenie z serwerem będzie
możliwe. po rozłączeniu prawidłowym wszystko powinno wrócić do normy)
po kilku chwilach (śledzimy logi na kliencie i serwerze) z klienta wpisujemy
ping 10.8.0.1
- powinno działać.
jeśli nie działa mamy noc z głowy i przystępujemy do szukania odpowiedzi na pytanie
„dlaczego?”
zakładamy jednak że działa i chcemy teraz aby korzystać z zasobów internetu jako 123.123.123.123
(czyli przez IP serwera OpenVPN)
to tylko dwie krótkie zmiany na serwerze:
echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
http://pld-users.org/
Printed on 2016/01/16 19:23
2016/01/16 19:23
5/6
Wstęp
warto sobie ustawić to na stałe: w pliku /etc/sysctl.conf ustawiamy net.ipv4.ip_forward = 0
nie zapominamy o iptables :)
zakładamy że eth0 jest interfejsem przez który serwer łączy się ze światem. wszystko fajnie działa i
możemy iść spać
Drobne podniesienie bezpieczeństwa
Jedną z opcji podniesienia bezpieczeństwa naszego servera OpenVPN'a jest dodanie parametru: tlsauth, przed czym to chroni?:
Ataki typu DoS na port OpenVPN-owy
Skanowanie portow w celu sprawdzenia, na ktorym nasłuchuje OpenVPN
Wszelkiego ataki rodzaju buffer-overflow spowodowane przez błędy w implementacji SSLa/TLSa
Odrzucenie błędnych połączeń SSL/TLS zaraz na samym początku
Najpierw więc musimy wygenerować klucz współdzielony (który kopiujemy później na wszystkich
klientów), możemy go umieścić tam, gdzie poprzednie certyfikaty.
openvpn --genkey --secret ta.key
Do konfiguracji serwera musimy dodać:
tls-auth /etc/easy-rsa/ta.key 0
Natomiast do konfiguracji klienta:
tls-auth "c:\\Program Files\\OpenVPN\\config\\ta.key" 1
Kolejną możliwością podniesienia bezpieczeństwa jest zmiana sposobu szyfrowania. Ponieważ
standardowo openvpn używa Blowfisha (128 bitów), tak by nie przesadzić możemy śmiało zmienić go
np. na AES-256-CBC (OpenVPN wspiera wszystkie metody szyfrowania które udostępnia biblioteka
OpenSSL).
Pamiętajmy, że musimy dodać to do plików konfiguracyjnych zarówno po stronie serwera jak i
klientów:
cipher AES-256-CBC
do wyboru mamy jeszcze np:
Triple-DES: DES-EDE3-CBC
pozostałe możemy sobie ładnie wylistować wpisując komendę:
openvpn --show-ciphers
PLD-users.org - http://pld-users.org/
Last
update:
pl:przewodniki:openvpn-tworzenie-szyfrowanych-tuneli http://pld-users.org/pl/przewodniki/openvpn-tworzenie-szyfrowanych-tuneli
2008/11/10
16:09
Na zakończenie
bardzo miły w użytkowaniu klient pod windows: http://openvpn.se/
i dla mac os http://code.google.com/p/tunnelblick/
powodzenia
From:
http://pld-users.org/ - PLD-users.org
Permanent link:
http://pld-users.org/pl/przewodniki/openvpn-tworzenie-szyfrowanych-tuneli
Last update: 2008/11/10 16:09
http://pld-users.org/
Printed on 2016/01/16 19:23

Podobne dokumenty