Cài đặt và cấu hình tường lửa trong Ubuntu Server

Firewall là một công cụ quản lý tường lửa dựa trên máy chủ tuyệt vời dành cho Hệ điều hành Linux. Firewalld đã được phát triển trên Fedora nhưng hiện tại nó đã có sẵn cho hầu hết các bản phân phối Linux. Vì vậy, Firewalld có thể được cài đặt trong Ubuntu Server mặc dù Ubuntu Server có UFW là hệ thống tường lửa mặc định. Tôi nghĩ rằng tường lửa mạnh mẽ và dễ bảo trì hơn UFW. Vì vậy, tôi sẽ thảo luận về cách cài đặt và cấu hình Firewalld trong Ubuntu Server.

Cài đặt Firewall trong Ubuntu Server

Mặc định Ubuntu Server đi kèm với ứng dụng tường lửa UFW. Vì vậy, trước tiên chúng ta phải tắt ứng dụng UFW trước khi cài đặt Firewalld. Ban hành lệnh sau để tắt ứng dụng tường lửa UFW.

$ sudo ufw disable

Bây giờ chúng ta sẽ cài đặt Firewalld trong Ubuntu Server bằng lệnh sau.

$ sudo apt install firewalld

Firewalld bây giờ sẽ bắt đầu cài đặt và trong vài lần nó sẽ được cài đặt hoàn chỉnh. Sau khi cài đặt, daemon sẽ được khởi động và kích hoạt để khởi động tự động. Vì vậy, hãy đưa ra lệnh sau để khởi động Firewalld và kích hoạt nó.

$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld

Đôi khi chúng ta có thể cần xem trạng thái của daemon Firewalld. Đưa ra lệnh sau để xem trạng thái Firewalld.

$ sudo systemctl status firewalld

Bây giờ bạn sẽ thấy rằng Firewalld đang hoạt động và đang chạy. Cũng có thể dừng và khởi động lại daemon Firewalld bằng các lệnh sau.

$ sudo systemctl stop firewalld
$ sudo systemctl restart firewalld

Các khái niệm cơ bản trong Firewalld

Firewalld daemon là một ứng dụng tường lửa dựa trên vùng. ‘Vùng’ là một thực thể xác định các quy tắc cho phép hoặc từ chối lưu lượng truy cập internet. Các giao diện mạng được gán cho một vùng để ra lệnh cho hành vi mà tường lửa sẽ cho phép.

Trình nền tường lửa có chín vùng được xác định trước dựa trên mức độ tin cậy.

  • drop: It is the lowest level of trust where no incoming connection is allowed . So, all incoming connections are dropped without reply and only outgoing connections from inside are possible.
  • block: It is similar to the drop zone, but instead of dropping connections, incoming requests are rejected with a prohibited  message.
  • public: It represents untrusted networks where most of the services are disabled. You have to manually enable any service or port which is required.
  • external: External networks in the event that you are using the firewall as your gateway. It is configured for NAT masquerading so that your internal network remains private but reachable.
  • internal: The other side of the external zone, used for the internal portion of a gateway. The computers are fairly trustworthy and some additional services are available.
  • dmz: Used for computers located in a DMZ (isolated computers that will not have access to the rest of your network). Only certain incoming connections are allowed in DMZ zone.
  • work: Used for work machines. Trust most of the computers in the network. A few more services might be allowed.
  • home: A home environment. It generally implies that you trust most of the other computers and that a few more services will be accepted.
  • trusted: Trust all of the machines in the network. The most open of the available options and should be used sparingly.

Để sử dụng tường lửa Firewalld, chúng ta có thể tạo các quy tắc truy cập hoặc từ chối và thay đổi các thuộc tính của bất kỳ vùng nào và sau đó gán bất kỳ giao diện mạng nào cho bất kỳ vùng nào phù hợp nhất.

Nhận thông tin vùng mặc định của Firewalld

Trình nền tường lửa cung cấp tiện ích dòng lệnh tường lửa-cmd để quản trị các quy tắc tường lửa. Vì vậy, chúng ta có thể thực hiện bất kỳ thao tác nào trên Firewalld bằng tiện ích tường lửa-cmd .

Đầu tiên, chúng ta sẽ biết thông tin mặc định của các vùng có sẵn trong Firewalld. Vì vậy, hãy đưa ra lệnh sau để liệt kê tất cả các vùng mặc định có sẵn trong Firewalld.

$ sudo firewall-cmd –list-all-zones
Với lệnh trên, bạn sẽ tìm thấy tất cả các vùng mặc định có sẵn trong Firewalld cũng như các dịch vụ của chúng. Ví dụ: nếu chúng ta thấy khu vực public , nó sẽ giống như thông tin sau.

public

target: default

