Aptronim Sahibinin Sayfası

2009/11/2 - 4 dakikada okunur - Yorumlar - Kompütür

ubuntuda openvpn sunucusu

Openvpn kurmaya her niyet edişimde kurulum belgelerinin gevezeliğinden dolayı canım sıkılırdı. Kolay kurulum anlatan yazılan yazılarınsa işi kolaylaştırmak yerine zorlaştırdığını acı tecrübelerle farkettim. Kendi ağlarına özel ayarları “kolay kurulum” diye anlatıp, ağ ayarlarını çorbaya çeviren ya da bilmemne dağıtımının yüzbeş sürüm öncesi için geçerli olan komutları her sistemde geçerliymiş gibi anlatan bir sürü yazı, google’da aramanızla birlikte arz-ı endam eylemekteler. Bir de sunucuyla istemci yapılandırmasını karıştırmıyorlar mı, tam ayar oluyorum. Ben diğer açıklamalardan daha iyisini yazdığımı sanmıyorum, ama benim için bir güzel çalışan yolu burada anlatacağım. Yazının bu kısmı sadece sunucu kurulumu kısmına ait. Linux, windows ve os x için de istemci kurulumlarını anlatırım sonra. Aşağıdaki açıklamaların hepsi Ubuntu 8.04 hardy heron için geçerli. Sonraki ve önceki sürümlerde geçerli olmama ihtimali var. Buyrun:

Paketlerin kurulumu

En kolay ve ilk adım: sudo aptitude update sudo aptitude safe-upgrade sudo aptitude install openvpn Soru falan sorunca “yes yes olrayt” demeyi ihmal etmiyoruz tabi.

Sertifikaların üretilmesi

Burada sunucunun çalışması için gerekli sertifikaları oluturuyoruz. Bu sertifika üretim işi her zaman karman çorman bir iş olduğu için, eğer önceden yapmadıysanız, robot gibi komutları girmenizi öneririm. Öbür türlü hangi dosyanın ne işe yaradığını anlamaya çalışmak, logaritma cetvelini ezberlemek kadar yararlı bir etkinlik. cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 . vars ./clean-all ./build-ca ./build-key-server server ./build-dh Bu komutları çalıştırdığınızda, emin misiniz değil misiniz babında bir takım sorular gelecek ve tahmin ettiğiniz gibi yes yes (windows terminolojisindeki next next gibi) diyeceğiz. Ayrıca yeni anahtar üretirken adresinizi, isminizi falan soracak. Akılda kalacak bilgiler girerseniz (mesela common name sorunca sunucunun ismi, Ülke sorunca Türkiye ya da Patagonya vb.) daha rahat edersiniz. Lazım falan olur. Bu arada, clean-all komutu bir sürü şeyi sileceğini belirtecek. İlk kurulum olduğu için sorun yok.

Yapılandırma dosyaları

İlk önce /etc/default/openvpn dosyasının içeriğini değiştiriyoruz. Şöyle olacak: AUTOSTART="all" STATUSREFRESH=10 Sonra da /etc/openvpn/server.conf diye bir dosya oluşturuyoruz. Onun da içeriği, başlangıç için şöyle olabilir: port 1194 proto tcp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem server 10.10.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt push route 10.10.20.0 255.255.255.0 push route 10.10.30.0 255.255.255.0 push "redirect-gateway" push "dhcp-option DOMAIN sunucualani.lokal" push "dhcp-option DNS 10.0.0.1 " keepalive 10 120 comp-lzo max-clients 100 user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 Buradaki ayarların bazılarının açıklamaya ihtiyacı var. Şöyle ki:

  1. server: Bu ayarda openvpn’in istemcilerle oluşturdunu sanal ağı tanımlıyoruz. Yerel ağınızda kullanmadığınız bir alan olmalı, yani sizin ağınızda zaten 10.10.10.0/24 diye bir alt ağ varsa, başka bir şeyler denemelisiniz. Mesela 192.168.72.0/24, ya da 172.16.16.0/24 gibi.

  2. push route: Sunucunuzun olduğu ağda başka ağlar varsa ve bunların openvpn ile bağlanan kullanıcıların erişimine açmak istiyorsanız bu komutlardan ekliyorsunuz. Benim üstte verdiklerim sadece örnek. Başta bunlardan hiçbirini dosyaya yazmayın, sonra lazım oldukça eklersiniz.

  3. push “dhcp option…”: İç ağınızın alan adını ve alan adı sunucusunun adresini buralarda veriyorsunuz, böylece iç ağdaki sistemlere IP adresi yerine isimlerini yazarak da ulaşabiliyorsunuz.

