Як я можу використовувати iptables на centos 7? [зачинено]


154

Я встановив CentOS 7 з мінімальною конфігурацією (інструменти os + dev). Я намагаюся відкрити 80 порт для httpdобслуговування, але щось не так із моєю службою iptables ... що з цим? Що я роблю неправильно?

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

спробуйте це /etc/init.d/iptables save
Satya

8
Я отримав відповідь тут . RHEL 7 використовує firewalld instad iptables
Meiblorn

Відповіді:


333

За допомогою RHEL 7 / CentOS 7 було введено firewalld для управління iptables. IMHO, firewalld більше підходить для робочих станцій, ніж для серверів.

Можна повернутися до більш класичної установки iptables. По-перше, зупиніть і замаскуйте службу firewalld:

systemctl stop firewalld
systemctl mask firewalld

Потім встановіть пакет iptables-services:

yum install iptables-services

Увімкніть послугу під час завантаження:

systemctl enable iptables

Управління послугою

systemctl [stop|start|restart] iptables

Збереження правил брандмауера можна зробити наступним чином:

service iptables save

або

/usr/libexec/iptables/iptables.init save

5
Це не збереження iptables. Перезавантаження сервера втрачає всі зміни.
roosevelt

2
У моїй системі iptables зберігаються правильно. Ви переконалися, що послуга iptables запускається під час завантаження? Ви можете зробити це, запустивши 'systemctl enable iptables'
Sgaduuw

1
Також у вас може бути запущений firewalld, який додаватиме до списку додаткові правила iptables (кожного разу при перезавантаженні системи). Щоб зупинити firewalld запустіть "systemctl mask firewalld"
TroodoN-Майк

У відповідь додано інформацію про маскування firewalld, як @ TroodoN-Mike запропонував
Sgaduuw

8
@Sgaduuw Чи можете ви, будь ласка, детальніше пояснити, чому ви вважаєте, що fitewalld не / менш підходить для серверів?
Олександр Грос

98

RHEL і CentOS 7 використовують cmd брандмауера замість iptables . Ви повинні використовувати таку команду:

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

Потім ви можете перезавантажити правила, щоб бути впевненим, що все в порядку

firewall-cmd --reload

Це краще, ніж використовувати iptable-save, особливо якщо ви плануєте використовувати lxc або docker-контейнери. Запуск служб докера додасть деякі правила, про які підкаже команда iptable-save. Якщо ви збережете результат, у вас буде маса правил, які НЕ слід зберігати. Оскільки контейнери докера можуть змінювати їх ip-адреси при наступному перезавантаженні.

Кращий для цього брандмауер з постійною опцією.

Установіть прапорець "man firewall-cmd" або перевірте офіційні документи firewalld, щоб переглянути варіанти. Існує маса варіантів для перевірки зон, конфігурації, як це працює ... man page дійсно повно.

Я настійно рекомендую не використовувати iptables-сервіс з Centos 7


1
Чудове пояснення - прекрасно працював для мене. Дякую!
цифрові формули

1
firewall-cmd - перезавантаження не працює. Мені довелося перезапустити, використовуючи "systemctl restart firewalld", щоб зміни вступили в силу.
Василь Муса

"Оскільки firewalld є динамічним, зміни в його конфігурацію можуть бути внесені в будь-який час і реалізовані негайно. Жодна частина брандмауера не повинна бути перезавантажена, щоб не було ненавмисних перерв існуючих мережевих з'єднань", - від офіційних документів firewalld
yicone

Ефективний і чистий. Дякую багато
Vaibhav

17

У мене виникла проблема, що перезавантаження не запустить iptables.

Це виправлено:

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

На CentOS 7 не працює: # systemctl start iptablesнадає Failed to start iptables.service: Unit not found.і # systemctl start ip6tablesдаєFailed to start ip6tables.service: Unit not found.
PKHunter


5

Я змінив /etc/sysconfig/ip6tables-configзміни файлу:

IP6TABLES_SAVE_ON_STOP="no"

До:

IP6TABLES_SAVE_ON_STOP="yes"

І це:

IP6TABLES_SAVE_ON_RESTART="no"

До:

IP6TABLES_SAVE_ON_RESTART="yes"

Це, здавалося, врятувало зміни, які я вніс за допомогою команд iptables через перезавантаження.


1

Помістіть конфігурацію IPtables у традиційний файл, і він буде завантажений після завантаження:

/ etc / sysconfig / iptables


1

Минулого місяця я намагався налаштувати iptables на контейнер LMC VM, але кожен раз після перезавантаження конфігурація iptables не завантажувалася автоматично.

Єдиний спосіб, щоб я працював, це виконати наступну команду:

yum - ви встановлюєте iptables-сервіси; systemctl відключити firewalld; systemctl маска firewalld; перезапуск службових iptables; сервісні iptables зберегти


0

І щоб додати, ви також зможете зробити те ж саме для ip6tables після запуску systemctl mask firewalldкоманди:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0

Якщо ви це зробите, і ви використовуєте fail2ban, вам потрібно буде включити відповідні фільтри / дії:

Поставте наступні рядки /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

Увімкнути та запустити fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

Довідка: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.