Burda anlatilan ssl tunel yonteminin calisma sekli su sekilde:
1) Client da calisan bir stunnel kuruyoruz, port 1080 da socks dinleyip server daki stunnel in 443 portuna ssl tunnelling yapacak.
2) Server a stunnel kuruyoruz, bu stunnel 443 a gelen baglantiyi server port 1080 deki socks proxy e yonlendiriyor.
3) Server a bir Socks proxy kuruyoruz, isminden anlasilacagi gibi bu baglantiyi proxy liyor.
Bu durumda client tarafinda calisan Firefox gibi socks proxy ile konusabilen uygulamalar firewall a takilmadan calisabilir.
Server tarafi Stunnel kurulumu:
aptitude install stunnel
veya
apt-get install stunnelile stunnel i kuruyoruz.
Bu asamada stunnel bulunamamasi gibi bir problem cikarsa bunun sebebi vps in ubuntu repository lerini
/etc/apt/sources.list dosyasina yazmamis olmasindan olabilir, bu durumda dosyaya alttaki iki satiri ekleyin, intrepid yazan yeri kullandiginiz ubuntu version unun ismi ile degistirmeyi unutmayin.deb http://us.archive.ubuntu.com/ubuntu/ intrepid main restricted deb-src http://us.archive.ubuntu.com/ubuntu/ intrepid main restricted
tabi bunlari yaptiktan sonra
apt-get update ile repository listelerini refresh etmeniz gerek.Stunnel i kendiniz build edecekseniz libssl-dev e de ihtiyaciniz var
apt-get install libssl-dev
Sertifikalari yaratmak:
Stunnel calistirmak icin server ve client sertifikalarina ihtiyac var. Bunlari verisign, thawte gibi bir CA den alabileceginiz gibi kendiniz bir CA olup bu sertifikalari kendiniz yaratip yarattiginiz CA ile imzalayabilirsiniz. Burda bu yontemi uygulayacagiz.
CA yaratmak icin bu satirlari teker teker girin:
openssl genrsa -des3 -out ca.key 4096 openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Son satirdaki komut sertifikanin detaylarini soracak, bu asamada Common Name alani onemli, daha sonra server in certifikasi yaratilirken de bu alanin girilmesi gerekecek ve bu alanin ondan farkli olmasi lazim. Buraya ornek olsun diye server in ip si CA dedim, yani "xxx.xxx.xxx.xxx CA" gibi bir satir girdim.
Diger alanlari doldurabilir veya gecebilirsiniz.
Server sertifikalarini ve csr yaratmak icin:
openssl genrsa -des3 -out server.key 4096 openssl req -new -key server.key -out server.csr
Common name server in ip si olarak girdim.
Simdiki satirda Csr ile server in sertifikasini alip CA ya gidip bunu imzala demis olacagiz.
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
Server da calisan stunnel baslatilirken sertifikadan gelen password ΓΌ sormasin istiyorsaniz assagidaki adimi yapin
openssl rsa -in server.key -out server.key.insecure mv server.key server.key.secure mv server.key.insecure server.key
Client sertifalarinida benzer sekilde yaratip imzaliyoruz.
openssl genrsa -des3 -out client.key 4096 openssl req -new -key client.key -out client.csr openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
Server tarafi icin Stunnel.conf
/etc/stunnel/stunnel.confda sertifika yollarini yani dizinleri kendinize gore duzenleyin
cert = /root/certs/server.crt key = /root/certs/server.key sslVersion = SSLv3 chroot = /var/lib/stunnel4/ setuid = stunnel4 setgid = stunnel4 pid = /stunnel4.pid socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 verify = 2 CApath = /certs CAfile = /root/certs/ca.crt debug = 7 output = /var/log/stunnel4/stunnel.log [https] accept = 443 connect = 1080 TIMEOUTclose = 0 ; vim:ft=dosini
Burda [https] alani ile port 443 de baglanti beklemesini ve 1080 e yoneltmesini soylemis oluyoruz. 1080 de socks proxy dinliyor olacak.
Bundan sonra /etc/default/stunnel4 dosyasini acip
ENABLE=0 olan kismi ENABLE=1 yapiyoruz.ve Stunnel i server da assagidaki gibi baslatiyoruz.
sudo /etc/init.d/stunnel4 start
Server a Socks proxy ( Dante ) kurulumu ve calistirilmasi
Bunu http://www.inet.no/dante/ adresinden indirip kendiniz derleyebileceginiz gibi apt ile de kurabilirsiniz.
apt-get install dante-server
Benim kullandigim dante konfigurasyon dosyasi
/etc/danted.conf su sekildelogoutput: stderr
internal: 127.0.0.1 port = 1080
external: eth0
clientmethod: none
method: none username
user.privileged: proxy
user.notprivileged: nobody
user.libwrap: nobody
extension: bind
client pass {
from: 127.0.0.1/8 port 1-65535 to: 127.0.0.1/8
method: none
}
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
method: none
}
pass {
from: 127.0.0.1/8 to: 0.0.0.0/0
command: bind connect udpassociate
method: none
}
pass {
from: 0.0.0.0/0 to: 127.0.0.1/8
command: bindreply udpreply
method: none
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
Dante yi
sudo /etc/init.d/danted start ile baslatiyoruz.Client da Stunnel
Client icin config dosyasi su sekilde. Burdada sertifika yollarini ve stunnel-server-ip yi kendinize gore ayarlayin.
cert = client.crt key = client.key sslVersion = SSLv3 socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 client = yes [socks] accept = 127.0.0.1:1080 connect = stunnel-server-ip:443 TIMEOUTclose = 0 ; vim:ft=dosini
Stunnel i client olarak ubuntu da calistirabilirsiniz.
sudo /etc/init.d/stunnel start
veya
client olacak stunnel i sertifika yollarini ve .conf dosyasini duzenleyip windows da da calistirabilirsiniz.
Bu konfigurasyon ile calistirildiginda local de 1080 port da socks server olarak baglanti bekler durumda basliyor.
Yasasin ozgurluk!!! ;)
Referanslar:
http://www.tc.umn.edu/~
http://www.bock.nu/blog/
No comments:
Post a Comment