Hướng dẫn cài đặt Mod Security cho Apache trên Ubuntu 16.04
Máy chủ Web Apache là một trong những máy chủ Web được sử dụng thông dụng nhất trên thế giới. Do đó việc tăng cường bảo mật cho máy chủ Web là một trong những công việc quan trọng mà người quản trị hệ thống cần phải thực hiện.
Có rất nhiều công cụ và kỹ thuật được sử dụng để tăng cưởng bảo mật cho máy chủ Web Apache. Trong số đó Mod_security là một trong những mô đun quan trọng được nhiều chuyên gia bảo mật tin dùng sử dụng để phát hiện, ngăn chặn tấn công trên máy chủ Web. Mod_security có khả năng theo dõi, ghi nhật ký và kiểm soát truy cập theo thời gian thực, ngoài ra Modsecurity còn có khả năng bảo vệ máy chủ Web khỏi những tấn công như XSS, Bots, SQL-injection, mã độc, Session Hijacking và nhiều loại tấn công khác.
Trong phần này. Chúng ta sẽ cùng Bizfly Cloud tìm hiểu về cách thức cài đặt và cấu hình Mod_security trên máy chủ Ubuntu 16.04.
YÊU CẦU HỆ THỐNG
- Máy chủ Ubuntu 16.04
- Địa chỉ IP tĩnh 192.168.1.10 dùng để cấu hình máy chủ
CẬP NHẬT HỆ THỐNG
Đầu tiên, cập nhật hệ thống với câu lệnh sau:
apt-get update -y
apt-get upgrade -y
CÀI ĐẶT MÁY CHỦ LAMP
Trước khi bắt đầu, cài đặt LAMP lên máy chủ bằng câu lệnh sau:
apt-get install apache2 mysql-server libapache2-mod-auth-mysql php5-mysql php5 libapache2-mod-php5 php5-mcrypt
Bật Apache Service và cho phép Apache khởi động cùng với Boot
systemctl start apache2
systemctl enable apache2
CÀI ĐẶT MOD_SECURITY
Mặc định, Mod_security có sẵn trên kho ứng dụng của Ubuntu 16.04. Thực hiện cài đặt Mod_security bằng câu lệnh sau:
apt-get install libapache2-modsecurity
Sau khi cài đặt thành công, thực hiện kiểm tra mô đun Mod_security bằng lệnh:
apachectl -M | grep security
Nếu mọi thứ đều hoạt động bình thường, kết quả sẽ như sau:
security2_module (shared)
CẤU HÌNH Mod_security
Mặc định, Mod_security không hoạt động bởi vì nó cần luật (Rules) để làm việc. Đầu tiên, bạn cần thay đổi tên tập tin Modsecurity.conf-recommended tại địa chỉ /etc/modsecurity thành modsecurity.conf bằng câu lệnh sau:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Bước tiếp theo, thiết lập cấu hình “SecRuleEngine” thành “on” trong tập tin modsecurity.conf
nano /etc/modsecurity/modsecurity.conf
SecRuleEngine on
Lưu tập tin và khởi động lại Apache để cập nhật thay đổi
systemctl restart apache2
Mod_security sẽ chạy với luật mặc định được lưu tại đại chỉ /usr/share/modsecurity-crs. Tuy nhiên modsecurity khuyến cáo nên tải luật mới tại kho lưu trữ github của mod_security. Để thực hiện cập nhật luật mới ta làm như sau:
Đầu tiên, gỡ bỏ luật mặc định bằng lệnh sau:
rm -rf /usr/share/modsecurity-crs
Tải phiên bản mới nhất
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
Thay đổi tên tập tin crs-setup.conf.example thành crs-setup.conf
cd /usr/share/modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
Thiết lập luật mới hoạt động với apache bằng việc thay đổi cấu hình trong tập tin tại địa chỉ /etc/apache2/mods-enabled/security2.conf bằng nội dung dưới đây:
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf"
IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
</IfModule>
Lưu tập tin và khởi động lại Apache
systemctl restart apache2
KIỂM TRA, CHẠY THỬ mod_security
Để thực hiện kiểm tra hoạt động của Mod_secuirty, thực hiện gửi một vài yêu cầu độc hại tới máy chủ web và kiểm tra xem yêu cầu đó có bị chặn lại hay không.
Đầu tiên, kiểm tra Mod_security bảo vệ máy chủ Apache trước một cuộc tấn công XSS.
Tại máy Client thực hiện chạy lệnh kiểm tra tấn công XSS như sau:
curl 'http://192.168.1.10/?q="><script>alert(1)</script>'
Nếu Mod_security hoạt động kết quả trả về là “403 Forbidden” như sau:
<!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 /
on this server.<br />
</p>
<hr>
<address>Apache/2.4.18 (Ubuntu) Server at 192.168.1.10 Port 80</address>
</body></html>
Tiếp theo, kiểm tra Mod_security ngăn chặn tấn công SQL injection bằng lệnh sau:
curl http://192.168.1.10/?q='1 OR 1=1
Nếu Mod_security hoạt động kết quả trả về sẽ là “403 Forbidden” như sau:
<!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 /
on this server.<br />
</p>
<hr>
<address>Apache/2.4.18 (Ubuntu) Server at 192.168.1.10 Port 80</address>
</body></html>
Ngoài những luật được cung cấp bởi Mod_security, tùy từng trường hợp bạn có thể tự thêm luật vào Mod_secuirty để bảo vệ hệ thống của bạn theo cách riêng.
Chúc các bạn thành công.
Theo Bizfly Cloud chia sẻ
>> Tham khảo thêm: Cài đặt Joomla trên Ubuntu 16.04