Computer >> Máy Tính >  >> Hệ thống >> Linux

Bắt đầu với FirewallD trên CentOS 8/7

Trong CentOS 7, Tường lửaD đã xuất hiện để định cấu hình các quy tắc lọc lưu lượng. Đây là công cụ được khuyến khích sử dụng để quản lý các quy tắc iptables. CentOS 8 đang sử dụng nftables khung công tác thay vì dịch vụ lọc gói iptables tiêu chuẩn và khi bạn định cấu hình các quy tắc tường lửa trong firewalld, bạn thực sự đang định cấu hình nftables. Trong bài viết này, chúng tôi sẽ xem xét cách cài đặt và cấu hình firewalld trên máy chủ chạy Linux CentOS 8 (và CentOS 7) và các khái niệm chính của tường lửa này.

Tường lửaD là một dịch vụ tường lửa được sử dụng để bảo vệ máy chủ khỏi một lưu lượng truy cập không mong muốn. Nó hỗ trợ quản lý quy tắc tường lửa động (mà không cần khởi động lại). Nó hoạt động như một giao diện cho iptables và nftables. FirewallD có thể được sử dụng hầu như trong tất cả các bản phân phối Linux.

Khái niệm cơ bản về Firewalld:Vùng &Quy tắc

Trước khi cài đặt và cấu hình firewalld , chúng ta sẽ tìm hiểu những khu vực nào được sử dụng để xác định mức độ tin cậy đối với các kết nối khác nhau. Bạn có thể áp dụng các quy tắc lọc khác nhau cho firewalld vùng, đặt các tùy chọn tường lửa hoạt động cho các dịch vụ, giao thức hoặc cổng được xác định trước, chuyển tiếp cổng và các quy tắc đa dạng thức.

Firewalld đang lọc lưu lượng truy cập vào theo khu vực tùy thuộc vào các quy tắc áp dụng cho một khu vực. Nếu địa chỉ IP của người gửi phù hợp với các quy tắc của một vùng, gói tin sẽ được gửi qua vùng này. Nếu địa chỉ IP không khớp với một trong hai vùng được cấu hình trên máy chủ, vùng mặc định sẽ xử lý gói tin. Khi bạn cài đặt firewalld, vùng mặc định được gọi là công khai.

Firewalld có một số khu vực với các quyền được định cấu hình sẵn cho các dịch vụ khác nhau. Bạn có thể sử dụng các cài đặt này hoặc tạo vùng của riêng mình. Đây là danh sách các vùng mặc định được tạo khi bạn cài đặt firewalld (nằm trong / usr / lib / firewalld / zone /):

drop Nó có mức độ tin cậy tối thiểu. Tất cả các kết nối đến đều bị chặn mà không có phản hồi, chỉ cho phép các kết nối đi.
khối Khu vực này tương tự như khu vực trước đó, nhưng các yêu cầu đến bị từ chối với một icmp-máy chủ-bị cấm thông báo cho IPv4 hoặc một icmp6-adm bị cấm thông báo cho IPv6.
công khai Nó được sử dụng cho các mạng công cộng, không đáng tin cậy. Bạn có thể cho phép từng kết nối đến.
bên ngoài Nó đề cập đến bất kỳ mạng bên ngoài nào khi tường lửa của bạn được sử dụng làm cổng. Nó được sử dụng để che NAT, vì vậy mạng nội bộ của bạn vẫn ở chế độ riêng tư nhưng khả dụng.
nội bộ Nó là từ trái nghĩa của vùng bên ngoài. Máy chủ có đủ độ tin cậy, một số dịch vụ bổ sung có thể truy cập được.
dmz Vùng này được sử dụng cho các máy tính trong khu phi quân sự (DMZ) và bao gồm các máy tính bị cô lập không có quyền truy cập vào mạng của bạn. Chỉ cho phép các kết nối đến đã chọn.
công việc Đây là vùng dành cho các máy tính làm việc của bạn (hầu hết các máy tính trong mạng đều đáng tin cậy)
nhà Nó đề cập đến một mạng gia đình. Bạn có thể tin tưởng hầu hết các máy tính khác, nhưng chỉ những kết nối đến được chọn mới được hỗ trợ.
đáng tin cậy Tất cả các máy tính trong mạng đều đáng tin cậy. Đây là tùy chọn mở nhất yêu cầu sử dụng có trách nhiệm.

Firewalld sử dụng hai bộ quy tắc - vĩnh viễn và thời gian chạy. Các quy tắc thời gian chạy vẫn hoạt động cho đến khi máy chủ khởi động lại. Theo mặc định, các quy tắc bạn thêm vào firewalld được coi là thời gian chạy . Để thêm quy tắc vĩnh viễn, bạn phải sử dụng - vĩnh viễn lá cờ. Các quy tắc này sẽ được áp dụng sau khi máy chủ khởi động lại.

