Mở cổng tường lửa trên CentOS 7


339

Tôi đang sử dụng CentOS 7 và tôi phải đảm bảo rằng các cổng 2888 và 3888 được mở.

Tôi đã đọc bài viết này nhưng điều này không hoạt động vì trên hệ điều hành CentOS 7 không có iptables savelệnh.

Ai đó nói với tôi rằng URL trên không hợp lệ cho CentOS 7. và tôi nên làm theo điều này . Nhưng bài viết này không rõ ràng với tôi về chính xác lệnh tôi cần thực hiện.

Tôi cũng tìm thấy

firewall-cmd --zone=public --add-port=2888/tcp 

nhưng điều này không tồn tại khởi động lại.

Vì vậy, làm thế nào tôi có thể mở các cổng và làm cho nó sống sót khởi động lại?


Stack Overflow là một trang web dành cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như lạc đề vì nó không liên quan đến lập trình hay phát triển. Xem những chủ đề nào tôi có thể hỏi về đây trong Trung tâm trợ giúp. Có lẽ Super User hoặc Unix & Linux Stack Exchange sẽ là một nơi tốt hơn để hỏi.
jww

Câu trả lời:


653

Sử dụng lệnh này để tìm (các) vùng hoạt động của bạn:

firewall-cmd --get-active-zones

Nó sẽ nói hoặc công khai, dmz, hoặc cái gì khác. Bạn chỉ nên áp dụng cho các khu vực cần thiết.

Trong trường hợp thử công khai:

firewall-cmd --zone=public --add-port=2888/tcp --permanent

Sau đó nhớ tải lại tường lửa để thay đổi có hiệu lực.

firewall-cmd --reload

Mặt khác, thay thế công khai cho khu vực của bạn, ví dụ, nếu khu vực của bạn là dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent

29
Tôi đã sử dụng lệnh này nhưng nó không hiệu quả với tôi, những gì đã làm, đã đổi --zone=dmzthành--zone=public
Tom Hall

2
Có nó cũng hữu ích để sử dụng công cộng. Vui lòng kiểm tra lệnh dưới đây của Sotsir để sửa.
ganeshragav

23
Cả hai câu trả lời hàng đầu ở đây thực sự giải thích những gì --permanent, họ chỉ nói để làm điều đó. Cả hai sẽ là câu trả lời đầy đủ và hữu ích hơn nếu nó được giải thích cách câu trả lời hoạt động. Từ một trong các tài nguyên của OP: "Các quy tắc có thể được tạo vĩnh viễn bằng cách thêm tùy chọn --permanent [...]. Nếu quy tắc không được thực hiện vĩnh viễn thì chúng cần được áp dụng mỗi lần sau khi nhận được thông báo bắt đầu, khởi động lại hoặc tải lại từ tường lửa bằng D-BUS. "
dKen 3/03/2015

9
Đừng chỉ mù quáng cho phép các cổng trong tất cả các khu vực cho đến khi bạn nhấn đúng. Sử dụng firewall-cmd --get-active-zonesđể tìm hiểu khu vực nào được sử dụng trên hệ thống của bạn. Ngoài ra, người đàn ông tường lửa-cmd.
bản6

1
Trong việc đọc tài liệu fedora nó nói The --permanent option needs to be the first option for all permanent calls. Tôi đã không nhận được bất kỳ lỗi nào khi sử dụng ở trên, nhưng tôi không chắc liệu điều này có thể gây ra sự cố cho người khác không.
Marc

113

Câu trả lời của ganeshragav là chính xác, nhưng cũng hữu ích khi biết rằng bạn có thể sử dụng:

firewall-cmd --permanent --zone=public --add-port=2888/tcp 

nhưng nếu là một dịch vụ đã biết, bạn có thể sử dụng:

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

và sau đó tải lại tường lửa

firewall-cmd --reload

[Câu trả lời được sửa đổi để phản ánh nhận xét của Martin Peter, câu trả lời ban đầu có --permanentở cuối dòng lệnh]


8
Tôi sẽ không dựa vào việc sử dụng --permanenttùy chọn ở cuối tuyên bố. Các tài liệu chỉ ra rõ ràng, rằng nó nên là lựa chọn đầu tiên.
Martin Peter

1
@MartinPeter man firewall-cmdkhông có dấu hiệu nào như vậy trên máy của tôi (Fedora 21).
Jonathon Reinhart

