• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
FurryOfficial

Hướng dẫn Cẩm nang bảo mật & tối ưu Ubuntu Server để chạy server MC - The Complete Guide

FurryOfficial

THÀNH VIÊN
Tham gia
11/10/2021
Bài viết
267
Trong bài viết này mình sẽ tập trung vào Ubuntu Server cho các bạn chạy Selfhost/Dedi/BareMetal. Các bạn dùng VPS cũng có thể ngó qua !
LƯU Ý: Bài viết này cho rằng bạn đang sử dụng Ubuntu Server 22.04 LTS (Không GUI) trên nền x64 và BẠN ĐÃ CÓ CÁC KIẾN THỨC VỀ LINUX CƠ BẢN.

I. Bảo mật
1. SSH

Sau khi cài xong Ubuntu Server, bạn nên config lại SSH để tránh bị bot dò port để brute-force mật khẩu và các vấn đề bảo mật khác.
1.1. SSH Port
Đầu tiên, chúng ta cần đổi port SSH sau khi đã triển khai xong hệ thống Ubuntu Server.
Các bạn gõ lệnh sau vào Terminal:
sudo nano /etc/ssh/sshd_config

Sau đó, bạn cần tìm dòng #Port 22, Xóa # ở đầu dòng và chuyển 22 thành số port bạn muốn. Như mình sẽ để 5958:
43751


Sau đó Ctrl O, Ctrl X để thoát nano và khởi động lại service ssh: sudo service ssh restart.
Bạn có thể test port mới bằng câu lệnh ssh username@server_ip_address -p 5958

1.2. Sử dụng SSH Key thay cho mật khẩu
Mật khẩu ở năm 2023 đã không còn an toàn. Vì vậy, hãy sử dụng SSH Key thay cho mật khẩu. Các bạn làm như sau:
Ở trên máy tính của bạn, chạy lệnh ssh-keygen -t rsa -b 4096 để tạo 1 key RSA. hãy lưu nó vào ~/.ssh/ nếu bạn sử dụng Linux, hoặc C:\Users\TenNguoiDung\.ssh
Sau đó, hãy copy cái key này lên server bằng câu lệnh sau:
cat ~/.ssh/id_rsa.pub | ssh username@server_ip_address -p 5958 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Sau đó các bạn vào lại file sshd_config và cấu hình như sau:
43752

43753


Hoặc dùng 1 line command này:
sed -i -E 's/#?PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
Rồi restart lại service SSHd.
Thử SSH vào lại server, nếu nó không hỏi password thì bạn đã OK. Tuy nhiên, hãy double-check !