Cách cài đặt &kích hoạt tường lửaD trong CentOS?

Trong CentOS 7/8 firewalld được cài đặt theo mặc định trong quá trình cài đặt hệ điều hành. Nếu bạn đã gỡ bỏ firewalld và muốn cài đặt lại, bạn có thể sử dụng trình quản lý gói yum / dnf tiêu chuẩn:

# yum install firewalld -y - trên Centos 7
# dnf install firewalld -y - trên Centos 8

Bắt đầu với FirewallD trên CentOS 8/7

Để trình nền firewalld bắt đầu tự động thêm nó vào khởi động:

# systemctl enable firewalld

Và bắt đầu nó:

# systemctl start firewalld

Kiểm tra trạng thái dịch vụ:

# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
Docs: man:firewalld(1)
Main PID: 13646 (firewalld)
CGroup: /system.slice/firewalld.service
└─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
systemd[1]: Starting firewalld - dynamic firewall daemon...

Hoặc làm điều đó bằng cách sử dụng lệnh này:

# firewall-cmd --state

Tường lửa-cmd lệnh là giao diện người dùng của firewalld tới nftables / iptables.

# firewall-cmd --state

running

Quản lý Quy tắc Tường lửaD

Quy tắc tường lửa mặc định

Trước khi định cấu hình các quy tắc firewalld, bạn nên kiểm tra xem vùng nào được sử dụng theo mặc định:

# firewall-cmd --get-default-zone

Bắt đầu với FirewallD trên CentOS 8/7

Vì chúng tôi mới cài đặt firewalld và chưa định cấu hình nó nên vùng mặc định là công khai .

Kiểm tra vùng hoạt động. Chỉ có một và cùng một khu vực - công cộng:

# firewall-cmd --get-active-zones

public
interfaces: eth0

Như chúng ta có thể thấy, giao diện eth0 được quản lý bởi công khai khu vực.

Bạn có thể hiển thị danh sách các giao diện mạng CentOS như sau:

# ip link show
hoặc:
# nmcli device status

Để xem các quy tắc của vùng hoạt động, hãy sử dụng lệnh:

# firewall-cmd --list-all

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

Trong danh sách này, bạn có thể thấy rằng các hoạt động phổ biến liên quan đến máy khách DHCP và SSH được thêm vào vùng.

Các vùng khả dụng

Để xem danh sách tất cả các vùng, hãy chạy lệnh sau:

# firewall-cmd --get-zones

Tôi có danh sách sau:

block dmz drop external home internal public trusted work

Để xem các quy tắc của một khu vực cụ thể, hãy thêm cờ-khu vực vào lệnh:

# firewall-cmd --zone=home --list-all

home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Bạn có thể xem các quy tắc của tất cả các khu vực:

# firewall-cmd --list-all-zones

Làm cách nào để thay đổi vùng mặc định?

Theo mặc định, tất cả giao diện mạng được đặt ở công cộng vùng, nhưng chúng có thể được di chuyển đến bất kỳ vùng nào bằng lệnh:

# firewall-cmd --zone=home —change-interface=eth0

Chỉ định khu vực bạn muốn sau - khu vực = tham số.

Để thay đổi vùng mặc định thành nhà, hãy chạy lệnh sau:

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

Cách thêm quy tắc ứng dụng trong FirewallD?

Để mở một cổng cho một ứng dụng, bạn có thể thêm dịch vụ làm ngoại lệ. Đây là cách hiển thị danh sách các dịch vụ hiện có:

# firewall-cmd --get-services

Bắt đầu với FirewallD trên CentOS 8/7

Đầu ra sẽ chứa rất nhiều dịch vụ. Thông tin chi tiết về một dịch vụ được chứa trong XML của nó tập tin. Các tệp này nằm trong / usr / lib / firewalld / services.

Ví dụ:

# cd /usr/lib/firewalld/services
# cat smtp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Mail (SMTP)</short>
<description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You do not need to enable this if you collect your mail from your ISP's server by POP3 or IMAP, or if you use a tool such as fetchmail. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.</description>
<port protocol="tcp" port="25"/>
</service>

Tệp XML chứa mô tả dịch vụ, giao thức và số cổng sẽ được mở trong firewalld.

Bắt đầu với FirewallD trên CentOS 8/7

Khi thêm quy tắc, bạn có thể sử dụng - dịch vụ bổ sung tham số để cho phép truy cập tường lửa vào một dịch vụ cụ thể:

# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=https

Sau khi thêm các quy tắc, bạn có thể đảm bảo rằng các dịch vụ đã được thêm vào vùng được chỉ định hay chưa:

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

dhcpv6-client http https ssh

Nếu bạn muốn đặt các quy tắc này là vĩnh viễn, hãy sử dụng - vĩnh viễn khi thêm chúng.

Để xóa một dịch vụ khỏi một khu vực:

