Como posso fazer o serviço iptables iniciar automaticamente após a reinicialização no CenOS / RHEL7?

8

Estou tendo alguns problemas com um servidor doméstico recém-instalado que estou preparando. Eu instalei o CentOS7 nele e descobri que as portas 80 e 443 estão desativadas por padrão. Eu, portanto, adicionei-os ao iptables com os seguintes comandos:

iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save

Eu também instalei o serviço iptable que não estava presente. O problema é que toda vez que eu reinicializo a máquina, as novas configurações são apagadas.

Eu tentei adicionar o serviço iptable ao chkconfig, mas recebo o seguinte erro:

[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory

Eu presumo que a razão pela qual eu recebo este erro é porque não há nenhum script iptable em /etc/init.d/, no entanto, alguém tem alguma idéia se eu estou realmente fazendo a coisa certa e / ou se há uma solução mais sólida maneira de fazer isso? Se não como posso resolver este problema? No final, eu só preciso usar o meu servidor doméstico como um servidor web / mail ...

Eu também tentei usar o comando 'systemctl enable iptables' como flemingovirus gentilmente sugerido, mas sem sucesso. Depois que entrei no comando, recebi a seguinte saída:

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants'/iptables.service''

UPDATE: Eu olhei para o iptables e o comando "service iptables save" funcionou corretamente. O problema parece ser devido ao serviço não iniciar na reinicialização. Eu consegui fazer o serviço rodar na reinicialização depois de adicionar a seguinte linha ao /etc/rc.local

systemctl start  iptables.service

no entanto eu me pergunto por que o comando 'systemctl enable iptables' não está funcionando neste caso. Estou esquecendo de algo? Obrigado

    
por Dave 16.08.2014 / 11:45

3 respostas

6

Embora essa questão seja antiga, deparei com o mesmo problema e descobri a solução aqui .

systemctl mask firewalld
systemctl stop firewalld

Basicamente, o firewalld está em conflito com o iptables e assim impede que o iptables carregue:

# cat /usr/lib/systemd/system/firewalld.service 
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service

...

Consegui resolver isso mascarando o firewalld para garantir que ele não seja iniciado automaticamente e nunca será iniciado depois disso. Claro que você precisará garantir que o iptables esteja ativado:

systemctl enable iptables
    
por 27.01.2016 / 06:46
4

os scripts de inicialização desapareceram. Agora seu systemctl . Está lá fora em todos os documentos do CentOS7. Para chkconfig ipatables ou para iniciar o serviço iptables na inicialização você precisa usar isto: -

systemctl ativa o iptables

Você deve verificar as coisas simples que devem ser conhecidas sobre o systemctl nos documentos da Cyberciti em iptables .

    
por 16.08.2014 / 13:05
0

Primeiro de tudo você deve tentar #chkconfig --add /sbin/iptables isto irá reconhecer o "iptables". então você deve criar um script para sua configuração do iptables e então fazer com que o script inicie na inicialização. crie um script:

#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save

e nomeie-o, por exemplo, myfirewall . torne-o executável com chmod +x myfirewall e escreva este ./myfirewall em /etc/rc.local para iniciar o script na inicialização.

    
por 16.08.2014 / 14:41