DOUBLE-CHECK
Di chuyển 2 file id_rsa và id_rsa.pub vào 1 folder khác và SSH vào server. Nếu nó vẫn hỏi password và bạn đăng nhập thành công bằng password, hãy làm tiếp:
Gõ lệnh: sudo nano /etc/ssh/sshd_config.d/*.conf
Nếu có dòng PasswordAuth.... thì chuyển yes thành no. Restart lại service SSH.

2. Ubuntu system
2.1. Cập nhật toàn hệ thống.
Các bản cập nhật trên hệ thống Ubuntu Server bao gồm các tính năng mới, sửa lỗi và bảo mật cho hệ thống: Packages, Kernel, Services, balh blah...
Sử dụng lệnh sau để update:
sudo apt update && sudo apt upgrade -y

Sau khi đã cài xong các bản cập nhật cần thiết, mình cá 99.99% mọi người sẽ set it and forget it (cài nó rồi quên nó) nên hãy cài thêm package này để tự cập nhật bảo mật trên hệ thống:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

2.2. Ubuntu Livepatch
Ubuntu Livepatch là hệ thống giúp kernel tự động vá các lỗ hổng bảo mật trong kernel mà không cần restart cả hệ thống -> tiết kiệm thời gian nếu bạn làm cho từng hệ thống 1 nếu bạn mở nhiều cụm máy chủ.
Truy cập vào trang web ubuntu.com. Nếu chưa có acc thì hãy tạo 1 cái vì nó free. Acc free attach được tối đa 5 máy.
Bạn sẽ đc 1 token:
43754


Sử dụng lệnh sudo pro attach token với token là dòng bạn nhận đc sau khi tạo acc.


3. Cấu hình ufw firewall
Mã:
sudo apt install ufw
sudo ufw enable
sudo ufw allow 5958
# 5958 là port SSH bạn đã làm ở mục trước.
sudo ufw allow 25565
# 25565 là port server MC Java
sudo ufw allow 19132
# 19132 là port MC Bedrock

Post sau mình sẽ hướng dẫn tối ưu Ubuntu Server để đạt hiệu năng tốt nhất cũng như dùng tool backup và chạy file server nhé :>
 
Phần 2 của Guide !
II. Performance
1. Quản lý bộ nhớ

1.1. Sử dụng zram làm ram ảo.
Nếu VPS/Server của bạn có ít RAM (8GB đổ xuống) thì nên sử dụng Zram để làm RAM ảo thay cho Swap file. Vì:
- Swapfile sử dụng ổ cứng để swap, chậm hơn và có thể gây hại cho ổ cứng SSD/HDD.
- Swapfile trên HDD sẽ bị phân mảnh nếu không pre-allocated trước, cũng như làm giảm nếu HDD đang bận mà còn phải gánh thêm swapfile !

ZRAM xuất hiện như sự thay thế cho swap/zswap bằng cách dùng RAM làm swap thẳng luôn và nén chúng lại.

Cấu hình:
Cài các package sau đây:
Mã:
sudo apt install zram-config -y
sudo apt install util-linux

Sau đó, bạn hãy tiến hành comment file swap trong fstab (/etc/fstab) để tắt swapfille:
sudo nano /etc/fstab
Add 1 dấu # trước dòng /swap.img như hình:
43755


Thay đổi kích thước zram:
Mặc định, zram size = Size RAM Thật / 2. Tuy nhiên nếu bạn không thích điều này, bạn cũng có thể thay đổi kích thước zram bằng cách sau:
sudo nano /usr/bin/init-zram-swapping
43756

Cấu hình dòng "mem=" theo ý của bạn. Ở đây mình x2 size zram. Ví dụ RAM mình 8GB thì x2 lên = 16GB zram.
Lưu ý: Cách này có thể không phù hợp nếu CPU server yếu. Bạn có thể chỉnh lại compression algorythm nếu muốn.
Sau đó khởi động lại hệ thống.
Nếu bạn không muốn khởi động lại thì có thể tắt swapfile bằng lệnh sudo swapoff -a và bật lại zram sudo mkswap /dev/zram0 && sudo swapon -p 5 /dev/zram0
Sau đó sử dụng lệnh zramctl hoặc công cụ htop để kiểm tra trạng thái ZRAM.

1.2. Swappiness
Mặc định Ubuntu Server để swappiness là 60. Tức là RAM dùng đến 60% thì sẽ bắt đầu swap.
Swappiness = 100 thì hệ thống sẽ swap nhiều nhất có thể;
Swappiness = 0 thì ngược lại.

Mức swappiness mình thấy OK nhất là 10.
Để đổi swappiness, các bạn tiến hành làm như sau:
mở file systctl.conf: sudo nano /etc/sysctl.conf
Kéo xuống đến cuối và ghi vm.swappiness = 10 vào file. Sau đó save lại.
Áp dụng cài đặt: sudo sysctl -p.
Done.
1.3. Vấn đề allocate RAM bao nhiêu cho Server MC:
Mình khuyên ae nên để mức Xms/Xmx khoảng 80-90% RAM thật thôi, nếu không zram sẽ đốt CPU =))
VD RAM 8GB thì nên để từ 6,5GB -> 7,1 GB thôi :v


2. Tùy chỉnh về hiệu suất ổ cứng (chỉ áp dụng cho HDD).
IO Scheduler mặc định của Ubuntu Server là mq-deadline. Và khi server MC của bạn đang đông người chơi, lấy ví dụ là SMP thì sẽ load chunk và save chunk liên tục thì nó sẽ ăn hết băng thông ổ cứng HDD. Vậy nên ta cần thay IO Sched.
Sau khi thử nghiệm mình thấy IO Sched bfq rất ổn trong việc này. Giảm việc đơ, lag cho server RẤT nhiều.

Cách thực hiện:
Đầu tiên ta cần biết ta đang chạy sched nào. Sử dụng lệnh sau để biết:
cat /sys/block/sdb/queue/scheduler
43757

Lưu ý: sda hay sdb là tên nhận dạng ổ cứng trong hệ thống Linux. Hãy sử dụng lệnh lsblk để biết ổ nào là ổ hệ thống. Trong ví dụ này ổ hệ thống là sdb.

Nếu là deadline hay mq-deadline thì ta sẽ tiến hành chỉnh sang BFQ:
sudo modprobe bfq
sudo echo bfq > /sys/block/sdb/queue/scheduler
Sau đó kiểm tra lại:
43759


Để áp dụng mỗi lần khởi động máy:
sudo nano /etc/udev/rules.d/60-bfq-scheduler.rules
Copy và paste vào trong file:
ACTION=="add|change", KERNEL=="sda", ATTR{queue/scheduler}="bfq"
Lưu ý: Thay sda thành ký hiệu ổ hệ thống trên máy bạn !
Sau đó lưu file lại và thoát nano.

3. CPU governor
Thay đổi CPU gov. sẽ giúp tối ưu CPU hệ thống để chạy server Minecraft cho mượt.
Chỉnh sang PERFORMANCE mode (force CPU luôn ở mức xung cao nhất):
echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Bạn có thể thay performance bằng các gorv khác như schedutil hay ondemand để tiêế kiệm điện =)).


4. Filesystem max files (optional)
Add dòng sau vào file /etc/sysctl.conf
Mã:
fs.file-max = 2097152
fs.nr_open = 1048576
net.core.somaxconn = 1048576

Post sau mình sẽ hướng dẫn các bạn backup server tự động và chạy server ngay cả khi thoát ssh.
 

Đính kèm

  • 1686984606371.png
    1686984606371.png
    28.9 KB · Lượt xem: 21
mở port = iptables ổn hơn k cậu
Mở port thì nêu cậu dùng VPS thì liên hệ với bên cung cấp, còn chạy máy ở nhà thì mở trên cục router. Còn IPTables nó chỉ là cái chạn/cho phép port thôi, bạn mở bằng IPtb chưa chắc ng khác đã vô đc !
 
Mở port thì nêu cậu dùng VPS thì liên hệ với bên cung cấp, còn chạy máy ở nhà thì mở trên cục router. Còn IPTables nó chỉ là cái chạn/cho phép port thôi, bạn mở bằng IPtb chưa chắc ng khác đã vô đc !
Nếu bỏ qua phần tường lửa trước vps hoặc router thì mở port hoặc chặn port nên làm bằng iptables thay vì ufw
 
server dùng windows thì seo
 
Phần 2 của Guide !
II. Performance
1. Quản lý bộ nhớ

1.1. Sử dụng zram làm ram ảo.
Nếu VPS/Server của bạn có ít RAM (8GB đổ xuống) thì nên sử dụng Zram để làm RAM ảo thay cho Swap file. Vì:
- Swapfile sử dụng ổ cứng để swap, chậm hơn và có thể gây hại cho ổ cứng SSD/HDD.
- Swapfile trên HDD sẽ bị phân mảnh nếu không pre-allocated trước, cũng như làm giảm nếu HDD đang bận mà còn phải gánh thêm swapfile !

ZRAM xuất hiện như sự thay thế cho swap/zswap bằng cách dùng RAM làm swap thẳng luôn và nén chúng lại.

Cấu hình:
Cài các package sau đây:
Mã:
sudo apt install zram-config -y
sudo apt install util-linux

Sau đó, bạn hãy tiến hành comment file swap trong fstab (/etc/fstab) để tắt swapfille:
sudo nano /etc/fstab
Add 1 dấu # trước dòng /swap.img như hình:
View attachment 43755

Thay đổi kích thước zram:
Mặc định, zram size = Size RAM Thật / 2. Tuy nhiên nếu bạn không thích điều này, bạn cũng có thể thay đổi kích thước zram bằng cách sau:
sudo nano /usr/bin/init-zram-swapping
View attachment 43756
Cấu hình dòng "mem=" theo ý của bạn. Ở đây mình x2 size zram. Ví dụ RAM mình 8GB thì x2 lên = 16GB zram.
Lưu ý: Cách này có thể không phù hợp nếu CPU server yếu. Bạn có thể chỉnh lại compression algorythm nếu muốn.
Sau đó khởi động lại hệ thống.
Nếu bạn không muốn khởi động lại thì có thể tắt swapfile bằng lệnh sudo swapoff -a và bật lại zram sudo mkswap /dev/zram0 && sudo swapon -p 5 /dev/zram0
Sau đó sử dụng lệnh zramctl hoặc công cụ htop để kiểm tra trạng thái ZRAM.

1.2. Swappiness
Mặc định Ubuntu Server để swappiness là 60. Tức là RAM dùng đến 60% thì sẽ bắt đầu swap.
Swappiness = 100 thì hệ thống sẽ swap nhiều nhất có thể;
Swappiness = 0 thì ngược lại.

Mức swappiness mình thấy OK nhất là 10.
Để đổi swappiness, các bạn tiến hành làm như sau:
mở file systctl.conf: sudo nano /etc/sysctl.conf
Kéo xuống đến cuối và ghi vm.swappiness = 10 vào file. Sau đó save lại.
Áp dụng cài đặt: sudo sysctl -p.
Done.
1.3. Vấn đề allocate RAM bao nhiêu cho Server MC:
Mình khuyên ae nên để mức Xms/Xmx khoảng 80-90% RAM thật thôi, nếu không zram sẽ đốt CPU =))
VD RAM 8GB thì nên để từ 6,5GB -> 7,1 GB thôi :v


2. Tùy chỉnh về hiệu suất ổ cứng (chỉ áp dụng cho HDD).
IO Scheduler mặc định của Ubuntu Server là mq-deadline. Và khi server MC của bạn đang đông người chơi, lấy ví dụ là SMP thì sẽ load chunk và save chunk liên tục thì nó sẽ ăn hết băng thông ổ cứng HDD. Vậy nên ta cần thay IO Sched.
Sau khi thử nghiệm mình thấy IO Sched bfq rất ổn trong việc này. Giảm việc đơ, lag cho server RẤT nhiều.

Cách thực hiện:
Đầu tiên ta cần biết ta đang chạy sched nào. Sử dụng lệnh sau để biết:
cat /sys/block/sdb/queue/scheduler
View attachment 43757
Lưu ý: sda hay sdb là tên nhận dạng ổ cứng trong hệ thống Linux. Hãy sử dụng lệnh lsblk để biết ổ nào là ổ hệ thống. Trong ví dụ này ổ hệ thống là sdb.

Nếu là deadline hay mq-deadline thì ta sẽ tiến hành chỉnh sang BFQ:
sudo modprobe bfq
sudo echo bfq > /sys/block/sdb/queue/scheduler
Sau đó kiểm tra lại:
View attachment 43759

Để áp dụng mỗi lần khởi động máy:
sudo nano /etc/udev/rules.d/60-bfq-scheduler.rules
Copy và paste vào trong file:
ACTION=="add|change", KERNEL=="sda", ATTR{queue/scheduler}="bfq"
Lưu ý: Thay sda thành ký hiệu ổ hệ thống trên máy bạn !
Sau đó lưu file lại và thoát nano.

3. CPU governor
Thay đổi CPU gov. sẽ giúp tối ưu CPU hệ thống để chạy server Minecraft cho mượt.
Chỉnh sang PERFORMANCE mode (force CPU luôn ở mức xung cao nhất):
echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Bạn có thể thay performance bằng các gorv khác như schedutil hay ondemand để tiêế kiệm điện =)).


4. Filesystem max files (optional)
Add dòng sau vào file /etc/sysctl.conf
Mã:
fs.file-max = 2097152
fs.nr_open = 1048576
net.core.somaxconn = 1048576

Post sau mình sẽ hướng dẫn các bạn backup server tự động và chạy server ngay cả khi thoát ssh.
về zram,
server mình đang chạy 40GB ram, liệu nếu sử dụng 1 chiếc SSD riêng để chỉ dùng zram thì có nên không nhỉ ? ảnh hưởng tuổi thọ ổ cứng này kia á
cái path /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor nó không có tồn tại thì làm thế nào hả bạn :/
với cả zram có tương thích với docker không nhỉ ?
 
I'd just like to interject for a moment. What you're refering to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called Linux, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.

There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called Linux distributions are really distributions of GNU/Linux!
 
it's the same shit
most of the time you won't probably use those --arguments
 
Similar content Most view Xem thêm
Back
Top Bottom