Kapat
Siberdinc > Siber > NGINX ile ModSecurity Nasıl Kurulur ? (OWASP Testli)

ModSecurity, gerçek zamanlı web uygulaması izleme, günlüğe kaydetme ve erişim kontrolü için kullanılan bir araçtır. Bu açık kaynaklı Web Uygulaması Güvenlik Duvarı (WAF) modülü, web sunucularını (Apache, NGINX ve IIS) çeşitli web uygulamalarındaki olası güvenlik açıklarını hedef alan saldırılara karşı korur. ModSecurity aşağıdaki gibi çalışır;

  • Gerçek zamanlı izleme ve erişim kontrolü
  • Tam HTTP trafik kaydı
  • Sürekli pasif güvenlik değerlendirmesi

ModSecurity’yi NGINX ile beraber kuracağız ve Owasp kurallarından birkaçını ekleyip denemesini yapacağız. Yükleme işlemi biraz karışık ve komut satırı üzerinden tamamen ele alınır. Ubuntu 18.04 platformunda göstereceğim.

İlk yapacağımız şey gerekli bağımlılıkları kurmak. Bunu yapmadan önce Apache’yi durduracağız ve devre dışı bırakacağız. Apache çalışıyorsa, NGINX’i başlatamayız. Apache’yi devre dışı bırakmak için aşağıdaki komutları çalıştıracağız;

sudo systemctl stop apache2 sudo systemctl disable apache2

Unutmayın, yukarıdaki komutlar Apache’yi kaldırmaz, bunun yerine sunucuyu durdurur ve önyükleme sırasında başlamasını devre dışı bırakır. Bağımlılıkları kuralım. Terminal penceremize geri dönelim ve komutlarımızı çalıştıralım:

sudo apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

ModSecurity Nasıl Kurulur ?

Yapılacak ilk şey ModSecurity’nin nginx_refactoring dalını indirmektir. Bu, aşağıdaki komutlarla yapılır:

cd /usr/src git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

İndirme işlemi tamamlandığında, komutlarla derleyeceğiz;

cd ModSecurity  ./autogen.sh./configure --enable-standalone-module --disable-mlogcmake

Nginx Nasıl Kurulur ?

Sonra NGINX’i indirip derliyoruz. Ben NGINX 1.13.4 indireceğim.

cd /usr/src ​sudo wget http://nginx.org/download/nginx-1.13.4.tar.gz

Dosyayı aşağıdaki komut ile çıkarıyoruz:

sudo tar xvzf nginx-1.13.4.tar.gz

Derlemeden önce sudo -s komutuyla kök kullanıcıya geçelim. Kök kullanıcıya geçtiğinizde derlenecek komutlar şunlardır:

cd nginx-1.13.4/ ​./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make make install

Şimdi varsayılan nginx kullanıcısını değiştireceğiz:

sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Kurulumumuzu şu komutla test edelim: (Şekil1)

/usr/local/nginx/sbin/nginx -t
(Şekil1)

Şimdi OWASP kural yapılandırmalarımızı ve OWASP testimizi gerçekleştireceğiz.

Systemd birim dosyası oluşturma

NGINX’in önyüklemede başlayabileceğinden emin olmalıyız. Bunu yapmak için, aşağıdaki içeriğe sahip sudo nano /lib/systemd/system/nginx.service komutuyla yeni bir systemd dosyası oluşturacağız:

[Service] Type=forking ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop KillMode=process Restart=on-failure RestartSec=42s PrivateTmp=true LimitNOFILE=200000
 [Install] WantedBy=multi-user.target  Save and close that file. To start, stop, and restart nginx, the commands will now be: sudo systemctl start nginx.service sudo systemctl stop nginx.service sudo systemctl restart nginx.service

Bu dosyayı kaydedip kapatın. Şimdi NGINX’i başlat, durdur ve yeniden başlat komutlarını çalıştıracağız:

ModSecurity ve NGINX’i Yapılandırma

İlk olarak NGINX’i yapılandıracağız. sudo nano /usr/local/nginx/conf/nginx.conf komutu ile nginx.conf dosyasını açıyoruz ve bu dosyada aşağıdaki kısmı buluyoruz;

location / {
    root   html;
    index  index.html index.htm;
}

Yukarıdaki kısmı şu şekilde değiştiriyoruz;

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    root   html;
    index  index.html index.htm;
}

Kaydedip çıkıyoruz.

Şimdi ise OWASP temel kurallarını etkinleştiriyoruz. Bunu yapmak için sudo nano /usr/local/nginx/conf/modsec_includes.conf komutu ile modsec_includes.conf dosyasını açıyoruz ve aşağıdaki kısmı ekliyoruz.

include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf

Kaydedip çıkıyoruz.

Bir sonraki adımımız için gerekli ModSecurity yapılandırma dosyalarını içe aktaracağız. Bunu yapmak için aşağıdaki komutları çalıştırıyoruz:

sudo cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
sudo cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/

Modsecurity.conf dosyasındaki SecRuleEngine seçeneğini aşağıdaki komutla etkinleştiriyoruz:

sudo sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

Son olarak, aşağıdaki komutlarla OWASP ModSecurity Çekirdek Kural Kümesini ekliyoruz:

cd /usr/local/nginx/conf
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
sudo cd owasp-modsecurity-crs
sudo mv crs-setup.conf.example crs-setup.conf
sudo cd rules
sudo mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
sudo mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Firewall Açma

NGINX / ModSecurity‘yi test etmeden önce, firewallımızı şu komutlarla açıyoruz:

sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw default deny
sudo ufw enable

NGINX / ModSecurity Nasıl Çalışır ? Şimdi Test İşlemini Gerçekleştiriyoruz.

Son olarak, kurulumumuzu test edebiliriz. Sunucunuzda şu komutu verin:

sudo tail -f /usr/local/nginx/logs/error.log

Şimdi Bir tarayıcı açın:

http://192.168.1.14:8081/index.html/?param=”><script>alert(1);</script>

Tebrikler.Aşağıda gördüğümüz gibi loglarımızı aldık.

Eklemek istedikleriniz olursa yorum yapmayı unutmayın.

Makalelerimizden ilk siz haberdar olmak istiyorsanız. Sağ taraftaki mail aboneliği kısmından abone olabilirsiniz. Sağlıklı ve Güvenli Günler Günlerim.

Erdinç TANDOĞAN

 

 

 

 

 

 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kapat

DMCA.com Protection Status