در آموزش های گذشته توضیحی پیرامون WAFها و مشخصا مود سکیوریتی دادیم. امروز میخواهیم به بررسی نصب آن روی سرورهای اوبونتو بپردازیم. برای نصب مود سکیوریتی لازم است ابتدا LAMP روی ماشین شما نصب باشد. ازآنجایی که نصب LAMP را نیز توضیح داده ایم از در آموزش امروز با فرض این مطلب که پیش نیازهای مورد نظر در سرور اوبونتوی شما رعایت شده است به بررسی نصب ModSecurity میپردازیم.
بیشتر بخوانید:
- مود سکیوریتی (modsecurity) چیست؟
- آموزش نصبApache, MariaDB, PHP, PhpMyadmin) LAMP) در اوبونتو ۱۶.۰۴ (Ubuntu 16.04)
نصب مود سکیوریتی (ModSecurity) در اوبونتو
برای نصب ModSecurity در اوبونتو از طریق مخازن دستور زیر را در ترمینال وارد نمائید:
1 |
root@arshatech:~# apt-get install libapache2-modsecurity –y |
حال جهت اطمینان حاصل کردن از نصب صحیح آن دستور زیر را وارد کنید:
1 |
root@arshatech:~# apachectl -M | grep security |
1 |
security2_module (shared) |
در مرحله بعد با دستور زیر فایل اصلی تنظیمات ModSecurity را ایجاد کنید:
1 |
root@arshatech:~# mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf |
حال با یک ابزار ویرایشگر متن مانند vim فایل زیر را باز کنید:
1 |
root@arshatech:~# vim /etc/modsecurity/modsecurity.conf |
و تغییرات را به صورت زیر اعمال کنید:(با جستجو در فایل عبارات زیر را به صورتی که مشخص شده است تغییر دهید)
1 2 |
SecRuleEngine DetectionOnly Change to SecRuleEngine On SecResponseBodyAccess On Change to SecResponseBodyAccess Off |
در این مرحله میبایست سرویس آپاچی را ریلود کنید:
1 |
root@arshatech:~# systemctl reload apache2.service |
حال جهت اطمینان حاصل کردن از تغییرات به شیوه صحیح وضعیت آپاچی را بررسی کنید:
1 |
root@arshatech:~# systemctl status apache2.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Mon 2018-06-25 09:51:03 EDT; 17min ago Docs: man:systemd-sysv-generator(8) Process: 32891 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 34111 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS) Process: 32913 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) CGroup: /system.slice/apache2.service ├─32930 /usr/sbin/apache2 -k start ├─34129 /usr/sbin/apache2 -k start ├─34130 /usr/sbin/apache2 -k start ├─34131 /usr/sbin/apache2 -k start ├─34132 /usr/sbin/apache2 -k start └─34133 /usr/sbin/apache2 -k start Jun 25 09:51:00 ubuntu1 systemd[1]: Stopped LSB: Apache2 web server. Jun 25 09:51:00 ubuntu1 systemd[1]: Starting LSB: Apache2 web server... Jun 25 09:51:00 ubuntu1 apache2[32913]: * Starting Apache httpd web server apache2 Jun 25 09:51:03 ubuntu1 apache2[32913]: * Jun 25 09:51:03 ubuntu1 systemd[1]: Started LSB: Apache2 web server. Jun 25 10:08:39 ubuntu1 systemd[1]: Reloading LSB: Apache2 web server. Jun 25 10:08:40 ubuntu1 apache2[34111]: * Reloading Apache httpd web server apache2 Jun 25 10:08:40 ubuntu1 apache2[34111]: * Jun 25 10:08:40 ubuntu1 systemd[1]: Reloaded LSB: Apache2 web server. |
همانطور که مشاهده میشود مشکلی وجود ندارد. در ادامه برای نصب قوانین پیشفرض OWASP که قوانین دقیق و مناسبی هم میباشند ابتدا آن را از وبسایت گیت هاب دریافت کنید.
در صورت عدم وجود بسته git روی سرور باید ابتدا آن را نصب کنید:
1 |
root@arshatech:~# apt-get install git -y |
در ادامه قوانین مورد نیاز را روی سیستم خود بارگزاری کنید:
1 2 3 4 |
root@arshatech:~# git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git root@arshatech:~# cd owasp-modsecurity-crs root@arshatech:~# mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf root@arshatech:~# mv rules/ /etc/modsecurity/ |
حال به مسیر زیر بروید:
1 |
root@arshatech:~# vim /etc/apache2/mods-available/security2.conf |
محتوای آن را پاک کرده و مقادیر زیر را در آن نوشته و تغییرات را ذخیره کنید:
1 2 3 4 5 6 7 8 9 10 11 |
<IfModule security2_module> # Default Debian dir for modsecurity's persistent data SecDataDir /var/cache/modsecurity # Include all the *.conf files in /etc/modsecurity. # Keeping your local configuration in that directory # will allow for an easy upgrade of THIS file and # make your life easier IncludeOptional /etc/modsecurity/*.conf Include /etc/modsecurity/rules/*.conf </IfModule> |
در ادامه سرویس آپاچی را متوقف و مجددا اجرا کنید و در انتها وضعیت سرویس را بررسی کنید تا از تغییرات اعمال شده روی آن مطمان شوید:
1 2 3 |
root@arshatech:~# systemctl stop apache2.service root@arshatech:~# systemctl start apache2.service root@arshatech:~# systemctl status apache2.service |
حال به مسیر زیر بروید:
1 |
root@arshatech:~# vim /etc/apache2/sites-available/000-default.conf |
قبل از بستن تگ </VirtualHost> عبارت زیر را وارد کنید: (بعد از تست حتما این خط حذف شود)
1 |
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'Our test rule has triggered'" |
سپس مجددا سرویس آپاچی را متوقف و اجرا کرده و وضعیت آن را بررسی کنید:
1 2 3 |
root@arshatech:~# systemctl stop apache2.service root@arshatech:~# systemctl start apache2.service root@arshatech:~# systemctl status apache2.service |
حال برای تست ModSecurity ابتدا بسته curl را به صورت زیر نصب کنید:
1 |
root@arshatech:~# apt-get install curl –y |
و سپس در ترمینال دستور زیر را وارد کنید:
1 |
root@arshatech:~# curl <IP_ADDRESS>/index.html?testparam=test |
بعد از اجرای دستور بالا اگر خروجی زیر را که ارور ۴۰۳ را نمایش میدهد دریافت کردید به معنای موفقیت شما در نصب و فعالیت ModSecurity میباشد:
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /index.html on this server.<br /> </p> <hr> <address>Apache/2.4.18 (Ubuntu) Server at <IP_ADDRESS> Port 80</address> </body></html> |
*** حال که تست نفوذ با موفقیت رو به رو بوده است حتما محتوای افزوده شده به فایل ۰۰۰-default.conf را حذف نمائید و مجددا سرویس آپاچی را متوقف و مجددا استارت کنید. بررسی وضعیت سرویس آپاچی فراموش نشود.***