Cloudflare nhận IP thực PHP

Cloudflare là một dịch vụ bảo mật trang web từ một công ty cùng tên cung cấp mạng phân phối nội dung và các dịch vụ giảm thiểu DDoS. Vì một số lý do chính đáng, bạn muốn biết Địa chỉ IP Máy khách Thực của khách truy cập của mình

Với Cloudflare giống như bất kỳ proxy nào, máy chủ web sẽ không thể biết địa chỉ IP của khách truy cập là gì. Điều này có thể mở ra một số vấn đề bảo mật vì quyền truy cập Apache và nhật ký lỗi của bạn sẽ không hiển thị đúng IP mà thay vào đó là IP của cơ sở hạ tầng Cloudflare

Cách cài đặt PHP 8 trên Ubuntu 20. 0

Vui lòng bật JavaScript

Cách cài đặt PHP 8 trên Ubuntu 20. 04 LTS và Debian 10

Việc xác định giới hạn IP trong cấu hình máy chủ web của bạn cũng trở nên khó khăn,. htaccess hoặc thậm chí trong các tập lệnh PHP

Địa chỉ IP của Máy khách Thực Sử dụng CF-Connecting-IP

Để giải quyết vấn đề này, Cloudflare gửi IP máy khách thực dưới dạng CF-Connecting-IP trong tiêu đề HTTP. CF-Connecting-IP cung cấp địa chỉ IP của máy khách [khách truy cập] thực cho máy chủ web gốc. cf-connecting-ip chứa Cloudflare IP 2a06 đặc biệt. 98c0. 3600. 0. 0. 0. 0. 103 khi yêu cầu bắt nguồn từ yêu cầu phụ của Công nhân Cloudflare thay vì IP thực của khách truy cập

Điều này hoạt động tương tự như tiêu đề x-forwarded-for được sử dụng bởi các máy chủ proxy để cho biết nguồn gốc của bất kỳ máy chủ HTTP nào liên quan đến việc chuyển tiếp yêu cầu giữa người dùng và nguồn gốc

Có một số khác biệt giữa tiêu đề CF-Connecting-IP và x-forwarded-for. Với x-forwarded-for, bạn có thể thấy một hoặc nhiều bộ địa chỉ IP trong tiêu đề này trong khi CF-Connecting-IP sẽ luôn chứa một IP

Nếu Cloudflare không nhận được tiêu đề x-forwarded-for từ máy khách, nó sẽ chuyển giá trị tương tự như CF-Connecting-IP cho máy chủ web gốc

Cloudflare khuyến nghị nhật ký hoặc ứng dụng của bạn xem xét CF-Connecting-IP hoặc True-Client-IP thay vì X-Forwarded-For vì CF-Connecting-IP và True-Client-IP có định dạng nhất quán chỉ chứa một IP

Cách xử lý CF-Connecting-IP trên máy chủ gốc

Chúng tôi có thể truy xuất giá trị của CF-Connecting-IP trên máy chủ web gốc bằng cách bật mod mod_remoteip của Apache

Trước tiên, bạn cần kích hoạt remoteip trên máy chủ của mình. Trong Ubuntu/Debian cũng như các hệ thống dựa trên CentOS/RHEL chạy các lệnh sau

$ sudo a2enmod remoteip

Sau đó khởi động lại Apache

$ sudo systemctl restart apache2

Chỉnh sửa cấu hình Apache để xác định proxy đáng tin cậy

Để chuyển địa chỉ IP của máy khách thực từ Cloudflare sang Apache, chúng ta cần xác định chỉ thị RemoteIPHeader là CF-Connecting-IP trong tệp cấu hình remoteip remoteip. conf

Tạo điều khiển từ xa. conf bằng cách chạy lệnh này trong hệ thống Ubuntu/Debian Linux

$ sudo nano /etc/apache2/conf-enabled/remoteip.conf

Trên các hệ thống CentOS/RHEL Linux chạy cái này

$ sudo nano /etc/httpd/conf.d/remoteip.conf

Thêm RemoteIPHeader CF-Connecting-IP làm dòng đầu tiên và sau đó là danh sách các proxy Cloudflare đáng tin cậy bên dưới nó dưới dạng chỉ thị RemoteIPTrustedProxy

Chúng tôi thực hiện những điều trên để giảm thiểu tin tặc đang cố giả mạo CF-Connecting-IP trong tiêu đề HTTP bằng cách đảm bảo rằng Apache biết proxy nào đáng tin cậy

Bạn có thể tìm thấy danh sách cập nhật các địa chỉ IP này cho Cloudflare IPv4 Proxies và Cloudflare IPv6 Proxies tương ứng

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/13
RemoteIPTrustedProxy 104.24.0.0/14
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22
RemoteIPTrustedProxy 2400:cb00::/32
RemoteIPTrustedProxy 2606:4700::/32
RemoteIPTrustedProxy 2803:f800::/32
RemoteIPTrustedProxy 2405:b500::/32
RemoteIPTrustedProxy 2405:8100::/32
RemoteIPTrustedProxy 2a06:98c0::/29
RemoteIPTrustedProxy 2c0f:f248::/32

