Etiket arşivi: web server

Nginx Dizin Şifreleme

Nginx web sunucumuzda bir dizine girişte parola işlemi yapmak istediğimizde Apache gibi .htpasswd oluşturma işlemi gibi yapılmıyor. Htaccess erişim kontrolü olarak biliyor Apache’de.

Nginx’te bunu yapmak için VirtualHost dosyasında ekleme yapmamız gerekiyor. Ayrıca htpasswd gibi bir dosyayı biz oluşturup istediğimiz dizine atarak tanımlama yapacağız.

Şifremizi openssl marifeti ile oluşturacağız.

openssl passwd

yazıp enter dediğimizde giriş için kullanacağımız şifreyi iki kere girdirecek ve karmaşık bir görünüm oluşturacak girdiğimiz parola için.

[email protected]:~# openssl passwd
Password:                                123456 Girdim
Verifying – Password:              123456 Girdim
6i60Qf3fCAO4c

123456 şifresi için 6i60Qf3fCAO4c dizisini üretti.

Phpmyadmin dizinini güvene almak istiyorum. buda genelde pma olarak bağlanılır. Bundan dolayı sunucuya http://sunucu/pma olarak erişmek istenecek. Dışarıdan direk giriş yerin öncesinde bir şifre ekranı gelecek. Ben /etc/nginx/ dizini altında pma_sifre diye bir dosya içinde kullanıcımı ve şifremi tutacağım. Yukarıda ürettiğim şifre karşılığındaki diziyi salih kullanıcısı ile eşleştireceğim.

mcedit /etc/nginx/pma_sifre

salih:6i60Qf3fCAO4c

ekleyip çıkıyoruz.

salih kullanıcısı ve 123456 şifresi ile giriş yapacağım bilgiyi girdim.