icmp-block-inversion: no

interfaces:

sources:

services: dhcpv6-client ssh

ports:

protocols:

masquerade: no

forward-ports:

source-ports:

icmp-blocks:

rich rules:

Từ những thông tin trên, chúng ta có thể thấy rằng chỉ có các dịch vụ SSH và dhcpv6-client khả dụng trong khu vực chung.

Lệnh trên hiển thị tất cả các vùng có dịch vụ khả dụng. Nhưng nếu chúng ta chỉ muốn biết tên của vùng khả dụng, hãy đưa ra lệnh sau.

$ sudo firewall-cmd –get-zones

Output

chặn dmz thả bên ngoài nhà nội bộ công việc đáng tin cậy

Từ lệnh trên, chúng ta có thể thấy tất cả các vùng khả dụng trong Firewalld nhưng trong số đó có một vùng mặc định mà các quy tắc sẽ được áp dụng theo mặc định. Để tìm hiểu vùng mặc định trong Firewalld, hãy đưa ra lệnh sau.

$ sudo firewall-cmd –get-default-zone
Output

công cộng

Mặc định public zone sẽ có default zone. Vì vậy, bạn sẽ thấy công khai là đầu ra.

Có thể thay đổi vùng mặc định bằng lệnh tường lửa-cmd. Để thay đổi vùng mặc định, hãy thực hiện lệnh sau.

$ sudo firewall-cmd –set-default-zone=home

Bây giờ home zone sẽ là vùng mặc định và các quy tắc của nó sẽ được áp dụng theo mặc định.

Khám phá vùng hoạt động

Từ phần trên, chúng ta có thể thấy các vùng khả dụng và vùng mặc định nhưng không có vùng nào hoạt động cho đến khi một giao diện mạng được liên kết với bất kỳ vùng nào. Vì vậy, nếu chúng tôi đưa ra lệnh sau để biết các vùng hoạt động, sẽ không có đầu ra nào xuất hiện.

$ sudo firewall-cmd –get-active-zones

 Vì vậy, để làm cho một vùng hoạt động, chúng ta phải thêm một giao diện vào một vùng. Nhưng trước khi thêm một giao diện, chúng ta cần biết tên của giao diện đó. Để biết tên giao diện, chúng ta có thể đưa ra lệnh liên kết ip .

$ ip link

Output

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000

link/ether 00:50:56:9d:d9:fe brd ff:ff:ff:ff:ff:ff

3: ens192: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether 00:50:56:9d:05:a3 brd ff:ff:ff:ff:ff:ff

Từ đầu ra, chúng ta có thể thấy rằng có hai giao diện trong Máy chủ Ubuntu của chúng ta có tên là ens160 và ens192 . Nó có thể khác trong bản phân phối của bạn nhưng lưu ý tên hiển thị từ lệnh liên kết ip .

Bây giờ chúng tôi muốn thêm ens160 vào home zone và ens192 vào public vì hai zone này được sử dụng trong hầu hết các trường hợp.

Để thêm giao diện ens160 vào vùng chính, hãy thực hiện lệnh sau.

$ sudo firewall-cmd –zone=home –add-interface=ens160

Giờ đây, vùng chính đang hoạt động và các quy tắc của vùng chính sẽ được áp dụng cho tất cả các lưu lượng truy cập đến thông qua giao diện ens160. Nếu bây giờ chúng ta chạy lệnh tường lửa-cmd với tùy chọn –get-active-zones, chúng ta sẽ thấy home zone hiện nằm trong danh sách vùng hoạt động.

Lệnh trên sẽ làm cho home zone tạm thời hoạt động và nếu chúng ta tải lại Firewalld bằng lệnh sau hoặc khởi động lại Firewalld, vùng hoạt động sẽ bị xóa.

$ sudo firewall-cmd –reload

Vì vậy, để làm cho quy tắc trên trở thành vĩnh viễn, chúng ta phải chạy lệnh tương tự với tùy chọn – Permanent.

$ sudo firewall-cmd –zone=home –add-interface=ens160 –permanent

Bây giờ quy tắc trên là vĩnh viễn và nó sẽ không bị xóa khi tải lại hoặc khởi động lại Tường lửa.

Tương tự, chúng ta có thể thêm giao diện ens192 vào vùng chung bằng lệnh sau và kích hoạt vùng chung.

$ sudo firewall-cmd –zone=public –add-interface=ens192
$ sudo firewall-cmd –zone=public –add-interface=ens192 –permanent

Nếu bây giờ chúng ta liệt kê các vùng hoạt động, đầu ra sau đây sẽ được tìm thấy.

$ sudo firewall-cmd –get-active-zones

Output

home

interfaces: ens160

public

interfaces: ens192

Quản lý dịch vụ trong các vùng tường lửa