Lưu và thoát rồi khởi động lại Apache

$ sudo systemctl restart apache2

Ghi chú. Nếu Apache không phát hiện CF-Connecting-IP trong tiêu đề HTTP [e. g. nếu Cloudflare bị tắt hoặc không được định cấu hình cho một Máy chủ ảo cụ thể], nó sẽ quay trở lại Địa chỉ từ xa REMOTE_ADDR

Nếu Apache phát hiện CF-Connecting-IP nhưng nó đến từ một IP không được xác định trong RemoteIPTrustedProxy, thì Apache sẽ quay trở lại REMOTE_ADDR

Xác minh Nhật ký lỗi và quyền truy cập Apache

Nếu bạn thấy rằng nhật ký truy cập và lỗi của mình đang hiển thị IP proxy Cloudflare thay vì IP người dùng từ xa thì bạn cần hoàn thành các bước này

Ghi chú. Bạn có thể xác minh bằng cách truy cập trang web của mình sau đó kiểm tra nhật ký cho IP của bạn chẳng hạn

$ sudo tail /var/log/apache2/access.log -n 20

Để khắc phục sự cố trong trường hợp không phải IP của bạn đang được ghi nhật ký, hãy chỉnh sửa apache2. conf như vậy

$ sudo nano /etc/apache2/apache2.conf

Tìm kiếm gõ CTRL + W để tìm kiếm LogFormat

Định dạng nhật ký mặc định sẽ giống như bên dưới

________số 8

Thay đổi biến %h thành %a, là IP máy khách như được xác định bởi mô-đun mod_remoteip. Biến %h là IP từ xa

Các mục LogFormat của bạn bây giờ sẽ trông như thế này

LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Lưu và thoát tệp sau đó khởi động lại Apache

$ sudo systemctl restart apache2

Truy cập lại website sau đó xem nhật ký truy cập xem hiện tại đã đăng nhập đúng IP chưa

$ sudo tail /var/log/apache2/access.log -n 20

Nhận địa chỉ IP của khách hàng thực từ bên trong PHP

Để lấy địa chỉ IP của máy khách thực trong PHP bằng cách sử dụng như sau

$ sudo systemctl restart apache2
2

Chúng tôi truy xuất $_SERVER[“REMOTE_ADDR”] để xác minh rằng địa chỉ đó có chứa địa chỉ IP proxy Cloudflare thực tế đề phòng trường hợp kẻ xấu giả mạo tiêu đề CF-Connecting-IP nếu họ đã kết nối trực tiếp với máy chủ

Nhận danh sách địa chỉ IP Cloudflare từ các liên kết bên dưới

  • https. //www. đám mây. com/ips-v4
  • https. //www. đám mây. com/ips-v6

Giới thiệu. [ 1 ]

Tìm thấy bài viết này thú vị?

Làm cách nào tôi có thể nhận địa chỉ IP cục bộ trong PHP?

Chúng tôi sẽ được yêu cầu hai phương pháp được đề cập bên dưới. .
Hàm getHostByName[]. Nó nhận địa chỉ IPv4 tương ứng với tên máy chủ Internet nhất định
Hàm getHostName[]. Nó lấy tên máy chủ tiêu chuẩn cho máy cục bộ

CloudFlare có đăng nhập IP không?

Vì CloudFlare đóng vai trò là proxy nên theo mặc định, tất cả các lượt truy cập vào trang web và ứng dụng web của bạn sẽ được ghi lại bằng địa chỉ IP của CloudFlare . Để khắc phục điều này, cài đặt mô-đun Apache mod_cloudflare sẽ đảm bảo rằng địa chỉ IP thực của khách truy cập được ghi lại và hiển thị.

IP khách hàng thực sự là gì?

IP-Máy khách-True. được dùng để xác định địa chỉ IP của máy khách kết nối với máy chủ web trong trường hợp sử dụng proxy HTTP hoặc bộ cân bằng tải . Mã định danh tài nguyên thống nhất HTTP [URI]. URI được xây dựng theo cú pháp chuẩn được sử dụng để hỗ trợ trao đổi thông tin trên Internet.

CF kết nối IP là gì?

CF-Connecting-IP cung cấp địa chỉ IP máy khách kết nối Cloudflare với máy chủ web gốc . Tiêu đề này sẽ chỉ được gửi trên lưu lượng truy cập từ biên của Cloudflare đến máy chủ web gốc của bạn. Để biết hướng dẫn về cách ghi lại địa chỉ IP ban đầu của khách truy cập, hãy tham khảo Khôi phục IP ban đầu của khách truy cập Mở liên kết bên ngoài.

Chủ Đề