Headlines News :
Home » , » Pengamanan pada nginx

Pengamanan pada nginx

Written By Unknown on Tuesday, March 19, 2013 | 10:00 AM

jika php-cgi hanya digunakan secara local alias secara fisik tidak terpisah dengan web servernya sebaiknya gunakan soket php saja karena selain lebih aman, proses kompilasi kode php akan lebih cepat. saya menggunakan wrapper `spawn-fcgi' untuk menjalankan php-cgi. misalnya seperti ini:
/usr/bin/spawn-fcgi -U nobody -G nobody -d /var/run/fcgi -s /tmp/fcgi.sock -M 0777 -F 2 -P /var/run/fcgi/fcgi.pid -- /usr/bin/php-cgi
Ternyata dari perintah sebelumnya kan saya menggunakan php-cgi pada alamat 127.0.0.1 dan port 9000. Jadi otomatis port 9000 itu terbuka. Jalankan saja perintah ini:
# netstat -tulpn | grep 9000
Dan hasilnya kira-kira seperti ini:
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9443/php-cgi   
Oke untuk mengantipasi itu maka lakukanlah perintah ini:
  • Matikan dahulu proses dari php-cgi dengan perintah:
    # killall php-cgi
  • Jalankan perintah dibawah ini (Sebelumnya download dan install spawn-fcgi dulu ya di http://pkgs.org/search/?keyword=spawn-fcgi):
    # /usr/bin/spawn-fcgi -U nobody -G nobody -d /var/run/fcgi -s /tmp/fcgi.sock -M 0777 -F 2 -P /var/run/fcgi/fcgi.pid -- /usr/bin/php-cgi
  • Maka apabila benar, maka hasilnya seperti ini:
    spawn-fcgi: child spawned successfully: PID: 9482
    spawn-fcgi: child spawned successfully: PID: 9483
  • Sekarang saatnya membuktikan apakah port 9000 terbuka.
    # netstat -tulpn | grep 9000
  • Maka tidak ada hasil apa-apa kan? Coba lagi dengan perintah ini:
    # nmap localhost

    Keluarannya di terminal

    Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-15 13:22 WIT
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.0000060s latency).
    Not shown: 994 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    37/tcp   open  time
    80/tcp   open  http
    113/tcp  open  auth
    3306/tcp open  mysql
    6000/tcp open  X11

    Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
  • Nah gak ada port 9000 yang terbuka kan? Kenapa?
    Karena disini menggunakan soket php aja seperti yang dibilang om Walecha di atas.He
  • Sekarang rubah nginx.conf menjadi seperti ini:
    # location ~ \.php$ {
            root /srv/httpd/htdocs;
            fastcgi_pass unix:/tmp/fcgi.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
            include fastcgi_params;
            #fastcgi_param HTTPS on;
            fastcgi_intercept_errors on;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            }
  • Dari tampilan di atas, yang dirubah di bagian location ~ \.php$ { dan yang saya tebalkan saja ya? Selebihnya sama dengan nginx sebelumnya
  • Sekarang coba restart nginx-nya:
    # killall nginx
    # /etc/rc.d/rc.nginx start
  • Langkah terakhir adalah dengan mematikan services autostart php-cgi di rc.M yang sebelumnya sudah saya edit waktu itu dan merubahnya menjadi:
    # Start php-cgi;
    #if [ -x /usr/bin/php-cgi ]; then
    # . /etc/rc.d/rc.php-cgi start
    #fi
  • Oke sekarang buka localhost/info.php (ingat info.php sudah di buat sebelumnya dengan isinya: )
Oke setelah melakukan serangkaian di atas, maka tampilan http://localhost/info.php saya seperti ini:
Catatan:
Untuk masalah koneksi php ke mysql dengan cara di atas pun telah berhasil, karena sebelumnya tidak berhasil tapi kali ini berhasil..
Share this post :

Post a Comment

 
Copyright © 2011. COMASTNET - All Rights Reserved