@JonathonReinhart Tôi đang đề cập đến FedD 's FirewallD Wiki nêu rõ: The --permanent option needs to be the first option for all permanent calls.
Martin Peter

nó mang lại cho tôi tường lửa Không chạy
Rahul Tathod

50

CentOS (RHEL) 7, đã thay đổi tường lửa để sử dụng firewall-cmd, trong đó có khái niệm về các khu vực giống như phiên bản Windows của các mạng Công cộng, Gia đình và Riêng tư. Bạn nên nhìn vào đây để tìm ra cái nào bạn nghĩ bạn nên sử dụng. EL7 sử dụng publictheo mặc định, đó là những gì ví dụ của tôi dưới đây sử dụng.

Bạn có thể kiểm tra khu vực bạn đang sử dụng firewall-cmd --list-allvà thay đổi nó với firewall-cmd --set-default-zone=<zone>.

Sau đó, bạn sẽ biết khu vực nào cho phép dịch vụ (hoặc cổng) trên:

firewall-cmd --permanent --zone=<zone> --add-service=http

firewall-cmd --permanent --zone=<zone> --add-port=80/tcp

Bạn có thể kiểm tra xem cổng có thực sự được mở hay không bằng cách chạy:

firewall-cmd --zone=<zone> --query-port=80/tcp

firewall-cmd --zone=<zone> --query-service=http

Theo tài liệu ,

Khi thực hiện thay đổi cài đặt tường lửa ở chế độ Thường trực, lựa chọn của bạn sẽ chỉ có hiệu lực khi bạn tải lại tường lửa hoặc hệ thống khởi động lại.

Bạn có thể tải lại các cài đặt tường lửa bằng : firewall-cmd --reload.


26

Fedora, đã làm điều đó thông qua iptables

sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save

Có vẻ như để làm việc


23

Để xem các cổng mở, sử dụng lệnh sau.

firewall-cmd --list-ports

Chúng tôi sử dụng như sau để xem các dịch vụ có cổng được mở.

firewall-cmd --list-services

Chúng tôi sử dụng cách sau để xem các dịch vụ có cổng đang mở và xem cổng mở

firewall-cmd --list-all

Để thêm một dịch vụ vào tường lửa, chúng tôi sử dụng lệnh sau, trong trường hợp đó, dịch vụ sẽ sử dụng bất kỳ cổng nào để mở trong tường lửa.

firewall-cmd --add-services=ntp 

Để dịch vụ này được mở vĩnh viễn, chúng tôi sử dụng lệnh sau.

firewall-cmd —add-service=ntp --permanent 

Để thêm một cổng, sử dụng lệnh sau

firewall-cmd --add-port=132/tcp  --permanent

Để chạy tường lửa phải được tải lại bằng lệnh sau.

firewall-cmd --reload

Ya Ali


Trên "tường lửa-cmd -add-service = ntp --permanent" nên được thay đổi thành "tường lửa-cmd --add-service = ntp --permanent"
Maduranga Siriwardena

14

Mặc dù ganeshragavSotsir cung cấp các phương pháp tiếp cận chính xác và có thể áp dụng trực tiếp, nhưng thật hữu ích khi lưu ý rằng bạn có thể thêm các dịch vụ của riêng mình vào /etc/firewalld/services. Để tìm cảm hứng, hãy nhìn vào /usr/lib/firewalld/services/, nơi các dịch vụ được xác định trước của tường lửa được đặt.

Ưu điểm của phương pháp này là sau này bạn sẽ biết tại sao các cổng này được mở, như bạn đã mô tả nó trong tệp dịch vụ. Ngoài ra, bây giờ bạn có thể áp dụng nó cho bất kỳ khu vực nào mà không có nguy cơ lỗi chính tả. Hơn nữa, các thay đổi đối với dịch vụ sẽ không cần phải được áp dụng cho tất cả các vùng riêng biệt mà chỉ áp dụng cho tệp dịch vụ.

Ví dụ: bạn có thể tạo /etc/firewalld/services/foobar.xml:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>FooBar</short>
  <description>
    This option allows you to create FooBar connections between
    your computer and mobile device. You need to have FooBar
    installed on both sides for this option to be useful.
  </description>
  <port protocol="tcp" port="2888"/>
  <port protocol="tcp" port="3888"/>
</service>