Sonra, bu dizine ihtiyacımız olan sertifika dosyalarını yazalım: cd /etc/openvpn cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/dh1024.pem . cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/server.crt . cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/server.key . cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ca.crt . Son olarak, izinleri düzenleyelim: cd /etc/openvpn chown root:root * chmod go= *

Güvenlik duvarı ayarları

Güvenlik duvarında yapılması gereken 1194’üncü kapıdan tcp erişimine izin vermek. Ben shorewall kullanıyorum, o yüzden burada onun örneğini vereceğim.

Shorewall için değiştirmemiz gereken bir kaç dosya var:

  1. /etc/shorewall/interfaces: Aşağıdaki satırı ekledim: rem tun0 detect dhcp,tcpflags,routeback

  2. /etc/shorewall/policy: Aşağıdaki satırları, tanımların en başına eklemek gerekiyor: $FW rem ACCEPT net rem DROP rem loc ACCEPT rem net ACCEPT rem $FW ACCEPT İstemcilerin sadece iç ağlara bağlanmasını istiyorsanız, rem->net politikasını da DROP olarak değiştirebilirsiniz.

  3. /etc/shorewall/zones: Sadece şu satır: rem ipv4

  4. /etc/shorewall/rules: Buraya izin verdiğiniz tüm kuralları eklemek isteyebilirsiniz. Başlangıç için aşağıdakiler yeterli olacaktır: ACCEPT rem $DNSSUNUCUSU tcp domain ACCEPT rem $DNSSUNUCUSU udp domain ACCEPT $DNSSUNUCUSU rem tcp - domain ACCEPT $DNSSUNUCUSU rem udp - domain ACCEPT rem loc tcp www ACCEPT rem loc tcp ssh Yani dns, web ve ssh’a izin veriyoruz. Ayrıca openvpn için de kurallara ihtiyacımız var: ` ACCEPT net:1.2.3.4 $FW tcp openvpn ACCEPT net:5.6.7.8 $FW tcp openvpn

Burada openvpn ile bağlanacak her IP için bir kural ekliyoruz, fazladan güvenlik için. Eğer güvenliği iplemem diyorsanız sadece şu da yeterli: ACCEPT net $FW tcp openvpn Burada başka bir varsayımımız da, openvpn sunucusunun güvenlik duvarında olduğu. Eğer güvenlik duvarından başka bir yerde kuruluysa $FW yerinenet:9.1.2.3` yazmak gerekli. Tabii eğer bunun adresi de sanalsa başka kurallara da ihtiyaç var ama ben için o ayrıntısına girmeyeceğim.

Bunlar da tamamlandıktan sonra kuralları yeniden yüklemek, shorewall ile olan işinizi bitirecektir: shorewall check && shorewall restart

Sunucu bakımı

Tüm bu ayarlar bittikten sonra sunucuyu aşağıdaki komutlar etkin hale getirebiliriz: sudo invoke-rc.d openvpn start Aynı şekilde, durdurmak için de: sudo invoke-rc.d openvpn stop Openvpn kayıtları /var/log/daemon.logdosyasında tutuluyor. Neler olup bittiğini görmek için: fgrep ' ovpn-server\[' /var/log/daemon.log | less Ya da bağlantı sırasında dosyayı izlemek için: fgrep ' ovpn-server\[' /var/log/daemon.log | tail -f

Sonuç

Sunucu kurulumu bu kadar.