Android

Cách cấu hình và quản lý tường lửa trên centos 8

How to install CentOS 8 and fix the "Pane is dead" error on VMware Workstation

How to install CentOS 8 and fix the "Pane is dead" error on VMware Workstation

Mục lục:

Anonim

Tường lửa là một phương pháp để theo dõi và lọc lưu lượng mạng đến và đi. Nó hoạt động bằng cách xác định một bộ quy tắc bảo mật xác định xem có cho phép hoặc chặn lưu lượng truy cập cụ thể hay không. Tường lửa được cấu hình đúng là một trong những khía cạnh quan trọng nhất của bảo mật hệ thống tổng thể.

CentOS 8 xuất xưởng với một daemon tường lửa có tên là tường lửa. Đây là một giải pháp hoàn chỉnh với giao diện D-Bus cho phép bạn quản lý tường lửa của hệ thống một cách linh hoạt.

Trong hướng dẫn này, chúng tôi sẽ nói về cách định cấu hình và quản lý tường lửa trên CentOS 8. Chúng tôi cũng sẽ giải thích các khái niệm cơ bản về Tường lửa.

Điều kiện tiên quyết

Để định cấu hình dịch vụ tường lửa, bạn phải đăng nhập với quyền root hoặc người dùng có quyền sudo.

Khái niệm tường lửa cơ bản

tường lửa sử dụng các khái niệm về khu vực và dịch vụ. Dựa trên các khu vực và dịch vụ bạn sẽ định cấu hình, bạn có thể kiểm soát lưu lượng được phép hoặc bị chặn đến và khỏi hệ thống.

Tường lửa có thể được cấu hình và quản lý bằng tiện ích dòng lệnh firewall-cmd .

Trong CentOS 8, iptables được thay thế bằng nftables làm phụ trợ tường lửa mặc định cho trình nền tường lửa.

Khu vực tường lửa

Các khu là các bộ quy tắc được xác định trước xác định mức độ tin cậy của các mạng mà máy tính của bạn được kết nối. Bạn có thể gán các giao diện và nguồn mạng cho một vùng.

Dưới đây là các khu vực được cung cấp bởi FirewallD được sắp xếp theo mức độ tin cậy của khu vực từ không đáng tin cậy đến đáng tin cậy:

  • thả: Tất cả các kết nối đến được loại bỏ mà không có bất kỳ thông báo. Chỉ cho phép kết nối đi. chặn: Tất cả các kết nối đến đều bị từ chối với tin nhắn icmp-host-prohibited cho IPv4 icmp6-adm-prohibited đối với IPv6. Chỉ cho phép kết nối đi. công cộng: Để sử dụng trong các khu vực công cộng không tin cậy. Bạn không tin tưởng các máy tính khác trên mạng, nhưng bạn có thể cho phép các kết nối đến được chọn. bên ngoài: Để sử dụng trên các mạng bên ngoài có bật chức năng giả mạo NAT khi hệ thống của bạn hoạt động như một cổng hoặc bộ định tuyến. Chỉ cho phép các kết nối đến được chọn. Internal: Để sử dụng trên các mạng nội bộ khi hệ thống của bạn hoạt động như một cổng hoặc bộ định tuyến. Các hệ thống khác trên mạng thường được tin cậy. Chỉ cho phép các kết nối đến được chọn. dmz: Được sử dụng cho các máy tính nằm trong khu vực phi quân sự của bạn có quyền truy cập hạn chế vào phần còn lại của mạng. Chỉ cho phép các kết nối đến được chọn. công việc: Được sử dụng cho máy móc làm việc. Các máy tính khác trên mạng thường được tin cậy. Chỉ cho phép các kết nối đến được chọn. nhà: Được sử dụng cho máy gia đình. Các máy tính khác trên mạng thường được tin cậy. Chỉ cho phép các kết nối đến được chọn. đáng tin cậy: Tất cả các kết nối mạng được chấp nhận. Tin tưởng tất cả các máy tính trong mạng.

Dịch vụ tường lửa

