UFW là một từ viết tắt cho uncomplicated firewall. Nó được sử dụng để quản lý một bức tường lửa Linux và nhằm mục đích cung cấp một giao diện dễ sử dụng. Trong hướng dẫn này bạn sẽ học cách sử dụng UFW để quản lý tường lửa trên máy chủ Ubuntu Linux 16.04 LTS. Cài đặt UFW UFW đi kèm với Ubuntu nhưng không phải với Debian Linux. Gõ lệnh apt-get sau để cài đặt UFW trong máy chủ Debian Linux: Mã: apt-get update apt-get install ufw Làm thế nào để xem trạng thái của ufw? Theo mặc định ufw có trạng thái là không hoạt động (inactive) là tức là không có quy tắc tường lửa được cấu hình và tất cả lưu lượng được cho phép. Để xem trạng thái, hãy nhập: Mã: ufw status Ví dụ kết quả đầu ra: Mã: Status: inactive Thiết lập chính sách mặc định Theo mặc định khi ufw được kích hoạt nó sẽ chặn tất cả lưu lượng gửi đến bức tường lửa/máy chủ. Chỉ cho phép lưu lượng gửi đi. Bạn có thể xem mặc định UFW bằng cách gõ lệnh sau đây: Mã: grep 'DEFAULT_' /etc/default/ufw Ví dụ kết quả đầu ra: Mã: DEFAULT_INPUT_POLICY="DROP" DEFAULT_OUTPUT_POLICY="ACCEPT" DEFAULT_FORWARD_POLICY="DROP" DEFAULT_APPLICATION_POLICY="SKIP" Chính sách mặc định làm việc tốt đối với cả các máy chủ và máy tính xách tay/máy trạm, bạn chỉ cần mở một số lượng hạn chế của các cổng đến. Đây là một chính sách tốt, nó đóng cửa tất cả các cổng trên máy chủ /tường lửa và bạn chỉ cần mở lần lượt các cổng mà bạn cần sử dụng. Bạn có thể chạy các lệnh sau để thiết lập chính sách ngăn chặn tất cả các kết nối đến và chỉ cho phép các kết nối gửi đi từ máy chủ/tường lửa: Mã: ufw default allow outgoing ufw default deny incoming Viết quy tắc tường lửa đầu tiên của bạn để cho phép kết nối ssh (tcp port 22) Gõ lệnh sau để cho phép các kết nối SSH vào máy chủ của bạn: Mã: ufw allow ssh Hoặc: Mã: ufw allow 22/tcp Nếu bạn đang chạy ssh trên cổng 2020, hãy nhập: Mã: ufw allow 2020/tcp Các quy tắc sau cho phép truy cập vào ssh tcp cổng 22 chỉ duy nhất địa chỉ ip 10.8.0.1 (ví dụ máy chủ SSH của bạn được lắng nghe trên 10.8.0.1 cổng 22) từ bất cứ nơi nào: Mã: ufw allow proto tcp from any to 10.8.0.1 port 22 Làm thế nào để thêm một comment cho quy tắc? Sử dụng cú pháp sau đây Mã: ufw rule comment 'my cool comment here' Mở cổng 53 và viết một comment về quy tắc: Mã: ufw allow 53 comment 'open tcp and udp port 53 for dns' Một ví dụ khác: Mã: ufw allow proto tcp from any to any port 80,443 comment 'my cool web app ports' Hoặc là: Mã: ufw allow proto tcp from any to 10.8.0.1 port 22 'SSHD port 22 for private lan' Kích hoạt tính năng UFW dựa trên tường lửa Bây giờ bạn có chính sách mặc định và cổng ssh được cho phép.Ta hãy kích hoạt bức tường lửa, bằng cách nhập câu lệnh: Mã: ufw enable Ví dụ kết quả đầu ra: Mã: Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup Khi được kích hoạt, bức tường lửa sẽ chạy sau khi được khởi động lại. Vô hiệu hóa UFW dựa trên tường lửa Nếu bạn cần phải dừng lại bức tường lửa và vô hiệu hóa trên hệ thống khởi động, hãy nhập: Mã: ufw disable Ví dụ kết quả đầu ra: Mã: Firewall stopped and disabled on system startup Làm thế nào để kiểm tra trạng thái của các quy tắc của tôi? Sử dụng các lệnh trạng thái: Mã: ufw status ufw status verbose Ví dụ kết quả đầu ra Mã: Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From -- ------ ---- 192.168.1.10 443/tcp ALLOW Anywhere 192.168.1.10 22/tcp ALLOW Anywhere Thêm nhiều quy tắc (open ports và cho phép các IP) Cú pháp như sau để mở tcp port 22 và 443: Mã: ufw allow 80/tcp ufw allow 443/tcp Mở máy chủ UDP/1194 (OpenVPN): Mã: ufw allow 1194/udp Mở cổng 25 (smtpd/email server): Mã: ufw allow 25 Bạn có thể cho phép dãy cổng, tcp và udp 3000 tới 5000: Mã: ufw allow 3000:5000/tcp ufw allow 3000:5000/udp Cho phép các kết nối từ một địa chỉ IP được gọi là 1.2.3.4, hãy nhập: Mã: ufw allow from 1.2.3.4 Cho phép các kết nối từ một địa chỉ IP được gọi là 1.2.3.4 đến cổng của chúng tôi 22, hãy nhập: Mã: ufw allow from 1.2.3.4 to any port 22 proto tcp OR (dest 222.222.222.222 port 22) Mã: ufw allow from 1.2.3.4 to 222.222.222.222 port 22 proto tcp Từ chối truy cập vào cổng hoặc kết nối (close ports và block IPs) Cú pháp như sau để từ chối truy cập đến cổng TCP cổng 443: Mã: ufw deny 443/tcp Từ chối tất cả các kết nối từ một địa chỉ IP được gọi là 1.2.3.4, hãy nhập: Mã: ufw deny from 1.2.3.4 Từ chối tất cả các kết nối từ một IP/subnet gọi là 123.45.67.89/24, hãy nhập: Mã: ufw deny from 123.45.67.89/24 Bạn từ chối truy cập đến 1.2.3.4 trên cổng 22: Mã: ufw deny from 1.2.3.4 to any port 22 proto tcp Từ chối truy cập vào cổng hoặc kết nối (từ chối và cho phép người dùng biết họ đang bị chặn bởi tường lửa) Cú pháp từ chối đơn giản là bỏ qua lưu lượng. Nếu bạn muốn cho người gửi biết lưu lượng đang bị từ chối, chứ không phải chỉ đơn giản là bỏ qua nó, sử dụng các lệnh sau: Mã: ufw reject in smtp ufw reject out smtp ufw reject 1194 comment 'No more vpn traffic' ufw reject 23 comment 'Unencrypted port not allowed' Nếu ai đó cố gắng kết nối đến cổng 23 họ sẽ nhận được thông báo từ chối như sau: Mã: telnet: Unable to connect to remote host: Connection refused Xóa các quy tắc tường lửa UFW Bây giờ bạn biết làm thế nào để thêm, từ chối, và liệt kê các quy tắc tường lửa. Bây giờ đến phần xóa các quy tắc không mong muốn. Có hai tùy chọn để xóa các quy tắc. Cú pháp đầu tiên là: Mã: ufw delete {rule-here} Trong ví dụ này, xóa quy tắc lưu lượng HTTPS (tcp port 443), Mã: ufw delete allow 443 Nếu bạn không còn muốn cho phép lưu lượng smptd/email (port 25), thực hiện lệnh sau: Mã: ufw delete allow 25 Lựa chọn thứ hai là danh sách liệt kê tất cả các quy tắc hiện tại trong một định dạng danh sách số: Mã: ufw status numbered Ví dụ kết quả đầu ra: Mã: Status: active To Action From -- ------ ---- [ 1] 10.8.0.1 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 123.45.67.0/24 [ 3] 22/tcp DENY IN 1.2.3.4 Để xóa quy tắc 2 ("ufw deny from 123.45.67.89/24"), bạn gõ lệnh: Mã: Deleting: deny from 123.45.67.0/24 Proceed with operation (y|n)? y Rule deleted Làm thế nào để thiết lập lại bức tường lửa? Cú pháp như sau để thiết lập các quy tắc ufw về lại thiết lập mặc định và trong trạng thái không hoạt động, chạy: Mã: ufw reset Ví dụ kết quả đầu ra: Mã: Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user6.rules' to '/etc/ufw/user6.rules.20160801_121710' Backing up 'after.rules' to '/etc/ufw/after.rules.20160801_121710' Backing up 'before.rules' to '/etc/ufw/before.rules.20160801_121710' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20160801_121710' Backing up 'user.rules' to '/etc/ufw/user.rules.20160801_121710' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20160801_121710' Làm thế nào để reload bức tường lửa? Cú pháp như sau để reload tường lửa: Mã: ufw reload Khi bạn chỉnh sửa tập tin cấu hình UFW', bạn cần phải chạy lệnh reload. Ví dụ, bạn có thể chỉnh sửa /etc/ufw/before.rules, hãy nhập: Mã: nano /etc/ufw/before.rules Hoặc: Mã: vi /etc/ufw/before.rules Để cho phép tất cả lưu lượng từ eth0 đến eth0 (thêm sau dòng “# End required lines"), hãy nhập: Mã: # allow all on eth0 -A ufw-before-input -i eth0 -j ACCEPT -A ufw-before-output -o eth0 -j ACCEPT Lưu lại và đóng tập tin. Reload bức tường lửa: Mã: ufw reload Làm thế nào để xem các bản log tường lửa? Theo mặc định tất cả các mục UFW đều được ghi log vào tập tin /var/log/ufw.log: Mã: more /var/log/ufw.log tail -f /var/log/ufw.log Ví dụ kết quả đầu ra: Mã: Aug 1 12:09:48 server2 kernel: [15727.245115] [UFW BLOCK] IN=br1 OUT= MAC=00:25:90:4f:b0:6f:44:d3:ca:5f:89:40:08:00 SRC=62.210.181.123 DST=75.xxx.yyy.zzz LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=20343 DF PROTO=TCP SPT=2328 DPT=80 WINDOW=512 RES=0x00 SYN URGP=0 Aug 1 12:09:58 server2 kernel: [15737.485726] [UFW BLOCK] IN=br1 OUT= MAC=00:25:90:4f:b0:6f:44:d3:ca:5f:89:40:08:00 SRC=187.134.225.91 DST=75.xxx.yyy.zzz LEN=46 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=54704 DPT=53413 LEN=26 Aug 1 12:09:58 server2 kernel: [15737.486102] [UFW BLOCK] IN=br1 OUT= MAC=00:25:90:4f:b0:6f:44:d3:ca:5f:89:40:08:00 SRC=187.134.225.91 DST=75.xxx.yyy.zzz LEN=151 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=54704 DPT=53413 LEN=131 Bạn có thể tìm kiếm tập tin log với lệnh grep: Mã: grep something /var/log/ufw.log grep '187.134.225.91' /var/log/ufw.log Làm thế nào để xem báo cáo ufw? Báo cáo bổ sung sẽ hiển thị danh sách các quy tắc giống như đã được thêm bằng dòng lệnh: Mã: ufw show added Ví dụ kết quả đầu ra: Mã: Added user rules (see 'ufw status' for running firewall): ufw allow 22 ufw reject 23 Báo cáo thô cho thấy số liệu của bức tường lửa một cách chi tiết và đầy đủ: Mã: ufw show raw ufw show raw | more Báo cáo khác có thể là: Mã: ufw show builtins ufw show before-rules ufw show user-rules ufw show after-rules ufw show logging-rules