# firewall-cmd --permanent --zone=public --remove-service=http
# firewall-cmd --zone=public --permanent --list-services

dhcpv6-client https ssh test

Nếu bạn muốn thêm dịch vụ của mình vào các ngoại lệ yj, bạn có thể tạo XML tự nộp và chỉ định dữ liệu ở đó. Bạn có thể sao chép dữ liệu từ bất kỳ dịch vụ nào và thay đổi tên, mô tả và số cổng.

Sao chép smtp.xml đến một thư mục cho các dịch vụ người dùng:

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

Thay đổi mô tả dịch vụ trong tệp.

Bắt đầu với FirewallD trên CentOS 8/7

Tệp XML cũng phải được đổi tên (Tôi đã gọi dịch vụ của mình là test ). Sau đó, khởi động lại firewalld và đảm bảo rằng dịch vụ của bạn xuất hiện trong danh sách:

# firewall-cmd --get-services

syslog-tls telnet test tftp

Bây giờ bạn có thể thêm dịch vụ vào bất kỳ vùng nào:

# firewall-cmd --zone=public --add-service=test --permanent
# firewall-cmd --zone=public --permanent --list-services

dhcpv6-client http https ssh test

Nếu bạn không tìm thấy dịch vụ trong danh sách, bạn có thể mở cổng bạn muốn trong firewalld bằng lệnh sau:

# firewall-cmd --zone=public —add-port=77/tcp - mở TCP cổng 77
# firewall-cmd --zone=public —add-port=77/udp - mở UDP cổng 77
# firewall-cmd --zone=public —add-port=77-88/udp - mở UDP dải cổng 77-88
# firewall-cmd --zone=public —list-ports - hiển thị danh sách các cổng được phép

Để chặn / cho phép các yêu cầu ICMP:

# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

Để xóa một cổng đã thêm:
# firewall-cmd --zone=public —remove-port=77/udp - xóa quy tắc thời gian chạy cho UDP cổng 77

# firewall-cmd --permanent --zone=public —remove-port=77/udp - xóa quy tắc vĩnh viễn

Bắt đầu với FirewallD trên CentOS 8/7

Làm thế nào để tạo một vùng mới trong FirewallD?

Bạn có thể tạo khu vực của riêng mình (tôi sẽ gọi nó là của chúng tôi ):

# firewall-cmd --permanent --new-zone=our

Sau khi tạo vùng mới, chẳng hạn như sau khi tạo dịch vụ, bạn cần khởi động lại firewalld :

# firewall-cmd --reload
# firewall-cmd --get-zones

block dmz drop external home internal our public trusted work

của chúng tôi khu có sẵn. Bạn có thể thêm các dịch vụ vào nó hoặc mở một số cổng.

Firewalld:Cách chặn địa chỉ IP và tạo ngoại lệ

Bạn có thể thêm địa chỉ IP đáng tin cậy vào các trường hợp ngoại lệ của firewalld hoặc chặn các địa chỉ IP không mong muốn.

Để thêm địa chỉ IP (e. G., 8.8.8.8) vào các ngoại lệ trên máy chủ của bạn bằng cách sử dụng firewalld, hãy chạy lệnh sau:

# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.8.8" accept'

Kiểm tra vùng và đảm bảo rằng địa chỉ IP đã được thêm vào các trường hợp ngoại lệ trong quy tắc chi tiết:

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

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh test
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="8.8.8.8" accept

Để chặn địa chỉ IP, hãy thay thế chấp nhận với từ chối :

# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.4.4" reject'
# firewall-cmd --zone=public --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh test
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="8.8.8.8" accept
rule family="ipv4" source address="8.8.4.4" reject

Bạn chỉ có thể cho phép một dịch vụ chấp nhận yêu cầu từ địa chỉ IP cụ thể:

#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="https" accept'

Nếu bạn muốn nhanh chóng chặn tất cả các yêu cầu đến máy chủ của mình, hãy sử dụng lệnh hoảng loạn:

# firewall-cmd --panic-on

Bạn có thể tắt chế độ hoảng sợ bằng lệnh sau:

# firewall-cmd --panic-off

Hoặc bằng cách khởi động lại máy chủ của bạn.

Bạn có thể chặn cấu hình firewalld của mình để các dịch vụ cục bộ có đặc quyền root không thể thay đổi các quy tắc tường lửa mà bạn đã tạo:

# firewall-cmd --lockdown-on

Để tắt chế độ khóa:

# firewall-cmd --lockdown-off

Định cấu hình chuyển tiếp cổng với tường lửaD

Bạn có thể tạo quy tắc chuyển tiếp cổng trong firewalld. Để chuyển tiếp cổng TCP 443 đến 9090:

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Trong Windows, bạn có thể cấu hình chuyển tiếp cổng bằng cách sử dụng netsh.

Để xóa quy tắc chuyển tiếp cổng:

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090