Nginx config dosyasında server{ altında bir yere ayarları eklemeniz gerekiyor.

mcedit /etc/nginx/sites-available/default

server  {
. . .

    location / {
        try_files $uri $uri/ =404;
    }

    location /pma {
        auth_basic “Pma Giriş Ekranı”;
        auth_basic_user_file /etc/nginx/pma_sifre;
    }

kaydedip çıkıyoruz ve nginx sunucusunu yeniden başlattık mı artık /pma ile erişimde şifre sorucak. 

Linux Hosting Server Kurulumu

Yeni hizmete girecek sunucularım da panel kullanmıyorum. Panel çok müşterisi olanlar için veya kurumsal olarak yapan firmalar için ideal olabilir. Ancak kendi sunucum da yönetemediğim ve ekstra ücret vereceğim yazılımları kullanmak pek cazip gelmiyor. Sorun kısmında da normal çıkabilecek sorunlar üzerine birde panelin güvenlik açığı ve sorunları ile iş yükü olduğunu düşünüyorum.
İşletim Sistemi : Debian. Kiraladığım sunucuya 64bit debian’ı minimum kurulum yapılmış istedim. Yani sunucu üzerinde ssh sunucu haricinde bir servis yüklü olmadan teslim aldım.
Kullanılacak yazılımlar: Apache2, Php5, Mysql 5.1, Ftp sunucu olarak Vsftpd, Dns sunucu için DjbDns kullanacağım. Mail sunucu olarak google ve yandex alt yapılarını kullanacağım için herhangi bir mail sunucu kurmuyorum. Sistem üzerinde localhostu dinleyen postfix kurulu geliyor. Bazı uygulamalarda lazım olur diye kenarda durmasında problem yok.
Kurulumlar
Apache, php ve mysql ve vsftpd kurulumları aşağıdaki tek yükleme komutu ile yaptım. Bu kurulum sırasında mysql sunucu için root kullanıcısına verilecek şifreyi soracak o kadar.
apt-get install apache2 libapache2-mod-php5 php5 php-pear php5-mysql php5-gd php5-curl php5-mcrypt php5-ffmpeg php-soap php-pear php-mail php5-imagick php-auth php-auth-http php-auth-sasl mysql-server vsftpd
apt-get install ucspi-tcp daemontools daemontools-run
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
gunzip djbdns-1.05.tar
tar -xf djbdns-1.05.tar
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check
Kurulumlarımız tamamlanmış oluyor. Şimdi ayarları yapmaya başlayalım. Tinydns domain sorgularına cevap verecek. Bunun için kullanıcı oluşturuyoruz servisi çalıştıralım diye. kendi kullanıcı ile calistigi icin ve shell hakkı olmadığı için hacklenme durumunda dahi sunucuda işlem yapamaz saldırgan.
/usr/sbin/useradd -s /bin/false tinydns
/usr/sbin/useradd -s /bin/false dnslog
netstat -tulpa | grep domain
lsof -i | grep domain
Şimdi dns tanımlamalarını yapabiliriz. Yandex Mail yönlendirmeleri olan domainler için aşağıdaki gibi ek yapılır.
cd /etc/tinydns/root
mcedit data
####  linuxuzmani.com ####
.linuxuzmani.com:172.16.0.10:a:259200
.0.16.172.in-addr.arpa:172.16.0.10:a:259200
.linuxuzmani.com:172.16.0.11:a:259200
.0.16.172.in-addr.arpa:172.16.0.11:a:259200
=linuxuzmani.com:172.16.0.10:86400
+www.linuxuzmani.com:172.16.0.10:86400
+ns1.linuxuzmani.com:172.16.0.10:86400
=ns2.linuxuzmani.com:172.16.0.11:86400
@linuxuzmani.com::mx.yandex.net.:10:86400
Cmail.linuxuzmani.com:domain.mail.yandex.net:86400
kaydedip çıkıyoruz ve akabinde devreye alıyoruz ayarları.
make
ikinci bir domainin tanımlarını dosyanın altına ekleyerek devam ediyoruz ve make ile tekrar uyguluyoruz.
#### linuxuzmani.net  ####
.linuxuzmani.net::ns1.linuxuzmani.com
.linuxuzmani.net::ns2.linuxuzmani.com
=linuxuzmani.net:172.16.0.10:86400
+www.linuxuzmani.net:172.16.0.10:86400
@linuxuzmani.net::aspmx.l.google.com.:1:3600
@linuxuzmani.net::alt1.aspmx.l.google.com.:5:3600
@linuxuzmani.net::alt2.aspmx.l.google.com.:5:3600
Cmail.linuxuzmani.net:ghs.google.com:9800
Djbdns ayarı için bir proje sayfası var. Kolaylık oluyor.
Apache ayarlarına geçebiliriz.
 useradd -d /var/www/hosting/ftpuser -g www-data -s /usr/sbin/nologin ftpuser
passwd ftpuser
Centos User Ekleme
useradd -d /var/www/salih -g apache -s /sbin/nologin salih
** Devamı gelecektir. Sürekli güncelleme yapılacaktır. Zaman ayırabildiğim durumlarda.

Linux Web Sunucu Kurulumu

En uygun ve sorunsuz vps satan firmalardan biri DigitalOcean bana göre. Buradan Droplet (Damla) olarak adlandırılan sanal sunucular kiralayabiliyorsunuz ve fiyatları uygun. Sanal sunucu kiralama yaptıktan sonra size Linux sisteme erişim bilgilerini veriyor. IP ve root şifresi ile giriş yaptıktan sonra şifrenizi değiştirmenizi istiyor sistem. 
Sistemi güncelleyelim.
apt-get update
apt-get upgrade
Apache 2.4 , Mysql Server 5.5 ve Php paketleri ile modülleri yüklüyoruz. 
apt-get install apache2 libapache2-mod-php5 mysql-server php5-mysql php5-dev php5-mcrypt php5-gd php5-cli php5-xcache php5-memcache php5-memcached 
Sistem ilk kurulduğunda mail sunucu gelmiyor üzerinde. Ayrıca bir kaç kullandığım programıda ekliyorum.
apt-get install mc unzip postfix php5-curl whois
Bind Dns sunucumuzu ve araçlarınıda kuruyoruz.
apt-get install bind9 bind9 bind9utils bind9-doc

Vsftpd Ftp Sunucu kurulumunu yapalım.
apt-get install vsftpd
Sunucumuza kurulumlarımız tamam. Servislerin ayarlamalarla ilgili aşağıdaki linkleri takip edebilirsiniz.

Apache Bilgilerini Gizleme

Güvenlik için web sunucusu ve bileşenlerin sürüm bilgilerinin gizlenmesi tavsiye edilir her zaman. Apahce için aşağıdaki ayarları yapabilirsiniz.
/etc/apache2/apache2.conf                     dosyasını açalım.
ServerSignature Off
ServerTokens Prod
satırlarını ekledikten sonra servisi yeniden başlatalım.
/etc/init.d/apache restart
Artık web sunucumuzun sürüm bilgileri elde edilemeyecek.