Các dịch vụ tường lửa là các quy tắc được xác định trước áp dụng trong một vùng và xác định các cài đặt cần thiết để cho phép lưu lượng truy cập đến cho một dịch vụ cụ thể. Các dịch vụ cho phép bạn dễ dàng thực hiện một số nhiệm vụ trong một bước duy nhất.

Ví dụ: dịch vụ có thể chứa các định nghĩa về mở cổng, chuyển tiếp lưu lượng truy cập và hơn thế nữa.

Tường lửa thời gian chạy và cài đặt vĩnh viễn

Firewalld sử dụng hai bộ cấu hình riêng biệt, thời gian chạy và cấu hình vĩnh viễn.

Cấu hình thời gian chạy là cấu hình thực tế đang chạy và không tiếp tục khởi động lại. Khi daemon tường lửa khởi động, nó tải cấu hình vĩnh viễn, trở thành cấu hình thời gian chạy.

Theo mặc định, khi thực hiện thay đổi cấu hình Firewalld bằng tiện ích firewall-cmd , các thay đổi được áp dụng cho cấu hình thời gian chạy. Để thực hiện các thay đổi vĩnh viễn, hãy thêm tùy chọn --permanent vào lệnh.

Để áp dụng các thay đổi trong cả hai bộ cấu hình, bạn có thể sử dụng một trong hai phương pháp sau:

  1. Thay đổi cấu hình thời gian chạy và làm cho nó vĩnh viễn:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    Thay đổi cấu hình vĩnh viễn và tải lại daemon tường lửa:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Kích hoạt Tường lửa

Trên CentOS 8, tường lửa được cài đặt và bật theo mặc định. Nếu vì lý do nào đó, nó không được cài đặt trên hệ thống của bạn, bạn có thể cài đặt và khởi động trình nền bằng cách gõ:

sudo dnf install firewalld sudo systemctl enable firewalld --now

Bạn có thể kiểm tra trạng thái của dịch vụ tường lửa bằng:

sudo firewall-cmd --state

Nếu tường lửa được kích hoạt, lệnh sẽ in running . Nếu không, bạn sẽ thấy not running .

Khu vực tường lửa

Vùng mặc định là vùng được sử dụng cho mọi thứ không được gán rõ ràng cho vùng khác.

Bạn có thể thấy vùng mặc định bằng cách gõ:

sudo firewall-cmd --get-default-zone

public

Để có danh sách tất cả các khu vực có sẵn, hãy nhập:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Để xem các vùng hoạt động và giao diện mạng được gán cho chúng:

sudo firewall-cmd --get-active-zones

Đầu ra bên dưới cho thấy các giao diện eth0 eth1 được gán cho vùng public :

public interfaces: eth0 eth1

Bạn có thể in cài đặt cấu hình vùng bằng:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Từ đầu ra ở trên, chúng ta có thể thấy rằng khu vực công cộng đang hoạt động và sử dụng mục tiêu mặc định, đó là REJECT . Đầu ra cũng cho thấy vùng này được sử dụng bởi giao diện eth0 eth1 và cho phép lưu lượng khách DHCP và SSH.

sudo firewall-cmd --list-all-zones

Lệnh in một danh sách lớn với các cài đặt của tất cả các vùng có sẵn.

Thay đổi mục tiêu vùng

Mục tiêu xác định hành vi mặc định của vùng cho lưu lượng đến không được chỉ định. Nó có thể được đặt thành một trong các tùy chọn sau: default , ACCEPT , REJECT DROP .

Để đặt mục tiêu của vùng, chỉ định vùng có tùy chọn --zone và đích với tùy chọn --set-target .

Ví dụ: để thay đổi mục tiêu của khu vực public thành DROP bạn sẽ chạy:

sudo firewall-cmd --zone=public --set-target=DROP

Chỉ định một giao diện cho một khu vực khác

Bạn có thể tạo các bộ quy tắc cụ thể cho các vùng khác nhau và gán các giao diện khác nhau cho chúng. Điều này đặc biệt hữu ích khi bạn có nhiều giao diện trên máy của mình.

