10 min read

OpenVPN Kurulum Rehberi

Bu rehber, OpenVPN’in hem Ubuntu 22.04 hem de Rocky Linux işletim sistemlerinde hızlı ve sorunsuz bir şekilde kurulmasını sağlayacak adımları ve otomasyon scriptini içermektedir. Ayrıca, kurulum sonrası yapılandırmalar ve gereksinimler hakkında detaylı bilgiler sunulmaktadır.


İçindekiler

  1. [Gereksinimler]
  2. [Kurulum Scripti]
  3. [Ubuntu 22.04 Üzerinde OpenVPN Kurulumu]
  4. [Rocky Linux Üzerinde OpenVPN Kurulumu]
  5. [Kurulum Sonrası Adımlar]
  6. [OpenVPN'e Erişim ve İlk Ayarlar]
  7. [Güvenlik ve Bakım İpuçları]

1. Gereksinimler

  • İşletim Sistemi:
    • Ubuntu 22.04 LTS
    • Rocky Linux 8 veya 9
  • Donanım:
    • Minimum 1 GB RAM (2 GB önerilir)
    • 10 GB disk alanı
  • Yazılım:
    • Root erişimi veya sudo yetkisi
    • Internet bağlantısı

2. Kurulum Scripti

Aşağıdaki bash scripti, OpenVPN'in hem Ubuntu 22.04 hem de Rocky Linux üzerinde otomatik olarak kurulmasını sağlar. Script, işletim sistemini algılar ve gerekli adımları uygular.

#!/bin/bash

# OpenVPN Kurulum Scripti
# Desteklenen Sistemler: Ubuntu 22.04, Rocky Linux 8/9

# Renkli Çıktılar için Değişkenler
GREEN='\033[0;32m'
NC='\033[0m' # No Color

# İşletim Sistemi Tespiti
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
    VER=$VERSION_ID
else
    echo "İşletim sistemi tespit edilemedi."
    exit 1
fi

# Güncellemeleri Yap
update_system() {
    echo -e "${GREEN}Sistem güncelleniyor...${NC}"
    if [[ "$OS" == "ubuntu" ]]; then
        sudo apt update && sudo apt upgrade -y
    elif [[ "$OS" == "rocky" ]]; then
        sudo dnf update -y
    else
        echo "Desteklenmeyen işletim sistemi."
        exit 1
    fi
    echo -e "${GREEN}Sistem güncellemeleri tamamlandı.${NC}"
}

# OpenVPN ve Gereksinimlerin Kurulumu
install_dependencies() {
    echo -e "${GREEN}Gerekli paketler kuruluyor...${NC}"
    if [[ "$OS" == "ubuntu" ]]; then
        sudo apt install -y openvpn easy-rsa ufw
    elif [[ "$OS" == "rocky" ]]; then
        sudo dnf install -y epel-release
        sudo dnf install -y openvpn easy-rsa firewalld
    fi
    echo -e "${GREEN}Gerekli paketler kuruldu.${NC}"
}

# Sertifika Otoritesi (CA) Oluşturma
setup_ca() {
    echo -e "${GREEN}Sertifika Otoritesi (CA) kuruluyor...${NC}"
    make-cadir ~/openvpn-ca
    cd ~/openvpn-ca || exit
    # Varsayılan varsayılanları kullanabilirsiniz veya ihtiyaçlarınıza göre düzenleyin
    ./easyrsa init-pki
    ./easyrsa build-ca nopass
    echo -e "${GREEN}CA kurulumu tamamlandı.${NC}"
}

# Sunucu Sertifikası ve Anahtarının Oluşturulması
setup_server_cert() {
    echo -e "${GREEN}Sunucu sertifikası ve anahtarı oluşturuluyor...${NC}"
    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server
    echo -e "${GREEN}Sunucu sertifikası ve anahtarı oluşturuldu.${NC}"
}

# Diffie-Hellman Parametrelerinin Oluşturulması
setup_dh() {
    echo -e "${GREEN}Diffie-Hellman parametreleri oluşturuluyor...${NC}"
    ./easyrsa gen-dh
    echo -e "${GREEN}Diffie-Hellman parametreleri oluşturuldu.${NC}"
}

# Müşteri Sertifikası ve Anahtarının Oluşturulması
setup_client_cert() {
    echo -e "${GREEN}Müşteri sertifikası ve anahtarı oluşturuluyor...${NC}"
    ./easyrsa gen-req client1 nopass
    ./easyrsa sign-req client client1
    echo -e "${GREEN}Müşteri sertifikası ve anahtarı oluşturuldu.${NC}"
}

# OpenVPN Sunucu Yapılandırması
configure_openvpn() {
    echo -e "${GREEN}OpenVPN yapılandırması yapılıyor...${NC}"
    sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
    sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
    sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
    sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
    
    # OpenVPN Sunucu Konfigürasyon Dosyasını Oluşturma
    sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'
    echo -e "${GREEN}OpenVPN yapılandırması tamamlandı.${NC}"
}

# Firewall Ayarları
configure_firewall() {
    echo -e "${GREEN}Firewall ayarları yapılıyor...${NC}"
    if [[ "$OS" == "ubuntu" ]]; then
        sudo ufw allow 1194/udp
        sudo ufw allow OpenSSH
        sudo ufw enable
        sudo ufw status
    elif [[ "$OS" == "rocky" ]]; then
        sudo systemctl start firewalld
        sudo systemctl enable firewalld
        sudo firewall-cmd --add-service=openvpn --permanent
        sudo firewall-cmd --add-service=ssh --permanent
        sudo firewall-cmd --reload
        sudo firewall-cmd --list-all
    fi
    echo -e "${GREEN}Firewall ayarları tamamlandı.${NC}"
}

# IP Yönlendirme ve NAT Ayarları
configure_ip_forwarding() {
    echo -e "${GREEN}IP yönlendirme ve NAT ayarları yapılıyor...${NC}"
    sudo bash -c 'echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf'
    sudo sysctl -p
    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    sudo iptables-save | sudo tee /etc/iptables.rules
    sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOL'
    sudo systemctl enable iptables
    sudo systemctl start iptables
    echo -e "${GREEN}IP yönlendirme ve NAT ayarları tamamlandı.${NC}"
}

# OpenVPN Servisini Başlatma ve Etkinleştirme
start_enable_openvpn() {
    echo -e "${GREEN}OpenVPN servisi başlatılıyor ve etkinleştiriliyor...${NC}"
    sudo systemctl start openvpn@server
    sudo systemctl enable openvpn@server
    echo -e "${GREEN}OpenVPN servisi çalışıyor ve sistem açılışında otomatik olarak başlayacak.${NC}"
}

# Müşteri Yapılandırma Dosyasını Oluşturma
create_client_config() {
    echo -e "${GREEN}Müşteri yapılandırma dosyası oluşturuluyor...${NC}"
    mkdir -p ~/client-configs/keys
    cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
    cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
    cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/
    
    # OpenVPN Client Konfigürasyon Dosyası
    cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL
    echo -e "${GREEN}Müşteri yapılandırma dosyası oluşturuldu.${NC}"
    echo -e "${GREEN}client1.ovpn dosyasını oluşturmak için aşağıdaki komutları çalıştırın:${NC}"
    echo "cd ~/client-configs && bash make_config.sh client1"
}

# Ana Kurulum Fonksiyonu
main() {
    update_system
    install_dependencies
    setup_ca
    setup_server_cert
    setup_dh
    setup_client_cert
    configure_openvpn
    configure_firewall
    configure_ip_forwarding
    start_enable_openvpn
    create_client_config
    echo -e "${GREEN}OpenVPN kurulumu başarıyla tamamlandı!${NC}"
    echo -e "${GREEN}client1.ovpn dosyasını almak için lütfen ilgili adımları takip edin.${NC}"
}

# Scripti Başlat
main

Script Kullanımı:

  1. Scripti İndirme ve Çalıştırma:
  • Yukarıdaki scripti bir dosyaya kaydedin, örneğin install_openvpn.sh.
  • Dosyaya çalıştırma izinleri verin:
chmod +x install_openvpn.sh
  • Scripti çalıştırın:
sudo ./install_openvpn.sh
  1. **Müşteri Yapılandırma Dosyasını Oluşturma:**Scriptin son adımında, müşteri konfigürasyon dosyasını oluşturmanız için gerekli komutlar verilecektir. Aşağıdaki adımları takip edin:
  • make_config.sh scriptini oluşturun:
mkdir -p ~/client-configs/files
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash

# Müşteri Konfigürasyon Dosyası Oluşturma Scripti

KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/client1.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/client1.key \
    <(echo -e '</key>') \
    > ${OUTPUT_DIR}/client1.ovpn
EOF
  • Scripti çalıştırma:
chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh
  • client1.ovpn dosyasını ~/client-configs/files/ dizininde bulabilirsiniz. Bu dosyayı OpenVPN istemcisine yükleyerek bağlantıyı gerçekleştirebilirsiniz.

3. Ubuntu 22.04 Üzerinde OpenVPN Kurulumu

Adım 1: Sistem Güncellemeleri

sudo apt update
sudo apt upgrade -y

Adım 2: OpenVPN ve Easy-RSA Kurulumu

sudo apt install -y openvpn easy-rsa ufw

Adım 3: Sertifika Otoritesi (CA) Oluşturma

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca nopass

Adım 4: Sunucu Sertifikası ve Anahtarının Oluşturulması

./easyrsa gen-req server nopass
./easyrsa sign-req server server

Adım 5: Diffie-Hellman Parametrelerinin Oluşturulması

./easyrsa gen-dh

Adım 6: Müşteri Sertifikası ve Anahtarının Oluşturulması

./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

Adım 7: OpenVPN Sunucu Yapılandırması

sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/

sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'

Adım 8: Firewall Ayarları

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

Adım 9: IP Yönlendirme ve NAT Ayarları

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.rules
sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOL'
sudo systemctl enable iptables
sudo systemctl start iptables

Adım 10: OpenVPN Servisinin Başlatılması ve Etkinleştirilmesi

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

Adım 11: Müşteri Yapılandırma Dosyasını Oluşturma

mkdir -p ~/client-configs/keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/

cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL

# make_config.sh scriptini oluşturun
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash

# Müşteri Konfigürasyon Dosyası Oluşturma Scripti

KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/client1.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/client1.key \
    <(echo -e '</key>') \
    > ${OUTPUT_DIR}/client1.ovpn
EOF

chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh

4. Rocky Linux Üzerinde OpenVPN Kurulumu

Adım 1: Sistem Güncellemeleri

sudo dnf update -y

Adım 2: OpenVPN ve Easy-RSA Kurulumu

sudo dnf install -y epel-release
sudo dnf install -y openvpn easy-rsa firewalld

Adım 3: Sertifika Otoritesi (CA) Oluşturma

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca nopass

Adım 4: Sunucu Sertifikası ve Anahtarının Oluşturulması

./easyrsa gen-req server nopass
./easyrsa sign-req server server

Adım 5: Diffie-Hellman Parametrelerinin Oluşturulması

./easyrsa gen-dh

Adım 6: Müşteri Sertifikası ve Anahtarının Oluşturulması

./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

Adım 7: OpenVPN Sunucu Yapılandırması

sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/

sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'

Adım 8: Firewall Ayarları

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-service=openvpn --permanent
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Adım 9: IP Yönlendirme ve NAT Ayarları

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.rules
sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOL'
sudo systemctl enable iptables
sudo systemctl start iptables

Adım 10: OpenVPN Servisinin Başlatılması ve Etkinleştirilmesi

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

Adım 11: Müşteri Yapılandırma Dosyasını Oluşturma

mkdir -p ~/client-configs/keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/

cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL

# make_config.sh scriptini oluşturun
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash

# Müşteri Konfigürasyon Dosyası Oluşturma Scripti

KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/client1.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/client1.key \
    <(echo -e '</key>') \
    > ${OUTPUT_DIR}/client1.ovpn
EOF

chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh

5. Kurulum Sonrası Adımlar

  1. OpenVPN'e Erişim:
  • client1.ovpn dosyasını OpenVPN istemcisine yükleyin (Windows, macOS, Linux, Android, iOS vb.).
  • OpenVPN istemcisini açın ve client1.ovpn dosyasını içe aktarın.
  • Bağlantıyı başlatın.
  1. Sunucu Durumunu Kontrol Etme:
sudo systemctl status openvpn@server
  • Servisin aktif ve çalışır durumda olduğundan emin olun.
  1. Log Dosyalarını İnceleme:
sudo tail -f /var/log/openvpn-status.log
  • Bağlantı durumlarını ve olası hataları kontrol edebilirsiniz.

6. OpenVPN'e Erişim ve İlk Ayarlar

  • Müşteri Yapılandırma Dosyası (client1.ovpn):
    • Bu dosya, OpenVPN istemcisine yüklenerek VPN bağlantısını gerçekleştirmek için kullanılır.
    • Güvenli bir şekilde istemci cihazınıza aktarın.
  • Güvenlik Duvarı ve NAT Ayarları:
    • Sunucuya gelen OpenVPN trafiğinin izinlendiğinden ve NAT işlemlerinin doğru yapılandırıldığından emin olun.
  • DNS Ayarları:
    • OpenVPN yapılandırmasında belirtilen DNS sunucuları (8.8.8.8 ve 8.8.4.4) istemcilerin DNS sorgularını güvenli bir şekilde çözmesini sağlar.

7. Güvenlik ve Bakım İpuçları

  • Sertifikaların Güvenliği:
    • CA, sunucu ve müşteri sertifikalarını güvenli bir yerde saklayın.
    • Özel anahtarları (server.key, client1.key) kesinlikle paylaşmayın.
  • Düzenli Güncellemeler:
    • OpenVPN ve işletim sistemi paketlerini düzenli olarak güncelleyin.
    • Güvenlik yamalarını takip edin.
  • Firewall ve Güvenlik Duvarı Ayarları:
    • Gereksiz portları kapalı tutun.
    • Yalnızca gerekli servislerin erişimine izin verin.
  • Log Yönetimi:
    • Log dosyalarını düzenli olarak kontrol edin.
    • Şüpheli aktiviteleri tespit etmek için logları izleyin.
  • Kullanıcı Yönetimi:
    • Müşteri sertifikalarını gerektiğinde iptal edin.
    • Yeni kullanıcılar eklerken ve mevcut kullanıcıları kaldırırken dikkatli olun.

Cpynet üyeleri için faydalı olması dileğiyle!


Not: YOUR_SERVER_IP ifadesini, OpenVPN sunucunuzun gerçek IP adresiyle değiştirmeyi unutmayın. Ayrıca, müşteri sertifikalarını oluştururken güvenlik önlemlerine dikkat edin ve sertifikaları güvenli bir şekilde dağıtın.

Herhangi bir sorunla karşılaşırsanız, OpenVPN Resmi Dokümantasyonu üzerinden detaylı bilgi alabilirsiniz.