HƯỚNG DẪN Cấu hình một UFW firewall trên máy chủ Ubuntu 16.04 LTS

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 6/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    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
    
     

Chia sẻ trang này

Đang tải...