Bu yazımda kullanımı en basit olan CTF platformu CTFd’ yi Ubuntu Server 16.04 LTS’ ye nasıl kuracağımızı, nasıl kullanılabilir hale getirebileceğimizi göstereceğim.

Öncelikle sunucumuza ssh ile bağlanıp giriş yapıyoruz. 1 Ardından platform dosyalarını sunucuya kopyalamak için “git” yüklüyoruz.

$ sudo apt-get install git

2

git yüklendikten sonra dosyalarımızı sunucuya kopyalıyoruz

$ git clone https://github.com/CTFd/CTFd.git

3

Dosyalarımız kopylanmış mı kontrol edelim

$ cd CTFd/
$ ls -lh

4

Platformu kullanabilmemiz için bazı paketler gerekiyor. Bu paketleri “prepare.sh” komut dosyasını çalıştırarak yüklüyoruz.

$ ./prepare.sh

5

Gerekli paketlerin kurulumu tamamlandıktan sonra platformu çalıştırabiliriz. Bunun için:

$ python serve.py

6

Eğer bu işleme kadar bir hata almadıysanız platform 127.0.0.1 adresinde (localhost) 4000 portunda çalışmakta olucaktır. CTRL + C yaparak işlemi durduruyoruz. Platformu internet üzerinde erişilebilir hale getirmek için yapmamız gereken 2 işlem daha var. 1-) Nginx kurmak. 2-) Gunicorn’ un Nginx ile entegre çalışması için gerekli konfügrasyonları yapmak.

İsterseniz öncelikle gunicorn’ u test edelim.

$ gunicorn --bind "0.0.0.0:4000" -w 4 "CTFd:create_app()"

7

Burada belirttiğimiz 4000 portu rastgele seçilmiştir. İstediğiniz port numarasını seçebilirsiniz. Eğer herhangi bir hata almadıysanız “http://makineniziz_ip_adresi:4000” adresinde platformu görüntüleyebilirsiniz. (Örneğin: 192.168.1.39:4000 veya 93.127.58.3:4000)

8

Nginx’ in kurulumuna geçelim.

$ sudo apt-get install nginx

9

Kurulum tamamlandıktan sonra gunicorn’ un Nginx ile entegre çalışması için gerekli konfügrasyonları yapmamız gerekiyor. Bunun için “/etc/nginx/sites-available/” klasöründe “ctfd_app.conf” isimli bir dosya oluşturuyorum. Ben bunun için “nano” isimli metin editörünü tercih ettim.

$ sudo nano /etc/nginx/sites-available/ctfd_app.conf

10

Gerekli ayarları yapıp dosyamızı kaydediyoruz. Bu ayarda Nginx’ e 80 portuna gelen istekleri makinemizde 4000 portunda çalışan gunicorn’ a yönlendirmesini söylüyoruz.

server {
	listen 80;
	server_name makineniziz_ip_adresi;
	
	location / {
		include proxy_params;
		proxy_pass http://localhost:4000;
	}
}

11

Artık bu konfügrasyon dosyasını “/etc/nginx/sites-enabled/” klasörüne bağlayarak etkinleştirelibilir.

$ sudo ln -s /etc/nginx/sites-available/ctfd_app.conf /etc/nginx/sites-enabled/

12

Yaptığımız ayarlarda bir problem var mı kontrol ediyoruz ve nginx servisini yeniden başlatıyoruz.

$ sudo nginx -t
$ sudo systemctl restart nginx

13

CTFd anadizinine geri dönüp gunicorn’ u tekrar çalıştırıyoruz.

$ gunicorn --bind "0.0.0.0:4000" -w 4 "CTFd:create_app()"

14

Artık platforma http://makineniziz_ip_adresi üzerinden (Örneğin: 192.168.1.39 veya 93.124.57.42) erişebilir ve CTF’ inizi organize edebilirsiniz.

15