Ana Sayfa > Kompütür > Ubuntu’da Openvpn Sunucusu

Ubuntu’da 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 yerine net: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.log dosyası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.

Categories: Kompütür
  1. Henüz yorum yapılmamış.
  1. Henüz geridönüş yok.

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Takip Et

Get every new post delivered to your Inbox.