Để gán giao diện cho một vùng khác, chỉ định vùng có tùy chọn --zone và giao diện với tùy chọn --change-interface .

Ví dụ, lệnh sau gán giao diện eth1 cho vùng work :

sudo firewall-cmd --zone=work --change-interface=eth1

Xác minh các thay đổi bằng cách gõ:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Thay đổi vùng mặc định

Để thay đổi vùng mặc định, hãy sử dụng tùy chọn --set-default-zone theo sau là tên của vùng bạn muốn đặt mặc định.

Ví dụ: để thay đổi vùng mặc định thành home bạn sẽ chạy lệnh sau:

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

Xác minh các thay đổi với:

sudo firewall-cmd --get-default-zone

home

Tạo các vùng mới

Firewalld cũng cho phép bạn tạo các vùng của riêng bạn. Điều này rất hữu ích khi bạn muốn tạo quy tắc cho mỗi ứng dụng.

Trong ví dụ sau, chúng tôi sẽ tạo một vùng mới có tên memcached , mở cổng 11211 và chỉ cho phép truy cập từ địa chỉ IP 192.168.100.30 :

  1. Tạo vùng:

    sudo firewall-cmd --new-zone=memcached --permanent

    Thêm quy tắc vào khu vực:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    Tải lại daemon tường lửa để kích hoạt các thay đổi:

    sudo firewall-cmd --reload

Dịch vụ tường lửa

Với tường lửa, bạn có thể cho phép lưu lượng truy cập cho các cổng và / hoặc nguồn cụ thể dựa trên các quy tắc được xác định trước được gọi là dịch vụ.

Để có danh sách tất cả các loại dịch vụ khả dụng mặc định:

sudo firewall-cmd --get-services

Bạn có thể tìm thêm thông tin về từng dịch vụ bằng cách mở tệp.xml được liên kết trong thư mục /usr/lib/firewalld/services . Ví dụ: dịch vụ HTTP được định nghĩa như thế này:

/usr/lib/firewalld/service/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

Để cho phép lưu lượng HTTP đến (cổng 80) cho các giao diện trong vùng chung, chỉ dành cho loại phiên hiện tại (cấu hình thời gian chạy):

sudo firewall-cmd --zone=public --add-service=http Nếu bạn đang sửa đổi vùng mặc định, bạn có thể bỏ tùy chọn --zone .

Để xác minh rằng dịch vụ đã được thêm thành công, hãy sử dụng tùy chọn --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

Để giữ cho cổng 80 mở sau khi khởi động lại, hãy chạy lại cùng một lệnh với tùy chọn --permanent hoặc thực thi:

sudo firewall-cmd --runtime-to-permanent

Sử dụng --list-services cùng với tùy chọn --permanent để xác minh các thay đổi của bạn:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

Cú pháp để loại bỏ dịch vụ giống như khi thêm một dịch vụ. Chỉ cần sử dụng --remove-service thay vì cờ --add-service :

sudo firewall-cmd --zone=public --remove-service=http --permanent

Lệnh trên loại bỏ dịch vụ http khỏi cấu hình vĩnh viễn của khu vực công cộng.

Tạo một dịch vụ FirewallD mới

Như chúng tôi đã đề cập, các dịch vụ mặc định được lưu trữ trong thư mục /usr/lib/firewalld/services . Cách dễ nhất để tạo một dịch vụ mới là sao chép tệp dịch vụ hiện có vào thư mục /etc/firewalld/services , đây là vị trí cho các dịch vụ do người dùng tạo và sửa đổi cài đặt tệp.

Ví dụ: để tạo định nghĩa dịch vụ cho Plex Media Server, bạn có thể sử dụng tệp dịch vụ SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Mở tệp plexmediaserver.xml mới được tạo và thay đổi tên và mô tả ngắn cho dịch vụ trong thẻ. Thẻ quan trọng nhất bạn cần thay đổi là thẻ port , định nghĩa số cổng và giao thức bạn muốn mở.

