Làm thế nào tôi có thể sử dụng iptables trên centos 7? [đóng cửa]


154

Tôi đã cài đặt CentOS 7 với cấu hình tối thiểu (công cụ os + dev). Tôi đang cố mở 80 cổng cho httpddịch vụ, nhưng có gì đó không ổn với dịch vụ iptables của tôi ... có gì sai với nó? Tôi đang làm gì sai?

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.

hãy thử /etc/init.d/iptables lưu
Satya

8
Tôi đã có câu trả lời ở đây . RHEL 7 sử dụng tường lửa instad của iptables
Meiblorn 15/07/14

Câu trả lời:


333

Với RHEL 7 / CentOS 7, tường lửa đã được giới thiệu để quản lý iptables. IMHO, tường lửa phù hợp với máy trạm hơn là môi trường máy chủ.

Có thể quay lại thiết lập iptables cổ điển hơn. Đầu tiên, dừng và che dấu dịch vụ tường lửa:

systemctl stop firewalld
systemctl mask firewalld

Sau đó, cài đặt gói iptables-services:

yum install iptables-services

Kích hoạt dịch vụ khi khởi động:

systemctl enable iptables

Quản lý dịch vụ

systemctl [stop|start|restart] iptables

Lưu quy tắc tường lửa của bạn có thể được thực hiện như sau:

service iptables save

hoặc là

/usr/libexec/iptables/iptables.init save

5
Nó không lưu iptables. Khởi động lại máy chủ sẽ mất tất cả các thay đổi.
roosevelt

2
Trên hệ thống của tôi, iptables được lưu chính xác. Bạn đã chắc chắn rằng dịch vụ iptables được bắt đầu khi khởi động chưa? Bạn có thể làm điều này bằng cách chạy 'systemctl enable iptables'
Sgaduuw

1
Bạn cũng có thể chạy tường lửa sẽ thêm các quy tắc iptables bổ sung vào danh sách (mỗi khi bạn khởi động lại hệ thống). Để dừng tường lửa chạy "systemctl mask Firewalld"
TroodoN-Mike

Đã thêm thông tin về mặt nạ tường lửa vào câu trả lời, như @ TroodoN-Mike đề xuất
Sgaduuw

8
@Sgaduuw Bạn có thể giải thích rõ hơn về lý do tại sao bạn nghĩ fitewalld không / ít phù hợp với máy chủ không?
Alexander Groß

98

RHEL và CentOS 7 sử dụng tường lửa-cmd thay vì iptables . Bạn nên sử dụng loại lệnh đó:

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent

Sau đó, bạn có thể tải lại các quy tắc để đảm bảo rằng mọi thứ đều ổn

firewall-cmd --reload

Điều này tốt hơn so với sử dụng iptable-save, đặc biệt nếu bạn có kế hoạch sử dụng lxc hoặc docker container. Khởi chạy dịch vụ docker sẽ thêm một số quy tắc mà lệnh iptable-save sẽ nhắc. Nếu bạn lưu kết quả, bạn sẽ có rất nhiều quy tắc KHÔNG nên lưu. Bởi vì các container docker có thể thay đổi địa chỉ IP của chúng trong lần khởi động lại tiếp theo.

Tường lửa-cmd với tùy chọn vĩnh viễn là tốt hơn cho điều đó.

Kiểm tra "man tường lửa-cmd" hoặc kiểm tra tài liệu tường lửa chính thức để xem các tùy chọn. Có rất nhiều tùy chọn để kiểm tra các vùng, cấu hình, cách thức hoạt động ... trang man đã thực sự hoàn tất.

Tôi thực sự khuyên bạn không nên sử dụng dịch vụ iptables kể từ Centos 7


1
Giải thích tuyệt vời - làm việc hoàn hảo cho tôi. Cảm ơn!
Digitalformula

1
tường lửa-cmd - tải lại không hoạt động. Tôi đã phải khởi động lại bằng cách sử dụng "systemctl restart Firewalld" để các thay đổi có hiệu lực.
Basil Musa

"Bởi vì tường lửa là động, nên các thay đổi về cấu hình của nó có thể được thực hiện bất cứ lúc nào và được thực hiện ngay lập tức. Không có phần nào của tường lửa cần được tải lại, do đó không có sự gián đoạn vô ý của các kết nối mạng hiện tại" - từ các tài liệu tường lửa chính thức
yicon

Hiệu quả và sạch sẽ. Cảm ơn rất nhiều
Vaibhav

17

Tôi gặp vấn đề là việc khởi động lại sẽ không khởi động được iptables.

Điều này đã sửa nó:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

Trên CentOS 7 không hoạt động: # systemctl start iptablescho Failed to start iptables.service: Unit not found.# systemctl start ip6tableschoFailed to start ip6tables.service: Unit not found.
PKHunter

14

Hãy thử lệnh sau iptables-save.


man iptables-save - kết xuất các quy tắc iptables vào thiết bị xuất chuẩn.
Paul Hargreaves

1
sau đó chúng ta có thể sử dụngiptables-save > /etc/sysconfig/iptables
tổng hợp

5

Tôi đã sửa đổi /etc/sysconfig/ip6tables-configtập tin thay đổi:

IP6TABLES_SAVE_ON_STOP="no"

Đến:

IP6TABLES_SAVE_ON_STOP="yes"

Và điều này:

IP6TABLES_SAVE_ON_RESTART="no"

Đến:

IP6TABLES_SAVE_ON_RESTART="yes"

Điều này dường như lưu các thay đổi tôi đã thực hiện bằng cách sử dụng các lệnh iptables thông qua khởi động lại.


1

Đặt cấu hình IPtables trong tệp truyền thống và nó sẽ được tải sau khi khởi động:

/ etc / sysconfig / iptables


1

Tháng trước tôi đã cố gắng định cấu hình iptables trên bộ chứa LXC VM, nhưng mỗi lần sau khi khởi động lại, cấu hình iptables không được tự động tải.

Cách duy nhất để tôi làm cho nó hoạt động là chạy lệnh sau:

yum -y cài đặt iptables-services; systemctl vô hiệu hóa tường lửa; systemctl mặt nạ tường lửa; iptables dịch vụ khởi động lại; dịch vụ iptables lưu


0

Và để thêm, bạn cũng có thể làm tương tự cho ip6tables sau khi chạy systemctl mask firewalldlệnh:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0

Nếu bạn làm như vậy và bạn đang sử dụng fail2ban, bạn sẽ cần bật các bộ lọc / hành động thích hợp:

Đặt các dòng sau vào /etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400

Kích hoạt và bắt đầu fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

Tham khảo: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

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.