DMA_CODE (US only) AREA_CODE (US only)

Một phần của tài liệu bảo mật web server apache với mod security (Trang 40 - 44)

- AREA_CODE (US only)

Trường COUNTRY_CODE là mã quốc gia gồm hai chữ cái theo tiêu chuẩn ISO 3166. Ví dụ, mã quốc gia của Hoa Kỳ là US. COUNTRY_CODE3 chứa mã quốc gia ba ký tự, ví dụ Hoa Kỳ là USA. Trường COUNTRY_CONTINENT chứa

châu lục, ví dụ như EU cho người sử dụng từ châu Âu và AS cho châu Á. 2.4.9.2. Cấm các người dùng từ các quốc gia được chỉ định

Đầu tiên, chúng ta cần download GEO database. Thực hiện theo các bước 1. Truy cập vào http://www.maxmind.com và click vào GeoLocation Technology.

2. Click vào GeoLite Country, với phiên bản miễn phí của database. 3. Copy link các phiên bản nhị phân (binary)của GeoLite database. 3. Copy link các phiên bản nhị phân (binary)của GeoLite database. Sử dụng wget để download về, Code: wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.d at.gz gunzip GeoIP.dat.gz mkdir /usr/local/geoip mv GeoIP.dat /usr/local/geoip

Ví dụ. Viết rule để chặn các khách truy cập từ Nga(RU) Pakistan(PK) và Trung Quốc(TQ)

Code:

SecGeoLookupDb "/usr/local/geoip/GeoIP.dat"

SecRule REMOTE_ADDR “@geoLookup” “deny,nolog,chain,status:500” SecRule GEO:COUNTRY_CODE “@pm RU PK CN”

Để chặn nhiểu quốc gia hơn, có thể dùng @pmFromFile thay cho @pm 2.4.9.3. Cân bằng tải giữa các server trên các châu lục khác nhau

Nếu chúng ta đang cung cấp dữ liệu cho khách truy cập download, chúng ta sẽ tính đến bài toán để người truy cập có được tốc độ download tốt nhất có thể. Giả sử chúng ta có một Server ở Mỹ và một Server ở châu Âu. Bằng cách sử dụng ModSecurity với operator là @geoLookup, ta có thể xác định nơi khách truy cập và chuyển vị trí download đến server gần nhất, vì vậy tốc độ download sẽ cải thiện cũng như cân bằng tải cho Server. Rule trong trường hợp này được viết như sau:

Code:

SecRule REQUEST_URI “^/download/(.*)$” “phase:1,capture,chain, redirect:http://sveu.example.com/download/%{TX.1}”

SecRule REMOTE_ADDR “@geoLookup” “chain” SecRule GEO:COUNTRY_CONTINENT “@streq EU”

Rule đầu tiên sẽ phù hợp với bất kỳ request nào đến thư mục /download/. Sử dụng dấu chấm(.) và dấu sao để đại diện cho tất cả các file có trong thư mục. ModSecurity sẽ nắm bắt tất cả các giá trị này và lưu nó vào trong biến TX:1. Nếu người truy cập từ Châu Âu, ModSecurity sẽ chuyển hướng request đến server sveu.example.com với đường dẫn thư mục và file request như REQUEST _URI ở rule đầu tiên.

2.4.10. Thực hiện các shell scripts với ModSecurity

ModSecurity có thể thực thi một shell scripts khi khớp (math) với một rule. Điều này được thực hiện thông qua actions exec() . Đây là một kỹ thuật rất mạnh cho phép chúng ta sử dụng toàn bộ sức mạnh của shell scripts khi một rules được kích hoạt.

Các file shell scripts phải được thực thi bởi user Apache, vì vậy phải chắc chắn rằng user Apache có quyền thực thi scripts. Nếu thực hiện shell scripts không thành công, ModSecurity sẽ ghi lỗi vào file log lỗi của Apache. Dưới đây là một số ứng dụng thông thường khi sử dụng Modsecurity thực hiện Shell scripts.

2.4.10.1. Giởi email cảnh báo

Ví dụ, giả sử rằng chúng ta muốn thực hiện một script để gởi cho người quản trị web server email cảnh báo ModSecurity phát hiện hacker đang khai thác lỗi SQL injection. Để làm điều này, chúng ta cần hai bước:

1. Viết một file script có khả năng gởi email cảnh báo đến một địa chỉ email chỉ định. định.

2. Một rule có tác dụng sẽ gọi script khi phát hiện tấn công.

Đối với script, chúng ta có thể sử dụng một standard shell script gọi /bin/sh, (có thể sử dụng Perl script hoặc bất kỳ ngôn ngữ khác). Vd ở đây sử dụng standard shell script và gửi email thông báo cho tanviet12@example.com

Tạo một file có tên email.sh trong thư mục /usr/local/bin có nội dung Code:

#!/bin/sh

echo "Mot cuoc tan cong sql injection da bi chan"|mail –s "ModSecurity Alert" <a href="mailto:tanviet12@example.com">tanviet12@example.com</a>

echo Done.

Nếu được kích hoạt, script sẽ gởi email đến địa chỉ tanviet@example.com với tiêu đề ModSecurity Alert. Cuối script là chuỗi Done để ModSecurity nhận biết đã thực thi script thành công.

Tiếp theo, viết rule để kích hoạt script khi có tấn công sql injection Code:

SecRule ARGS “drop table” “deny,exec:/usr/local/bin/email.sh”

Bây giờ chúng ta có thể thử nghiệm rule bằng cách truy cập vào đường dẫn http://example.com/test=drop%20table. (adsbygoogle = window.adsbygoogle || []).push({});

2.4.10.2. Gởi nhiều thông tin hơn đến email

Email cảnh báo có thể rất hữu ích cho người quản trị web server để nhanh chóng khắc phục được sự cố khi gặp tấn công…Tuy nhiên, chúng ta có thể làm cho các email được gởi chứa nhiều thông tin hơn về cuộc tấn công (các thông tin như IP, request URI,..).

ModSecurity cho phép chúng ta thiết lập các biến môi trường thông qua action setenv. Giả sử chúng ta muốn thu thập các thông tin sau khi phát hiện tấn công SQL injection:

Một phần của tài liệu bảo mật web server apache với mod security (Trang 40 - 44)