Bảo mật và cải thiện tốc độ web bằng Cloudflare

Bảo mật và cải thiện tốc độ web bằng Cloudflare

Cloudflare là công cụ dẫn đầu trong ngành phân phối nội dung, cải thiện tốc độ cho hàng triệu trang web đến hiện nay. Điều tuyệt vời nhất ở đây là bạn có thể sử dụng công cụ này để nâng cấp trang web miễn phí mà vẫn cực kì hiệu quả. Bài viết này sẽ nói đến những tính năng, cả miễn phí và trả phí của Cloudflare để bạn có thể cải thiện trang web của mình theo cách phù hợp nhất.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 1

Giới thiệu CloudFLARE

Thật ngạc nhiên khi nhà cung cấp dịch vụ này ban đầu lại không phải là một công cụ tăng tốc hiệu suất, mà được bắt nguồn từ Project Honeypot, được coi là một dịch vụ spam và hack. Trên thực tế, đây lại chính là những thế mạnh của Cloudflare: phát hiện DDoS và bảo mật. Công cụ này sẽ ghi chép địa chỉ IP của người truy cập, payload, dữ liệu yêu cầu và mật độ yêu cầu để phát hiện các phần tử độc hại.

Cloudflare được sử dụng như proxy server trung gian cho website và điều phối lượng truy cập vào website. Cloudflare còn có thể giảm tải những mong muốn không đáng có cho các server, hiệu quả đến mức DDoS còn không thể chạm tới website gốc. Cloudflare cũng cung cấp tùy chọn Always Online để lưu trữ phiên bản trang web của người dùng, cùng với việc tải bản hạn chế cho người dùng trong trường hợp mất server nguồn gốc – khi trang web gốc trả về lỗi 5xx hoặc 4xx. Công cụ này còn có một bộ đệm trang đầy đủ.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 2

Tính năng Always Online

Qua phần giới thiệu thì các bạn cũng có thể thấy Cloudflare mạnh mẽ như thế nào: nó có thể là “cứu tinh” cho server khi trang web phải tải nặng cũng như các trường hợp lỗi server thường gặp và giúp developer của trang có nhiều thời gian để nghĩ ra cách khắc phục lỗi hơn. Công cụ này hoàn toàn có thể sử dụng miễn phí. Vẫn có gói phải trả tiền, nhưng riêng mức free của Cloudflare cũng có nhiều tính năng rất ổn mà bạn nên tìm hiểu. Thực ra, về tốc độ thì Cloudflare không phải là nhất, nhưng nói thế nào đi nữa thì đây vẫn là CDN giá trị nhất trên thị trường.

Cách cài đặt Cloudflare

