Android

Cách thiết lập tường lửa với tường lửa trên centos 7

Настройка firewall в CentOS 7 (firewalld)

Настройка firewall в CentOS 7 (firewalld)

Mục lục:

Anonim

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ể.

FirewallD là một giải pháp tường lửa hoàn chỉnh quản lý các quy tắc iptables của hệ thống và cung cấp giao diện D-Bus để vận hành trên chúng. Bắt đầu với CentOS 7, FirewallD thay thế iptables làm công cụ quản lý tường lửa mặc định.

Trong hướng dẫn này, chúng tôi chỉ cho bạn cách thiết lập tường lửa với FirewallD trên hệ thống CentOS 7 của bạn và giải thích cho bạn các khái niệm FirewallD cơ bản.

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

Trước khi bạn bắt đầu với hướng dẫn này, hãy đảm bảo rằng bạn đã đăng nhập vào máy chủ của mình bằng tài khoản người dùng có quyền sudo hoặc với người dùng root. Cách thực hành tốt nhất là chạy các lệnh quản trị như một người dùng sudo thay vì root. Nếu bạn không có người dùng sudo trên hệ thống CentOS của mình, bạn có thể tạo một người dùng bằng cách làm theo các hướng dẫn sau.

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

FirewallD sử dụng các khái niệm về vùng và dịch vụ, thay vì chuỗi và quy tắc iptables. 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 không được phép đến và từ hệ thống.

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

Khu vực tường lửa

Các khu là các bộ quy tắc được xác định trước chỉ định lưu lượng nào sẽ được cho phép dựa trên mức độ tin cậy trên 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ể.

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 đang chạy thực tế và nó không liên tục khi khởi động lại. Khi dịch vụ Firewalld khởi động, nó sẽ tải cấu hình cố định, 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. Để thay đổi vĩnh viễn, bạn cần sử dụng tùy chọn --permanent .

Cài đặt và kích hoạt FirewallD

  1. Firewalld được cài đặt theo mặc định trên CentOS 7, nhưng nếu nó không được cài đặt trên hệ thống của bạn, bạn có thể cài đặt gói bằng cách gõ:

    sudo yum install firewalld

    Dịch vụ tường lửa bị tắt theo mặc định. Bạn có thể kiểm tra trạng thái tường lửa bằng:

    sudo firewall-cmd --state

    Để khởi động dịch vụ FirewallD và kích hoạt nó trên loại khởi động:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Làm việc với các khu vực tường lửa

Sau khi kích hoạt dịch vụ FirewallD lần đầu tiên, vùng chung được đặt làm vùng mặc định. Bạn có thể xem 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

Theo mặc định, tất cả các giao diện mạng được gán vùng mặc định. Để kiểm tra những vùng nào được sử dụng bởi (các) giao diện mạng của bạn:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

Đầu ra ở trên cho chúng ta biết rằng cả hai giao diện eth0 eth1 đều được gán cho vùng công cộng.

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à được đặt làm mặc định, được sử dụng bởi cả hai giao diện eth0 eth1 . Ngoài ra, các kết nối liên quan đến máy khách DHCP và SSH được cho phép.

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 Vùng giao diện

Bạn có thể dễ dàng thay đổi Vùng giao diện bằng cách sử dụng tùy chọn --zone kết hợp với tùy chọn --change-interface . Lệnh sau sẽ gán giao diện eth1 cho vùng làm việc:

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 nhà, bạn nên 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

Mở một cảng hoặc dịch vụ

Với FirewallD, bạn có thể cho phép lưu lượng truy cập cho các cổng 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

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

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 xóa dịch vụ giống như khi thêm dịch vụ. Chỉ cần sử dụng --remove-service thay vì tùy chọn --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.

Điều gì xảy ra nếu bạn đang chạy một ứng dụng như Plex Media Server không có dịch vụ phù hợp?

Trong những tình huống như thế này, bạn có hai lựa chọn. Bạn có thể mở các cổng thích hợp hoặc xác định dịch vụ FirewallD mới.

Ví dụ: Máy chủ Plex lắng nghe trên cổng 32400 và sử dụng TCP, để mở cổng trong vùng công cộng cho phiên hiện tại, sử dụng tùy chọn --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp Các giao thức có thể là tcp hoặc udp .

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

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

32400/tcp

Để giữ cổng 32400 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 tùy chọn --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=32400/tcp

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, chúng ta 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..

Cổng chuyển tiếp với Firewalld

Để chuyển tiếp lưu lượng truy cập từ một cổng sang một cổng hoặc địa chỉ 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 công --add-masquerade . Ví dụ: để kích hoạt giả mạo cho loại vùng external :

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 cùng một máy chủ

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 một máy chủ 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

Tạo bộ quy tắc với FirewallD

Trong ví dụ sau, chúng tôi sẽ trình bày cách định cấu hình tường lửa của bạn nếu bạn đang chạy máy chủ web. Chúng tôi giả định rằng máy chủ của bạn chỉ có một giao diện eth0 và bạn muốn chỉ cho phép lưu lượng truy cập đến trên các cổng SSH, HTTP và

  1. Thay đổi vùng mặc định thành dmz

    Chúng tôi sẽ sử dụng vùng dmz (phi quân sự) vì theo mặc định, nó chỉ cho phép lưu lượng SSH. Để thay đổi vùng mặc định thành dmz và gán nó cho giao diện eth0 , hãy chạy các lệnh sau:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Mở cổng HTTP và

    Để mở các cổng HTTP và HTTPS, hãy thêm các quy tắc dịch vụ vĩnh viễn vào vùng dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Thực hiện các thay đổi có hiệu lực ngay lập tức bằng cách tải lại tường lửa:

    sudo firewall-cmd --reload

    Xác nhận thay đổi

    Để kiểm tra loại cài đặt cấu hình vùng dmz:

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

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

    Đầu ra ở trên cho chúng ta biết rằng dmz là vùng mặc định, được áp dụng cho giao diện eth0 và các cổng ssh (22) http (80) và https (443) đang mở.

Phần kết luận

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

Hãy chắc chắn 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 iptables centos bảo mật