Bảo mật căn bản cho Wordpress

Cá nhân mình gần như không quan tâm về bảo mật cho Wordpress, lý do thì có thể liệt kê như sau

  •  IP gốc của server đã được Cloudflare ẩn đi, thông qua hình thức proxy, rất khó hack, crack hay tấn công 1 trang nào đó, nếu không biết IP thực
  • Dùng VPS riêng, trên server chỉ có trang của cá nhân bạn, nên gần như tránh các tình huống bị hack local, lỗi liên quan tới phân quyền chmod
  • Các script cài đặt auto như Webinoly, Centmin Mod, EasyEngine, CyberPanel …. họ đã cấu hình phía server cả rồi, đa phần thêm 1 lớp bảo vệ cho wp-admin qua HTTP Authentication, Webinoly còn đưa file config.php ra một thư mục riêng, nhằm tránh bị hack …
  • Đa phần lỗi lúc này chỉ từ các plugin bạn sử dụng, có thể là hàng nuller, trôi nổi, bị gắn các code bậy bạ vào, hoặc đang dùng phiên bản quá cũ, nhiều năm không cập nhập, các lỗi đã công bố mà bạn vẫn không chịu sửa 😀 vấn đề này thì do cá nhân người dùng, không có gì để bàn

Khi Cloudflare đã ẩn đi được IP thực của server, chúng ta đã giảm đi ~80-90% các cuộc tấn công ngẫu nhiên, thêm script tự cài đặt, cấu hình căn bản phía server, thì gần như xác xuất bạn bị chủ động tấn công, xác xuất quá ít để phải tính toán

Thường mình chỉ ẩn đi cái link login của admin, thay wp-admin mặc định, thành login-admin-new

https://bibica.net/wp-admin/ -> https://bibica.net/login-admin-new/

Góc độ cá nhân thì mình không thích dùng các hình thức bảo mật kiểu Firewall hay HTTP Authentication từ phía server, vì mình thấy nó khá hạn chế, và cái quan trọng nhất là mình đổi server như cơm bữa, thậm chí có ngày mình đổi sang 3 dịch vụ khác nhau 😀 mỗi lần như thế cấu hình lại rất lú người 😀

Zero Trust của Cloudflare hiệu quả hơn HTTP Authentication, vì chặn từ tầng ngoài cùng, trước khi tới server gốc, cũng không cần cài đặt thêm plugin gì trên Wordpress, và do quản lý theo domain, nên bạn có đổi server sang nhiều dịch vụ khác nhau, chỉ phải cấu hình 1 lần, tính bảo mật cũng cao hơn, vì nó tương tự 2FA, bảo mật 2 lớp

Khi dạo Github, mình thấy vài lập trình viên, thậm chí khi viết code, giờ không thèm tạo quản trị admin, dùng thẳng Zero Trust thay thế hình thức login cho admin 😀

Cụ thể mình sẽ demo trên haproxy.tech, 1 trang đang dùng server tại Oracle và dùng qua Cloudflare

Cài đặt 2FA cho thư mục wp-admin

2023-07-06_21-49-54

Tạo tài khoản Cloudflare Zero Trust ->Access -> Applications -> Add an application

Bên trong bạn có thể thấy đã có sẵn domain vpn.bibica.net, nếu thích bạn có thể thử gõ vào trình duyệt, để xem tác dụng của Zero Trust 😀

2023-07-06_21-55-53

Chọn Self-hosted

2023-07-06_21-59-55

Application Configuration

  • Application name: đặt tên tùy thích
  • Session Duration: có thể set 1 tháng, để đỡ phải login lại nhiều lần

Application domain

  • Domain: haproxy.tech (thay domain của bạn vào)
  • Path: wp-admin (mặc định là wp-admin, còn nếu bạn đổi wp-admin thành cái gì thì ghi nó vào đây)

Sau đó ấn Next

2023-07-06_22-05-37

  • Policy name: đặt tên tùy thích
  • Action: Allow
  • Session duration: 1 month

Assign a group: tắt, để tránh nhầm rule với các trang khác

Create additional rules

Các rule Cloudflare hỗ trợ rất đa đạng, từ email, ip, cho tới đủ các token phức tạp, dùng đơn giản nhất, thì chúng ta quản lý nhận code qua email là đủ

  • Include Selector: chọn Emails
  • Include Value: điền email nhận code của bạn vào, như mình đang dùng là admin@haproxy.tech

Sau đó ấn Next

2023-07-06_22-12-06