Việc đưa trang web lên Cloudflare tương đối dễ cho người dùng. Đầu tiên, bạn sẽ phải đăng kí tài khoản tại (cloudflare.com)[http://www.cloudflare.com]. Sau đó, bạn phải nhập trang web vào và nhấp vào “Scan DNS Records”. Trong khi hệ thống scan IP của miền và các thông tin khác, bạn có thể tham khảo video hướng dẫn. Khi hoàn thiện, bạn sẽ nhận được nameserver mới để cập nhật với Cloudflare.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 3

Thêm website vào Cloudflare

Sau khi cập nhật nameserver với Cloudflare, bạn phải chờ CloudFlare phát hiện ra tên miền của bạn đã cập nhật DNS để bắt đầu sử dụng. Quá trình này có thể kéo dài đến 24 tiếng. Điều này cũng có nghĩa là bạn đang trao cho Cloudflare toàn bộ quyền kiểm soát miền của bạn. Nếu bạn đã có email trên miền (MX record), bạn cũng cần chuyển hết các record này cho Cloudflare. Các miền phụ (nếu có) cũng cần phải được thiết lập vào các record A tương ứng trên dashboard của Cloudflare.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 4

Cloudflare DNS dashboard

Tất cả record trên miền phải được dời/copy tới Cloudflare. Một số nhà cung cấp dịch vụ hosting sẽ đơn giản hóa / tự động hóa quá trình chuyển đổi này cho bạn. Với mỗi record của miền, bạn nên để tất cả lưu lượng truy cập qua trực tiếp server, nhưng cũng có thể tắt tính năng của Cloudflare trong một số trường để sửa chữa hay thay đổi trang web.

Thiết lập Encryption

Chứng chỉ bảo mật SSL cũng là một phần trong gói miễn phí của Cloudflare. Có bốn lựa chọn cho thiết lập này, bạn có thể thấy ngay dưới tab Crypro trên dashboard.

  • OFF – Tất cả truy cập sẽ được dẫn qua giao thức không bảo mật (http)
  • FLEXIBLE – bất kể giao thức của server của bạn là gì và có chứng chỉ SSL hay không, Cloudflare sẽ đưa tất cả các trang tới người dùng qua https. Các kết nối từ Cloudflare đến server gốc sẽ đi qua một kết nối không bảo mật.
  • FULL – Cloudflare sẽ tương tác với server thông qua https, nhưng sẽ không chấp nhận chứng chỉ bảo mật trên trang gốc. Các kết nối từ Cloudflare đến người dùng sẽ qua https.
  • FULL STRICT – Cloudflare sẽ yêu cầu chứng chỉ SSL hợp lệ trên máy chủ gốc. Các kết nối từ Cloudflare đến người dùng sẽ qua https.

Với các cài đặt này, bạn cần chắc chắn rằng bạn đã tạo ra một thiết lập hợp lý vì có đến hai lớp trung gian giữa người truy cập và nội dung máy chủ của bạn, vì vậy nếu bạn sai sót thì  có thể dẫn đến vòng lặp chuyển hướng làm chậm trang web. Cloudflare cũng cung cấp các tùy chọn mua chứng chỉ custom. Đối với gói premium, người dùng nếu cần thêm bảo mật hoặc quan tâm hơn đến hình ảnh thị trường của họ, có thể chọn upload chứng chỉ custom/premium.

Bảo mật website

Đây là một điểm cộng vô cùng lớn của Cloudflare: công cụ này cho đi miễn phí những dịch vụ cực kì giá trị. Bảo vệ khỏi DDoS là một dịch vụ cao cấp và không phải lúc nào cũng có ở những nhà CDN khác, ngay cả đối với khách hàng trả tiền. Cloudflare cung cấp bảo vệ DDoS không giới hạn kể cả ở gói miễn phí, cùng với một số công cụ chuyên môn để bảo vệ các trang web ở cấp độ cơ bản để chặn cách phần tử độc hại tiếp cận trang. Nó còn cung cấp giới hạn tỷ lệ – tức điều chỉnh các lượt truy cập theo quy tắc tùy chỉnh, do người dùng xác định. Ngoài ra còn bao gồm các rule cho tường lửa, country block, kiểm tra tính toàn vẹn của trình duyệt, bảo vệ captcha và hơn thế nữa.

Hiện nay, các botnet xuất hiện rất nhiều trên internet. Các trang web hoặc máy chủ mới cài đặt dễ bị nhấn chìm bởi các loại virus xâm nhập dù trong vài phút trực tuyến, khi mà comment spam hay referrer spam lan tràn, các tấn công POST và các kiểu tấn công chậm sử dụng các phương tiện không chính thống không phải là hiếm. Nhiều lúc các biện pháp bảo vệ có thể quyết định sự sống còn của các trang web với quy mô nhỏ hoặc trung bình.

Cloudflare còn bao gồm bảo vệ scraping bằng cách từ chối một số dữ liệu quan trọng nhất định đối với các lượt truy cập đáng ngờ hoặc làm xáo trộn email. Gói miễn phí đã có khá nhiều dịch vụ và chức năng rồi, nhưng nếu quan tâm, bạn có thể tham khảo gói premium của họ với nhiều lựa chọn hơn nữa.

Tốc độ và hiệu suất

Theo mặc định, với Cloudflare, bạn sẽ nhận được bộ đệm ẩn nội dung tĩnh – JavaScript, phông chữ, stylesheet và thậm chí cả hình ảnh. Bạn cũng có thể đặt quy tắc cho hết hạn bộ nhớ cache. Đối với các hệ thống CMS khác nhau, có các plugin có thể kết nối với Cloudflare để lọc bộ nhớ cache từ bên trong trang web.

Các tài nguyên tĩnh này được sử dụng trên cơ sở hạ tầng của nền tảng DNS của Cloudflare, và sau đó được đưa tới người truy cập từ mạng lưới các trung tâm dữ liệu trên toàn cầu, tùy thuộc vào vị trí của người truy cập.

Tài nguyên có thể được lưu trữ (hoặc tìm nạp từ nguồn gốc) tùy thuộc vào chuỗi truy vấn hoặc trên các tiêu đề bộ đệm được đặt bởi máy chủ gốc của bạn. Ví dụ: trong PHP bạn có thể đặt hết hạn bộ đệm như thế này:

header(‘Cache-Control: max-age=3600’);

Nếu thế này vẫn chưa đủ, bạn có thể xem xét bỏ Pragma, Expires hoặc Cache Control header.

header_remove(‘Pragma’);

header_remove(‘Expires’);

header_remove(‘Cache-Control’);

Bạn cũng có thể thực hiện điều này ở cấp độ máy chủ. Trong nginx, các quy tắc này sẽ được thiết lập trong một khối / tệp máy chủ ảo:

if ($http_cookie ~* “some-cookie”) {

#removing headers that stop Cloudflare cloudflare from caching

more_clear_headers ‘Pragma’;

more_clear_headers ‘Expires’;

more_clear_headers ‘Cache-Control’;

add_header Cache-Control “no-cache, no-store, max-age=0”;

}

location ~* “(!?.*some-url-path.*)” {

#removing headers that stop Cloudflare cloudflare from caching

more_clear_headers ‘Pragma’;

more_clear_headers ‘Expires’;

more_clear_headers ‘Cache-Control’;

add_header Cache-Control “max-age=3600”;

}

Ai dùng Apache sẽ đặt những thứ tương tự thế này vào tệp .htaccess của họ:

Header unset Pragma env=LONGCACHE

Header unset Expires env=LONGCACHE

Header set Cache-Control “max-age=3600” env=LONGCACHE

Rõ ràng, một số cookie và đường dẫn url ở trên cần phải được thay thế bằng các giá trị phù hợp. Các quy tắc này cũng cần thiết cho bộ nhớ đệm trang, mà bài viết sẽ đề cập dưới đây. Bạn có thể chọn thu nhỏ CSS, JS và HTML của mình. Cũng có tùy chọn để tận dụng triệt để AMP cho các liên kết AMP đi. Ngoài ra, còn có một tính năng Rocket Loader beta gói và xử lý JS không đồng bộ, sử dụng trình duyệt lưu trữ cục bộ của bộ nhớ cache để lưu trữ nó. Tuy nhiên, hãy cẩn thận với phương pháp này vì những lỗi nhỏ trong thứ tự tải tài nguyên có thể làm vỡ cả trang web của bạn.

Khách hàng trả tiền sẽ có thêm tính năng Railgun để giải quyết điểm yếu chính của các nội dung động trong hệ thống bộ nhớ đệm. Tính năng này sẽ tăng tốc độ phân phối nội dung động từ máy chủ gốc. Railgun yêu cầu cài đặt phần mềm trên máy chủ gốc và hoạt động thông qua việc nén nội dung được phân phối và duy trì một kết nối liên tục duy nhất cho nhiều request đồng thời, từ đó giảm thiểu độ trễ kết nối mạng.

Cái này tương đồng đến tính năng ghép kênh của giao thức HTTP/2 – nhưng ở đây là giữa máy chủ gốc và Cloudflare. Ngoài ra, còn có khả năng nén / tối ưu hóa hình ảnh cho gói Pro, theo cơ chế Polish và Mirage. Trong tab Traffic, có tối ưu hóa tuyến Argo trên các trung tâm dữ liệu của Cloudflare trên toàn cầu và các tùy chọn cân bằng tải.

Bộ nhớ đệm HTML cho toàn trang web

Bộ nhớ đệm toàn trang có nghĩa là lưu trữ toàn bộ đầu ra của hệ thống của bạn – CMS, ứng dụng, hệ thống blog và tất cả các thứ khác.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 5

Thiết lập bộ nhớ đệm toàn trang

Cache Level rule của bộ nhớ Cache sẽ lưu trữ toàn bộ nội dung HTML của trang web, cùng với tất cả các tài nguyên khác. Bằng cách tạo ra các rule này, bạn có thể giải quyết vấn đề lưu trữ/loại trừ bộ nhớ cache phức tạp và cung cấp ngay cả nội dung được tạo động với độ trễ tối thiểu. Cải tiến tới trong Time To First Byte (TTFB) không phải là không thể.

Các rule này hỗ trợ các ký tự đại diện và cần được sắp xếp theo thứ tự ưu tiên:

*some-website.com/static/*

[/static/ subdirectory for static HTML pages]

*some-website.com/*.shtml

[.shtml file extension to signify HTML that is static]

*some-website.com/*?*static=true*

[adding static=true query parameter]

Nếu bạn kết hợp quy tắc này với cài đặt Bypass như trong hình ảnh dưới đây, bạn có thể tách riêng biệt các phần của trang web cần được lưu trữ/bỏ qua khỏi bộ đệm trong các điều kiện khác nhau – chẳng hạn như phần quản trị viên, v.v.

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 6

Cache bypass

Nếu bộ đệm trang đang hoạt động, ta sẽ thấy trạng thái CF-Cache: HIT trong số các tiêu đề phản hồi trong trình kiểm tra của trình duyệt.Người dùng trả tiền có thêm tùy chọn bộ nhớ đệm hoặc bypass bộ đệm tùy thuộc vào cookie. Tại đây, tên cookie có thể được đặt bằng ký tự đại diện và nội dung cũng có thể được lưu trong bộ nhớ cache tùy thuộc vào loại thiết bị. Các rule này tinh vi hơn, và không cần thiết cho mọi loại trang web. Người dùng miễn phí có sẵn ba rule của trang, nhưng có thể mua thêm rule nếu cần.

HTTP/2 và tính năng server push

Cải thiện tốc độ và bảo mật trang web bằng Cloudflare 7

Trình kiểm tra trình duyệt hiển thị quá trình tải tài nguyên song song và không đồng bộ trên giao thức HTTP/2. Theo mặc định của Cloudflare, khách hàng doanh nghiệp và doanh nghiệp dùng gói miễn phí vẫn được bật HTTP / 2 – vốn là một cải tiến hơn hẳn so với giao thức cũ HTTP / 1.1 – bao gồm:

  • Ghép kênh (multiplexing) – gửi nhiều tài nguyên trong một kết nối một cách không đồng bộ
  • Nén tiêu đề (header compression)
  • Server push –máy chủ dự đoán trước các request và gửi dữ liệu trước khi trình duyệt yêu cầu chúng.

Mặc dù Cloudflare nếu đánh giá trên từng trường hợp khác nhau thì vẫn cần cải thiện, nhưng công bằng mà nói, giá trị mà công cụ này cung cấp (đặc biệt là mức miễn phí) chắc chắn nằm trên mức trung bình.

Kết luận

Bài viết đã đề cập đến cách sử dụng và định cấu hình Cloudflare với một trang web để cải thiện tốc độ cũng như bảo mật của trang, cùng với bảo mật DDoS. Dĩ nhiên cũng phải nói rằng một trang web được sử dụng CDN không phải là kiên cố 100%. Trên thực tế, nó còn có thể tạo ra các lỗ hổng mới. Đã xảy ra trường hợp lỗi của con người khiến các dịch vụ Cloudflare bị ảnh hưởng. Trong trường hợp với nhà cung cấp mạng Telia của Thụy Điển vào năm 2016, đó là một vấn đề nghiêm trọng đối với internet của cả châu Âu.

Ước tính cho thấy rằng các dịch vụ Cloudflare được sử dụng bởi 6,2% trong số 1 triệu trang web hàng đầu thế giới. Dù sao, chúng ta không nên sợ CDN vì những sự cố như thế này. Các sự cố như vậy không xảy ra thường xuyên, mà vẫn góp phần xây dựng một mạng lưới mạnh mẽ hơn nhiều.