Giới thiệu về UFW trên Ubuntu Server
Giới thiệu
UFW là Uncomplicated FireWall là một công cụ để cấu hình firewall chạy trên iptables, được cài mặc định trong các bản phân phối Ubuntu. Nó cung cấp một giao diện được sắp xếp hợp lý để cấu hình tường lửa phổ biến thông qua dòng lệnh.
Các lệnh liên quan đến UFW
Xác nhận trạng thái, bật, tắt UFW
sudo ufw status
Ban đầu, khi mới cài đặt Ubuntu Server thì UFW chưa hoạt động, status sẽ là inactive. Để bật UFW gõ lệnh
sudo ufw enable
Một thông báo hiện ra "Command may disrupt existing ssh connections. Proceed with operation (y|n)?", chọn y để tiếp tục
Theo mặc định, bật UFW sẽ chặn truy cập bên ngoài vào tất cả các cổng trên máy chủ. Có nghĩa là nếu bạn đang kết nối với máy chủ qua SSH và bật UFW trước khi cho phép truy cập qua cổng SSH, bạn sẽ bị ngắt kết nối. Đảm bảo bạn bật quyền truy cập SSH trước khi bật tường lửa nếu đó là trường hợp của bạn.
Kiểm tra lại trạng thái lần nữa, trạng thái đã trở thành active
Để tắt ufw, gõ lệnh
sudo ufw disable
Chặn IP
Để chặn tất cả các kết nối bắt nguồn từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ Block_IP bằng địa chỉ IP mà bạn muốn chặn:
sudo ufw deny from Block_IP
Thử kiểm tra lại trạng thái
Trong ví dụ này, mình đã block IP 111.65.250.2.
→ Chặn subnet
sudo ufw deny from Block_IP/24
Chặn các kết nối đến giao diện mạng cụ thế
Để chặn các kết nối đến từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP bạn muốn chặn:
sudo ufw deny in on eth0 from Block_IP
Tham số "in" cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và "on eth0" chỉ rằng quy tắc chỉ áp dụng cho eth0.
Điều này có thể hữu ích nếu bạn có một hệ thống có nhiều giao diện mạng (bao gồm cả giao diện ảo) và bạn cần chặn quyền truy cập từ bên ngoài vào một số giao diện này, nhưng không phải tất cả.
→ Bonus: Kiểm tra giao diện mạng
ifconfig -a
Cho phép địa chỉ IP kết nối
sudo ufw allow from Allow_IP
Trong đó, Allow_IP là địa chỉ bạn cần cho kết nối.
Bạn cũng có thể cho phép các kết nối từ toàn bộ mạng con bằng cách cung cấp mặt nạ mạng con tương ứng cho một máy chủ, chẳng hạn như Allow_IP/24.
Cho phép địa chỉ IP kết nối đến giao diện mạng cụ thể
sudo ufw allow in on eth0 from Allow_IP
Tham số "in" cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và "on eth0" tham số chỉ định rằng quy tắc chỉ áp dụng cho eth0.
Xóa UFW Rule
Để xóa Rule đã áp dụng, sử dụng "ufw delete" Ví dụ như
sudo ufw delete allow in on eth0 from Allow_IP
Tuy nhiên, quy tắc đã nhập vào có thể hơi khó nhớ. Do đó chúng ta có thể xóa bằng cách xóa theo rule ID. Xác định rule ID bằng lệnh
sudo ufw status numbered
Và để xóa rule ID bạn cần xóa
sudo ufw delete rule_ID
Bạn sẽ được yêu cầu xác nhận thao tác và đảm bảo rằng ID chính xác là ID muốn xóa.
Liệt kê những ứng ụng UFW quản lý
Sau khi cài đặt ứng dụng (Apache, Nginx, SSH ...), các ứng dụng sẽ thiết lập một cấu hình UFW mà có thể sử dụng để cho phép kết nối từ các địa chỉ bên ngoài.
sudo ufw app list
Như mình đã cài đặt một số ứng dụng như Apache, OpenSSH, Nginx. Và UFW sẽ quản lý kết nối đến và đi cho các ứng dụng này.
Kích hoạt cho phép ứng dụng đi qua UFW
Để ứng dụng được phép sử dụng qua UFW thì bạn cần kích hoạt chúng. Ví dụ như OpenSSH để chúng ta có thể SSH vào. Để kích hoạt
sudo ufw allow "Tên_ứng_dụng"
#kết quả như dưới là đã kích hoạt thành công
Output
Rule added
Rule added (v6)
→ Lưu ý: tên phải chính xác như lúc chúng ta liệt kê danh sách ra.Ví dụ Nginx HTTP chỉ cho phép Nginx kết nối qua HTTP, tương tự Nginx HTTPS chỉ cho phép Nginx kết nối qua HTTPS, còn Nginx Full sẽ bao gồm cả HTTP và HTTPS. Tên_ứng_dụng phải nằm trong dấu ngoặc kép nhé ("")
Tắt kích hoạt
Tương tự bật, tắt bạn dùng
sudo ufw delete allow "Tên_ứng_dụng"
Một số ví dụ
#cho phép OpenSSH
sudo ufw allow OpenSSH
#cho phép Nginx
sudo ufw allow "Nginx Full"
#cho phép Apache
sudo ufw allow "Apache Full"
#trong trường hợp bạn cài Ghost CMS hay ứng dụng NodeJS bất kỳ, hoặc là khi bạn muốn đổi cổng SSH để tăng tính an toàn cho Server. Khi đó bạn cần cho phép truy cập qua cổng cụ thể
sudo ufw allow port/(TCP/UDP)
#Mở nhiều cổng một lúc qua TCP, thay tcp bằng udp nếu cần
sudo ufw allow proto tcp from any to any port 80,443,8888
Kết luận
UFW là một công cụ mạnh mẽ để cải thiện đáng kể tính bảo mật của Server khi được định cấu hình đúng cách. Bài viết này bao gồm một số quy tắc UFW phổ biến thường được sử dụng để định cấu hình tường lửa trên Ubuntu mà mình hay dùng.
Hầu hết các lệnh trong hướng dẫn này có thể được điều chỉnh để phù hợp với các trường hợp sử dụng và tình huống khác nhau. Để biết thêm thông tin chi tiết về từng tham số lệnh và các công cụ sửa đổi có sẵn, bạn có thể sử dụng mantiện ích để kiểm tra hướng dẫn sử dụng của UFW:
man ufw
Ngoài ra bạn cũng có thể tham khảo trực tiếp tại trợ giúp UFW của Ubuntu. Nếu có khó khăn hay có câu hỏi gì hãy đừng ngại ngần mà viết comment ở phần bên dưới nhé.
Đọc thêm
Cài đặt Ubuntu server 20.04 LTS
Hướng dẫn cài đặt LAMP(Linux, Apache, MariaDB, PHP) trên Ubuntu server 20.04
Hướng dẫn cài đặt Nginx trên Ubuntu Server 20.04
Cài đặt NodeJS trên Ubuntu Server 20.04