Trình nền tường lửa cung cấp rất nhiều dịch vụ có thể được cho phép hoặc bị chặn bằng các quy tắc tường lửa. Để liệt kê các dịch vụ khả dụng do Firewalld cung cấp, hãy đưa ra lệnh sau.

$ sudo firewall-cmd –get-services

Các dịch vụ được liệt kê có thể được cho phép hoặc bị chặn bằng Firewalld. Để khám phá các dịch vụ được chỉ định cho một khu vực (ví dụ: khu vực nhà), hãy đưa ra lệnh sau.

$ sudo firewall-cmd –zone=home –list-all

Lệnh trên sẽ hiển thị mọi thứ được áp dụng trên home zone. Để chỉ liệt kê các dịch vụ được áp dụng trên vùng chính, hãy đưa ra lệnh sau.

$ sudo firewall-cmd –zone=home –list-services

Output

dhcpv6-client mdns samba-client ssh

Từ đầu ra, chúng ta có thể thấy rằng có bốn dịch vụ được phép trong home zone. Bây giờ chúng tôi muốn thêm một dịch vụ, chẳng hạn như http, vào vùng nhà. Đối với điều này, ban hành các lệnh sau.

$ sudo firewall-cmd –zone=home –add-service=http
$ sudo firewall-cmd –zone=home –add-service=http –permanent

Tương tự, bạn có thể thêm bất kỳ dịch vụ nào vào bất kỳ vùng tường lửa mong muốn nào của mình theo lệnh trên.

Bên cạnh việc thêm các dịch vụ, chúng tôi cũng có thể xóa bất kỳ dịch vụ nào khỏi bất kỳ vùng tường lửa nào bằng tiện ích tường lửa-cmd. Để xóa bất kỳ dịch vụ nào, ví dụ samba-client, khỏi vùng chính, hãy đưa ra lệnh sau.

$ sudo firewall-cmd –zone=home –remove-service=samba-client
$ sudo firewall-cmd –zone=home –remove-service=samba-client –permanent

Bây giờ nếu chúng ta liệt kê các dịch vụ trong home zone sau khi chạy lệnh trên, chúng ta sẽ tìm thấy đầu ra sau.

$ sudo firewall-cmd –zone=home –list-services

Output

dhcpv6-client http mdns ssh

Quản lý các cổng trong Vùng tường lửa

Các dịch vụ phổ biến đại diện cho cổng cụ thể có sẵn trong Firewalld daemon. Ví dụ: dịch vụ http đại diện cho cổng 80 và https đại diện cho cổng 443. Vì vậy, chúng tôi có thể cho phép hoặc chặn các dịch vụ này với tên dịch vụ đó. Nhưng đôi khi chúng ta có thể cần phải cho phép hoặc chặn một số cổng cụ thể, những cổng không được liệt kê trong các dịch vụ daemon của Tường lửa. Đối với điều này, Firewalld cung cấp các lệnh –add-port và –remove-port để thêm hoặc xóa bất kỳ cổng nào khỏi bất kỳ vùng nào tương ứng.

Vì vậy, để thêm bất kỳ cổng nào trong vùng chính, ví dụ như cổng UDP 1812, hãy thực hiện các lệnh sau.

$ sudo firewall-cmd –zone=home –add-port=1812/udp
$ sudo firewall-cmd –zone=home –add-port=1812/udp –permanent

Bây giờ nếu chúng tôi liệt kê cổng được phép trong vùng chính, đầu ra sau sẽ được tìm thấy.

$ sudo firewall-cmd –zone=home –list-ports

Output

1812/udp

Tương tự, chúng ta có thể xóa bất kỳ cổng nào khỏi bất kỳ vùng nào bằng các lệnh sau.

$ sudo firewall-cmd –zone=home –remove-port=1812/udp
$ sudo firewall-cmd –zone=home –remove-port=1812/udp –permanent

Nếu chúng tôi muốn biết cổng của bất kỳ dịch vụ nào, chẳng hạn như http, hãy đưa ra lệnh sau từ dấu nhắc lệnh.

$ grep http /etc/services

Output

http80/tcpwww # WorldWideWeb HTTP

Cách cài đặt và định cấu hình daemon Firewalld trong Ubuntu Server đã được thảo luận trong bài viết này. Cách quản lý các dịch vụ và cổng của Firewalld cũng đã được thảo luận tại đây. Vì vậy, tôi hy vọng bây giờ bạn sẽ có thể quản lý daemon Firewalld trong Ubuntu Server mà không phải đắn đo. Tuy nhiên, nếu bạn gặp phải bất kỳ sự nhầm lẫn nào, vui lòng thảo luận trong nhận xét hoặc liên hệ với tôi từ trang Liên hệ .