Xây dựng hosting WordPress phần 1: Cài đặt máy chủ Linux và cấu hình bảo mật

Chào mừng bạn đến bài viết đầu tiên trong loạt bài về Hosting WordPress do chính tay bạn làm, trong đó chúng tôi sẽ hướng dẫn bạn từ công đoạn chọn hệ điều hành cho đến cài đặt các dịch vụ hỗ trợ chạy wordpress như PHP, Mysql, Nginx

Danh sách serie các bài viết của chủ đề này:

[display-posts tag=”hwyourself”]

Với cách thiết lập này bạn có thể chạy cùng nhiều lúc website trên máy chủ ảo VPS, miễn là bạn đăng ký gói VPS đủ mạnh để chạy nhiều Website

Trong loạt bài hướng dẫn này chúng tôi sẽ sử dụng dịch vụ Digital Ocean 512MB droplet ($5/month), nhưng bạn cũng có thể chọn Linode, Amazon EC2, hoặc một trong các nhà cung cấp nhiều máy chủ ảo khác. Bất kể bạn chọn dịch vụ nào, thì các bước tạo ra máy chủ ban đầu nên rất giống nhau. Vì vậy chúng ta hãy bắt đầu xây dựng máy chủ mới của bạn!

Trong thực tế khi tôi áp dụng gói 5$/1tháng thì chạy khoản 7-10 website tầm trung, tức là mỗi website có khoản 30k-40k user truy cập 1 tháng thì vẫn chạy tốt

Chọn Phiên bản Linux

Hiện nay có hai dòng máy chủ được dùng phổ biến đó là Unbuntu và Centos, trong hướng dẫn này chúng tôi sẽ dùng Centos, còn câu hỏi tại sao là Centos thì nếu bạn nào thắc mắc cứ để comment bên dưới!

Sau khi login vào Digital Ocean bạn sẽ có giao diện như bên dưới

Trang chủ DO

bạn bấm chuột vào chữ Create Dropler bên phía góc phải màn hình thì sẽ có dạng như thế này

Gioi thieu DO

như hình trên thì tôi chọn Centos phiên bản 7.3.x, với chi phí là 5$ sau đó bạn kéo chuột xuống phía dưới màn hình bấm button “Create” để tạo mới một droplet, chú ý Droplet có nghĩa là một con VPS, kết quả sẽ có dạng thế này

bạn đợi khoãng hai hay ba phút gì đó cho dịch vụ DO tạo VPS cho bạn sau đó bạn vào mail kiểm tra email từ DO gửi thông tin máy chủ bạn vừa tạo, thông tin nó có dạng thế này

bạn chỉ cần chú ý hai tham số đó là

IP Address: 45.55.162.222
Username: root
Password: 0a486f05dd29f00c

Sau khi có nó thi bạn có thể dùng terminal để kết nối với máy chủ, còn nếu bạn dùng Windows thì có thể dùng PuTTY để kết nối, để hiểu cách sử dụng PuTTY bạn có thể xem các bài viết này [display-posts tag=”putty” posts_per_page=”20″] do tôi đang dùng MacOS nên chỉ cần mở terminal lên như sau

bởi vì lần đầu tiên bạn kết nối máy chủ nên nó sẽ bắt bạn đổi mật khẩu ban đầu, sau khi bạn đổi mật khẩu thành công thì lúc này bạn đang ở trên server đó với quyền cao nhất đó là root, do đó bạn có thể cài đặt bất cứ cái gì!

Cập nhật phần mềm

Như bất cứ Hệ điều hành nào khác, trước tiên bạn cần phải cập nhật những phần mềm hiện có của HĐH lên phiên bản mới nhất, để làm điều đó bạn chỉ cần chạy lệnh sau:

yum update -y

sau đó bạn cần cài đặt các thành phần cần thiết giúp chạy các dịch vụ sau này của Centos, bạn chỉ cần copy đoạn mã dưới đây vào terminal của bạn

sudo yum install epel-release -y

sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel \
t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel \
libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel \
libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel \
mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel \
libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make -y

nếu bạn muốn cập nhhật HĐH mới nhất của Centos thì có thể xem trên trang chủ nó tại đây nhưng tôi nghĩ lúc này bản 7.3.x là mới nhất rồi

Tải tập tin ssh public key

Như bạn biết thì khi kết nối server thì có 2 cách đó là dùng password hoặc là ssh key, để đảm bảo an toàn hệ thống thì chúng tôi khuyên bạn nên dùng ssh key, sau đó tắt tính năng đăng nhập thông qua password, để làm điều đó trước tiên ban cần tạo ra ssh key, nếu bạn dùng Linux/Unix thì chỉ cần chạy lệnh sau

ssh-keygen

Nó sẽ hỏi bạn muốn lưu private key này vào đâu, mặc định nó sẽ lưu vào /home/user/.ssh. Bạn có thể để trống và Enter. Tiếp tục nó sẽ hỏi bạn có muốn thiết lập keypharse không, nếu muốn thì nhập keypharse cần thiết lập vào rồi Enter.

Sau khi tạo xong, mặc định nó sẽ hiện ra thế này:

Trong đó bạn có thể thấy nó có ghi đường dẫn lưu file private key (id_rsa) và file public key (id_rsa.pub). Để xem được public key, bạn cứ mở file đó lên mà đọc nhé. với Linux/Unix thì bạn chỉ cần chạy lệnh sau:

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZhGlW5I5BvTU7dnFXTjTockMhuR5hwyUAguLJYtPJ82fcIT1VfhacMauNTRzzXWtTFff1ELspuWt00IQnGmzWRaB6vgB0ggxmAHRJ8Z87hxNmhTbkOmvYah1f0SFAaQ+nN7M1e7hU2lY+WdD/R07PNZhocZtCk9ElK7owMFrJQDvej9KcIzFDpZ9M02YU12NBN/hzygeHo9U0G9xeHLuVwIa7yDDOBGBThwRpGqnFCiejccaJX9UeQo1dsyMchZvCUfxXec8IdS6cM278U906P00JrHu65v5m7HtlOmWP8iQtLw+z37epsNC8GjxGeBqxubRwzdaGaxUDMivD8mFj [email protected]

phanbook at Phanbooks-MacBook-Air in ~/github/gsite on master*

Thêm public key vào VPS

Bây giờ hãy đăng nhập vào VPS với user mà bạn cần thêm key (thường thì là root, nhưng nếu VPS bạn có nhiều user thì sẽ cần thêm key cho tất cả user đó).

Có 2 cách để tạo authorized_keys, cách thứ nhất là bạn tạo thủ công như sau

Cách1: Sau đó gõ các lệnh dưới đây để tạo thư mục .ssh/ và file authorized_keys trong thư mục đó:

mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Cách2: Cách này tương tự như cách bạn tao ssh key ở trên, bạn chỉ việc gõ lại lệnh này trên máy chủ bạn đăng nhập với lệnh sau:

ssh-keygen

sau đó làm vài thao tác trên màn hình nữa thế là bạn đã tạo xong thư mục .ssh trên máy chủ của bạn.

kế đến mở tập tin authorized_keys trong thư mục .ssh ở thư mục gốc của user và copy toàn bộ ký tự của public key vào, để mở nó bạn dùng tool vi

vi ~/.ssh/authorized_keys

nếu bạn nào chưa biết vi là gì có thể xem thêm bài các bài viết này để hiểu thêm cách dùng nó:

[display-posts tag=”vi”]

sau đó bạn copy toàn bộ ký tự của public key vào trong đó rồi lưu lại thế là xong. Để kiểm tra xem nó đã hoạt động chưa, hãy đăng nhập lại vào SSH với tài khoản vừa thêm SSH Key. Nếu bạn đăng nhập bằng Linux/MacOS thì nó sẽ tự hỏi keypharse của bạn, còn nếu bạn đăng nhập ở Windows thông qua các phần mềm khác như PuTTY thì khi đăng nhập, bạn phải trỏ file private key vào để nó chứng thực. Trong trường hợp của tôi là MacOS

Tôi thử kiếm tra lại coi thử có thành công hay không

ssh [email protected]

Tuyệt vời, nó chạy ngon, thường thì bạn sẽ phải tắt tài khoản root và tạo thêm tài khoản mới, nhưng ngay lúc này chúng tôi nghĩ nó chưa cần thiết với bạn

Fail2ban

Fail2Ban là một ứng dụng chạy nền theo dõi log file để phát hiện những địa chỉ IP đăng nhập sai password SSH nhiều lần. Sau đó, Fail2Ban sử dụng iptable firewall rules để block ngay địa chỉ IP với một khoảng thời gian định trước.

Để cài dặt fail2ban bạn chỉ cần chạy 2 câu lệnh dưới đây

yum install epel-release -y
yum install fail2ban -y

sau khi cài đặt xong bạn cần tạo một tập tin với tên là jail.local, để làm điều đó chạy lệnh sau

sudo vi /etc/fail2ban/jail.local

sau đó dán đoạn code bên dưới này vào trong đó

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

sau đó bạn restart lại dich vụ fail2bain qua lệnh sau:

sudo systemctl restart fail2ban

Cuối cùng check lại iptables xem đã có rule của Fail2Ban chưa:

[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
[[email protected]-nyc3-01 ~]#

như kết quả trên thì nó đã có rule của fail2bain(2b-sshd) rồi

Sexy-bash

Một điều cuối cùng nữa, bạn có thể cài hay không thì tuỳ bạn thông thường mặc định console trên máy chủ nhìn không có đẹp cho lắm, do đó tôi thường cài dặt thêm bash shell tại đây, hoặc bạn chỉ cần chạy lệnh dưới đây

(cd /tmp && git clone --depth=1 https://github.com/duythien/sexy-bash-prompt && cd sexy-bash-prompt && make install) && source ~/.bashrc

một khi bạn cài xong thì console của bạn nhìn lúc này trong cool hơn, đặc biệt nếu bạn có dùng git để tracking code

Kết luận

Trong phần này chúng tôi đã hướng dẫn bạn cách tạo một con VPS(máy chủ) mới toanh, cũng như cách kết nối vào nó như thế nào, trong bài kế tiếp chúng tôi sẽ hướng dẫn bạn cách cài đặt Nginx, PHP-FPM and Mysql hay gọi tắt là LEMP

Leave a Reply

Your email address will not be published.