(Để biết thông tin về cú pháp, hãy làm man firewalld.service.)

Khi tệp này được tạo, bạn có thể firewall-cmd --reloadđể nó trở nên khả dụng và sau đó thêm nó vĩnh viễn vào một số vùng với

firewall-cmd --permanent --zone=<zone> --add-service=foobar

theo sau firewall-cmd --reloadđể làm cho nó hoạt động ngay lập tức.


6

Để xem các cổng mở, sử dụng lệnh sau:

firewall-cmd --list-ports

Chúng tôi sử dụng như sau để xem các dịch vụ có cổng được mở:

firewall-cmd --list-services

Chúng tôi sử dụng cách sau để xem các dịch vụ có cổng đang mở và xem cổng mở:

firewall-cmd --list-all

Để thêm dịch vụ vào tường lửa, chúng tôi sử dụng lệnh sau, trong trường hợp đó, dịch vụ sẽ sử dụng bất kỳ cổng nào để mở trong tường lửa:

firewall-cmd --add-services=ntp 

Để dịch vụ này được mở vĩnh viễn, chúng tôi sử dụng lệnh sau:

firewall-cmd -add-service=ntp --permanent 

Để thêm một cổng, sử dụng lệnh sau:

firewall-cmd --add-port=132/tcp  --permanent

4

Các câu trả lời hàng đầu ở đây có tác dụng, nhưng tôi đã tìm thấy điều gì đó tao nhã hơn trong câu trả lời của Michael Hampton cho một câu hỏi liên quan. Tùy chọn "mới" (tường lửa-0,3.9-11 +) --runtime-to-permanentđể firewall-cmdcho phép bạn tạo quy tắc thời gian chạy và kiểm tra chúng trước khi biến chúng vĩnh viễn:

$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent

Hoặc để hoàn nguyên các thay đổi chỉ trong thời gian chạy:

$ firewall-cmd --reload

Cũng xem bình luận của Antony Nguyễn . Rõ ràng tường lửa-cmd - tải lại có thể không hoạt động đúng trong một số trường hợp quy tắc đã bị xóa. Trong trường hợp đó, anh đề nghị khởi động lại dịch vụ tường lửa:

$ systemctl restart firewalld

1

Nếu bạn có nhiều cổng để cho phép trong Centos 7 FIrewalld thì chúng ta có thể sử dụng lệnh sau.

#firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent

#firewall-cmd --reload


And check the Port opened or not after reloading the firewall.


#firewall-cmd --list-port


For other configuration [Linuxwindo.com][1]

0

Nếu bạn đã quen thuộc với dịch vụ iptables như trong centos 6 trở về trước, bạn vẫn có thể sử dụng dịch vụ iptables bằng cách cài đặt thủ công:

bước 1 => cài đặt repel epel

yum cài đặt phát hành epel

bước 2 => cài đặt dịch vụ iptables

yum cài đặt iptables-services

bước 3 => dừng dịch vụ tường lửa

systemctl dừng tường lửa

Bước 4 => tắt dịch vụ tường lửa khi khởi động

systemctl tắt tường lửa

bước 5 => bắt đầu dịch vụ iptables

hệ thống bắt đầu iptables

Bước 6 => bật iptables khi khởi động

systemctl cho phép iptables

cuối cùng, bây giờ bạn có thể chỉnh sửa cấu hình iptables của mình tại / etc / sysconfig / iptables.

Vì vậy -> chỉnh sửa quy tắc -> tải lại / khởi động lại.

làm như centos cũ hơn với chức năng tương tự như tường lửa.


0

Firewalld là một chút không trực quan cho cựu chiến binh iptables. Đối với những người thích tường lửa điều khiển iptables với cú pháp giống iptables trong một cây có thể cấu hình dễ dàng, hãy thử thay thế tường lửa bằng fwtree: https://www.linuxglobal.com/fwtree-flexible-linux-tree-basing-firewall/ và sau đó làm như sau:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 

0

Xin chào trong Centos 7 tường lửa-cmd. Có đúng nếu bạn sử dụng tường lửa-cmd --zone = công khai --add-port = 2888 / tcp nhưng nếu bạn tải lại tường lửa firewal-cmd --reload

cấu hình của bạn sẽ không được lưu

bạn cần thêm khóa

tường lửa-cmd --permanent --zone = công cộng --add-port = 2888 / tcp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.