Trong ví dụ sau, chúng tôi đang mở các cổng 1900 UDP và 32400 TCP.

/etc/firewalld/service/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

Lưu tệp và tải lại dịch vụ FirewallD:

sudo firewall-cmd --reload

Bây giờ bạn có thể sử dụng dịch vụ plexmediaserver trong khu vực của mình giống như bất kỳ dịch vụ nào khác.

Mở cổng và IP nguồn

Firewalld cũng cho phép bạn nhanh chóng kích hoạt tất cả lưu lượng truy cập từ một địa chỉ IP đáng tin cậy hoặc trên một cổng cụ thể mà không cần tạo định nghĩa dịch vụ.

Mở IP nguồn

Để cho phép tất cả lưu lượng truy cập đến từ một địa chỉ IP (hoặc phạm vi) cụ thể, chỉ định vùng có tùy chọn --zone và IP nguồn với tùy chọn --add-source .

Ví dụ: để cho phép tất cả lưu lượng truy cập đến từ 192.168.1.10 trong khu vực public , hãy chạy:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

Làm cho quy tắc mới liên tục:

sudo firewall-cmd --runtime-to-permanent

Xác minh các thay đổi bằng lệnh sau:

sudo firewall-cmd --zone=public --list-sources

192.168.1.10

Cú pháp xóa IP nguồn giống như khi thêm một IP. Chỉ cần sử dụng --remove-source thay vì tùy chọn --add-source :

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

Mở một cổng nguồn

Để cho phép tất cả lưu lượng truy cập đến trên một cổng nhất định, chỉ định vùng có tùy chọn --zone và cổng và giao thức với tùy chọn --add-port .

Ví dụ: để mở cổng 8080 trong khu vực công cộng cho phiên hiện tại bạn chạy:

sudo firewall-cmd --zone=public --add-port=8080/tcp

Giao thức có thể là tcp , udp , sctp hoặc dccp .

Xác nhận các thay đổi:

sudo firewall-cmd --zone=public --list-ports

8080

Để giữ cổng mở sau khi khởi động lại, hãy thêm quy tắc vào cài đặt cố định bằng cách chạy cùng một lệnh bằng cờ --permanent hoặc bằng cách thực hiện:

sudo firewall-cmd --runtime-to-permanent

Cú pháp để loại bỏ một cổng giống như khi thêm một cổng. Chỉ cần sử dụng --remove-port thay vì tùy chọn --add-port .

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Cổng chuyển tiếp

Để chuyển tiếp lưu lượng truy cập từ một cổng sang một cổng khác, trước tiên, hãy bật chức năng giả mạo cho vùng mong muốn bằng cách sử dụng tùy chọn --add-masquerade . Ví dụ: để bật chức năng giả mạo cho vùng external , hãy nhập:

sudo firewall-cmd --zone=external --add-masquerade

Chuyển tiếp lưu lượng từ cổng này sang cổng khác trên địa chỉ IP

Trong ví dụ sau, chúng tôi đang chuyển tiếp lưu lượng từ cổng 80 sang cổng 8080 trên cùng một máy chủ:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Chuyển tiếp lưu lượng đến địa chỉ IP khác

Trong ví dụ sau, chúng tôi đang chuyển tiếp lưu lượng truy cập từ cổng 80 sang cổng 80 trên máy chủ có IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

Chuyển tiếp lưu lượng đến một máy chủ khác trên một cổng khác

Trong ví dụ sau, chúng tôi đang chuyển tiếp lưu lượng truy cập từ cổng 80 sang cổng 8080 trên máy chủ có IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Để làm cho quy tắc chuyển tiếp liên tục, sử dụng:

sudo firewall-cmd --runtime-to-permanent

Phần kết luận

Bạn đã học cách định cấu hình và quản lý dịch vụ tường lửa trên hệ thống CentOS 8 của mình.

Đảm bảo cho phép tất cả các kết nối đến cần thiết cho hoạt động đúng của hệ thống của bạn, đồng thời hạn chế tất cả các kết nối không cần thiết.

tường lửa tường lửa bảo mật centos