Centos 7 lưu cài đặt iptables


58

Vấn đề: iptables đặt lại cài đặt mặc định sau khi khởi động lại máy chủ.

Tôi đang cố gắng đặt quy tắc như thế này:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

sau đó tôi làm:

service iptables save

và nó viết lại một cái gì đó như thế này

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

và sau này tôi chỉ chạy (điều này đã được thực hiện một lần):

chkconfig iptables on (Tôi đã đọc được rằng việc này phải được thực hiện để khôi phục cài đặt sau khi khởi động lại)

Sau đó tôi khởi động lại và chạy lệnh này:

systemctl list-unit-files | grep iptables

và tôi thấy rằng iptables.service đã được bật, tuy nhiên, quy tắc (để mở cổng 3000) không hoạt động nữa.

Làm cách nào để duy trì các cài đặt này?


Tại sao bạn không sử dụng tường lửa? Nó có lẽ vẫn đang chạy.
Michael Hampton

Có lẽ bởi vì tường lửa không phù hợp với môi trường máy chủ ...
Juan Jimenez

Câu trả lời:


67

CentOS 7 hiện đang sử dụng FirewallD !

Thí dụ:

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

tải lại quy tắc:

firewall-cmd --reload

2
bất kỳ ý tưởng tại sao hình ảnh centos7 từ AWS AMI không có tường lửaD.
Saad Masood

5
HOẶC bạn có thể vô hiệu hóa firewalld và cài đặt "iptables-dịch vụ" trọn gói để đạt được khả năng tương thích gần iptables mẹ đẻ :)
vagarwal

1
Tôi đã thử định cấu hình cổng chuyển tiếp 80 -> 8180 cho lo ( --zone=trusted) với tường lửa-cmd nhưng nó không hoạt động (nó hoạt động --zone=public) Làm như vậy với iptables sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8180 ; sudo /sbin/iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180hoạt động (nhưng mỗi lần firewalld --reloadmất đều hoàn tác điều này)
djb

@saad: bởi vì aws đã cung cấp dịch vụ tường lửa do đó ami có thể được giữ nhỏ
roothahn

Không phải vậy! Tôi đã đặt hàng VPS Centos 7 và mặc định nó có iptables! Phiên bản HĐH: 7.5.1804 (Lõi)
codezombie

66

Vô hiệu hóa tường lửa bằng lệnh sau:

systemctl disable firewalld

Sau đó cài đặt iptables-service bằng lệnh sau:

yum install iptables-services

Sau đó kích hoạt iptables dưới dạng dịch vụ:

systemctl enable iptables

Bây giờ bạn có thể lưu quy tắc iptable của mình bằng lệnh sau:

service iptables save

22

Trên CentOS 7 Minimal, bạn có thể cần cài đặt iptables-servicesgói (nhờ @RichieACC cho đề xuất ):

sudo yum install -y iptables-services

Và sau đó kích hoạt dịch vụ bằng cách sử dụng systemd:

sudo systemctl enable iptables.service

Và chạy initscript để lưu quy tắc tường lửa của bạn:

sudo /usr/libexec/iptables/iptables.init save

2

Có lẽ một kịch bản như thế này sẽ có ích cho bất cứ ai?

Coi chừng bạn sẽ mất bất cứ thứ gì hiện được cấu hình bởi vì nó loại bỏ tường lửa và xóa mọi quy tắc hiện tại trong bảng INPUT :

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

Tôi đoán bạn muốn tương tự trong trường hợp hệ thống của bạn có thể đạt được (bây giờ hoặc bất cứ lúc nào sau) bởi lưu lượng IPv6:

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup

1

Bạn có thể sửa đổi trực tiếp tệp / etc / sysconfig / iptables. Tải lại dịch vụ iptables để tải lại các quy tắc từ tệp đó. Tuy nhiên, như bạn đã nói, tường lửa là hệ thống tường lửa mặc định mới cho Centos và đây là cơ hội tốt để tìm hiểu cách sử dụng nó, bạn có nghĩ vậy không?


7
trong CentOS7 không còn tệp a / etc / sysconfig / iptables
roothahn

1
Xin lỗi @roothahn, nhưng nó chắc chắn tồn tại ... trừ khi bạn bỏ lỡ một số gói tất nhiên. Từ / / r trong / etc / sysconfig
ném đá

1
Vâng, /etc/sysconfig/iptablestôi cũng không tồn tại. Tuy nhiên, /etc/sysconfig/iptables-configkhông tồn tại. Nhưng nó không có các quy tắc tường lửa bên trong nó như iptablestập tin đã có trước đó.
Kentgrav

2
Tôi thấy rằng tập tin không có ở đó mặc định, cài đặt tối thiểu. CentOS 7 không cài đặt iptables.service theo mặc định. "yum install -y iptables.service" đã cài đặt dịch vụ và tạo mặc định / etc / sysconfig / iptables cho tôi.
RichieACC

3
Đó phải là "yum install iptables-services"
qris
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.