Bước tiếp theo các thông tin CORS settings, Cookie settings, Additional settings, chọn tắt theo mặc định, sau đó ấn vào Add application

2023-07-06_22-13-11

Ở ngoài Applications, bạn đã thấy thêm Applications Login HAPROXY.TECH vừa được tạo

Lúc này, khi truy cập vào https://haproxy.tech/wp-admin/ bạn sẽ thấy màn hình đăng nhập từ Cloudflare Access

2023-07-06_22-16-30

Bạn phải điền đúng email đăng kí ở trên để lấy code gửi về, điền vào thì mới tới trang login của WordPress 😀

2023-07-06_22-39-10

Bước lấy code email thì như cài đặt ở trên, chúng ta set 1 tháng mới phải bắt buộc lấy code mới, nên cũng không gây rắc rối gì cho việc login admin đâu 😀

Về mặt lý thuyết, xác xuất ai đó biết được email bạn sử dụng cho ứng dụng này, sau đó có quyền truy cập vào email này, để lấy code, nó khá là hi hữu, nên trang wp-admin của bạn khá là an toàn 😀

2023-07-06_23-13-00

Bạn cũng có thể thêm 1 số rule khác vào, kiểu bắt buộc phải dùng IP Việt Nam, hoặc IP cụ thể nào đó, thì mới cho phép truy cập vào wp-admin điền email lấy code 😀

2023-07-06_23-14-36

IP không đúng vào wp-admin sẽ bị chặn ngay từ ngoài, trước khi tới bước điền email lấy code

Bảo mật login root trên server

Thường mình rất hiếm khi quan tâm tới chuyện bảo mật cho tài khoản root, cụ thể vì Cloudflare đã ẩn IP thực của bạn đi rồi, xác xuất ai đó rảnh rảnh, ngồi scan đủ các dãy IP, port mặc định 22 để biết nó đang mở, sau đó tự login bằng 1001 các passoword random, cho tới khi thành công 😀 quá là hi hữu

Tuy thế, vẫn có người quan tâm rất lớn tới chuyện này, cụ thể là tác giả của Slick­Stack, sau khi cài đặt Wordpress, ảnh phân quyền lại cho tài khoản root, tạo 1 tài khoản SFTP, nhìn phức tạp khiếp người, cài xong lú người luôn 😀

Quản trị hệ thống, mình thấy giải pháp đơn giản, hiệu quả nhất, là chỉ cho 1 IP cụ thể truy xuất vào SSH (port 22) bằng Firewall của Oracle là đủ

2023-07-06_23-39-09

Mức độ quản trị, ông nào quan tâm tới chuyện này thì mình nghĩ cũng cả đống VPS, IP riêng cả, dùng 1 con làm proxy đi web, chặn quảng cáo kiểu WireGuard Easy và NextDNS

Sau này mỗi lần cần vào server thì bật WireGuard IP đó lên rồi vào 😀 còn lại sẽ bị chặn hết từ ngoài firewall của Oracle (các dịch vụ hosting khác mình nhớ hiện tại đa phần đều miễn phí firewall tầng ngoài)

Cách này thì theo mình là triệt để và đơn giản nhất, đỡ phải nhớ cấu hình gì phức tạp, khi login chỉ phải bật thêm 1 cái app nhẹ hều từ WireGuard 😀

Còn vì lý do nào đó, IP WireGuard bị mất, không login vào server được thì login vào Oracle, xóa, sửa lại cái rule firewall cũ đi

Thực tế thì bạn cũng có thể dùng Cloudflare Zero Trust để cấu hình SSH (port 22) cho VPS, mỗi cái khi mình nhìn vào thấy cấu hình khá là lằng nhằng 😀 có vài chục con server nhớ cái nào là cái nào cũng mệt, nên thôi, set thẳng firewall từ dịch vụ hosting bạn đang dùng cho tiện

Tổng kết

Cloudflare đã ẩn IP thực, dùng VPS riêng thì xác xuất bị hack cực nhỏ, tỷ lệ chắc cỡ ra đường tại Việt Nam mà gặp Bill Gates, xong ảnh cho $1mil để ăn sáng í :]]

Nếu bạn đang dùng các scripts cài đặt tự động có ngoài thị trường, theo mình chỉ cần đặt 2FA cho wp-admin là đủ cho các nhu cầu bảo mật cho WordPress rồi

Liên quan tới bảo mật thì kiến thức của mình gần như = 0 bài này cũng phét là chính 😛


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!