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 apache2sudo 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/srcgit 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/srcsudo 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_modulemakemake 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

Ş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=forkingExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadKillStop=/usr/local/nginx/sbin/nginx -s stopKillMode=processRestart=on-failureRestartSec=42sPrivateTmp=trueLimitNOFILE=200000[Install]WantedBy=multi-user.targetSave and close that file. To start, stop, and restart nginx, the commands will now be:sudo systemctl start nginx.servicesudo systemctl stop nginx.servicesudo 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











