Giới thiệu
Hiện nay việc webserver đặt phía sau load balancer, front end server, hoặc proxy server rất phổ biến. Với cấu hình mặt định, khi có người truy cập đến website thì webserver sẽ chỉ nhận được IP của load balancer, front end server, hoặc proxy server.
Để giải quyết được vấn đề này ta sẽ sử dụng module có tên là mod_remoteip, module hỗ trợ cho Apache phiên bản 2.4 trở đi, mod_remoteip sẽ viết lại địa chỉ IP truy cập thành IP của người truy cập đến website thay vì load balancer, front end server, hoặc proxy server đứng trước nó.
Việc lấy được IP thật của người truy cập rất quan trong trong hoạt động bảo mật, vì nếu có cài đặt tường lửa hoặc các rules ngăn chặn truy cập thì khi chặn IP sẽ là IP của người truy cập thay vì IP của server đứng trước webserver, việc chặn nhầm IP proxy server hoặc load balancer đứng trước webserver có thể dẫn đến website không thể truy cập được nữa thông qua proxy server hoặc load balancer.
Hướng dẫn cấu hình
*Bài viết này sử dụng hệ điều hành CentOS 7.
Trước tiên ta cài đặt wget để tải module mod_remoteip về từ apache:
yum install wget -y
yum update
Sau khi cài đặt xong ta tiến hành tải module mod_remoteip về:
wget https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/metadata/mod_remoteip.c
Ta chạy lệnh sau để compile module:
apxs -cia mod_remoteip.c
Cuối cùng ta chỉ cần điều chỉnh file httpd.conf để bật module này lên là có thể sử dụng
LoadModule remoteip_module /usr/lib/apache/mod_remoteip.so # sử dụng module
Cập nhật log format, log format mặc định thông thường cấu hình như sau
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Ta chuyển log format thành
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
Ta cấu hình file httpd.conf tùy thuộc vào server đứng trước webserver
- Nếu sử dụng internal proxy
RemoteIPHeader X-Client-IP
RemoteIPInternalProxy x.x.x.x/yy # IP hoặc IP range của server đứng trước webserver
- Nếu sử dụng remote proxy
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy x.x.x.x/yy # IP hoặc IP range của server đứng trước webserver
Ví dụ sử dụng proxy của vHost (remote proxy)
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 103.27.60.0/22
RemoteIPTrustedProxy 103.232.120.0/22
RemoteIPTrustedProxy 2401:78C0::/32
RemoteIPTrustedProxy 45.122.220.0/22
RemoteIPTrustedProxy 103.92.28.0/22
RemoteIPTrustedProxy 2401:78C0::/32
RemoteIPTrustedProxy 103.143.142.0/23
RemoteIPTrustedProxy 2405:5440:0000::/48
RemoteIPTrustedProxy 2405:54c0:0000::/48
RemoteIPTrustedProxy 103.231.188.0/22
RemoteIPTrustedProxy 2404:54C0::/32
RemoteIPTrustedProxy 103.83.156.0/22
RemoteIPTrustedProxy 2404:55C0::/32
RemoteIPTrustedProxy 103.143.208.0/23
RemoteIPTrustedProxy 2001:df1:9780::/48
RemoteIPTrustedProxy 137.220.54.105/32
RemoteIPTrustedProxy 45.77.129.107/32
RemoteIPTrustedProxy 149.28.180.100/32
RemoteIPTrustedProxy 158.247.221.251/32
RemoteIPTrustedProxy 217.69.10.197/32
RemoteIPTrustedProxy 192.248.164.234/32
RemoteIPTrustedProxy 45.63.117.217/32
RemoteIPTrustedProxy 139.84.137.89/32
RemoteIPTrustedProxy 139.84.235.211/32
RemoteIPTrustedProxy 144.202.98.211/32
Sau khi hoàn tất các bước cầu hình ta restart lại apache
systemctl restart httpd
Lưu ý mod_remoteip chỉ hỗ trợ apache 2.4 trở lên, nếu sử dụng apache phiên bản thấp hơn có thể tham khảo sử dụng mod_rpaf.
Đọc thêm nhiều bài viết hướng dẫn hơn tại: https://howto.nsupport.asia
Tham khảo các dịch vụ tại: https://vhost.vn
Leave A Comment?