2014-07-15 17 views
120

Ho installato CentOS 7 con una configurazione minima (strumenti os + dev). Sto cercando di aprire 80 porte per il servizio httpd, ma qualcosa non va nel mio servizio iptables ... cosa c'è che non va? Che cosa sto facendo di sbagliato?Come posso usare iptables su centos 7?

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

provare questo /etc/init.d/iptables salvare – Satya

+8

ho avuto la risposta [qui] (http: // serverfault.com/questions/470287/how-to-enable-iptables-instead-of-firewalld-services-on-rhel-7-and-fedora-18). RHEL 7 utilizza ** firewalld ** instad di ** iptables ** – Meiblorn

risposta

270

Con RHEL 7/CentOS 7, firewalld è stato introdotto per gestire iptables. IMHO, firewalld è più adatto per le workstation che per gli ambienti server.

È possibile tornare a una configurazione di iptables più classica. In primo luogo, fermare e maschera il servizio firewalld:

systemctl stop firewalld 
systemctl mask firewalld 

Quindi, installare il pacchetto iptables-services:

yum install iptables-services 

attivare il servizio in fase di avvio:

systemctl enable iptables 

gestione del servizio

systemctl [stop|start|restart] iptables 

Salvare le regole del firewall può essere fatto come segue:

service iptables save 

o

/usr/libexec/iptables/iptables.init save 
+3

Non salva gli iptables. Il riavvio del server perde tutte le modifiche. – roosevelt

+2

Sul mio sistema gli iptables sono salvati correttamente. Ti sei assicurato che il servizio iptables sia avviato all'avvio? Puoi farlo eseguendo 'systemctl enable iptables' – Sgaduuw

+1

Potresti anche avere firewalld in esecuzione che aggiungerà altre regole di iptables alla lista (ogni volta che riavvierai il sistema). Per fermare firewalld eseguire "systemctl mask firewalld" –

14

ho avuto il problema che il riavvio non sarebbe avviare iptables.

Questo problema è stato risolto:

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

Su CentOS 7 non funziona: '# systemctl start iptables' dà ' Impossibile avviare iptables.service: Unità non trovata. E '# systemctl start ip6tables' dà' Impossibile avviare ip6tables.service: Unità non trovata. ' – PKHunter

80

RHEL and CentOS 7 use firewall-cmd instead of iptables. Si consiglia di utilizzare questo tipo di comando:

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

Quindi, è possibile ricaricare le regole per essere sicuri che tutto è ok

firewall-cmd --reload 

Questo è meglio che usare iptable-Save, espacially se si prevede di utilizzare container lxc o docker. L'avvio dei servizi di finestra mobile aggiungerà alcune regole richieste dal comando iptable-save. Se salvi il risultato, avrai un sacco di regole che NON dovrebbero essere salvate. Poiché i contenitori docker possono cambiarli al prossimo riavvio.

Il firewall-cmd con opzione permanente è migliore per questo.

Controllare "man firewall-cmd" o check the official firewalld docs per visualizzare le opzioni. Ci sono molte opzioni per controllare zone, configurazione, come funziona ... la pagina man è veramente completa.

ho fortemente Consigliamo di non usare iptables-servizio dal Centos 7

+1

Ottima spiegazione: ha funzionato perfettamente per me. Grazie! – digitalformula

+1

firewall-cmd --reload non funziona. Ho dovuto riavviare utilizzando "systemctl restart firewalld" per rendere effettive le modifiche. –

+0

"Poiché firewalld è dinamico, le modifiche alla configurazione possono essere apportate in qualsiasi momento e vengono implementate immediatamente. Nessuna parte del firewall deve essere ricaricata, quindi non c'è alcuna interruzione involontaria delle connessioni di rete esistenti" - da [il documenti firewall ufficiali] (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Migration_Planning_Guide/sect-Red_Hat_Enterprise_Linux-Migration_Planning_Guide-Security_and_Access_Control.html) – yicone

9

Provate il seguente comando iptables-save.

+0

man iptables-save - scarica le regole di iptables su stdout . –

+0

quindi possiamo usare 'iptables-save>/etc/sysconfig/iptables' – dgregory

2

ho modificato il file /etc/sysconfig/ip6tables-config cambia:

IP6TABLES_SAVE_ON_STOP="no" 

A:

IP6TABLES_SAVE_ON_STOP="yes" 

E questo:

IP6TABLES_SAVE_ON_RESTART="no" 

A:

IP6TABLES_SAVE_ON_RESTART="yes" 

Sembrava salvare le modifiche apportate utilizzando i comandi iptables tramite un riavvio.

1

Mettere la configurazione di iptables nel file tradizionale e sarà caricato dopo l'avvio:

/etc/sysconfig/iptables

0

E per aggiungere, si dovrebbe anche essere in grado di fare lo stesso per ip6tables dopo l'esecuzione del comando systemctl mask firewalld:

systemctl start ip6tables.service 
    systemctl enable ip6tables.service 
0

Se lo fa, e si sta utilizzando fail2ban, è necessario abilitare la corretta filtri/azioni:

Mettere le seguenti righe in /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 

Attivare e avviare fail2ban:

systemctl enable fail2ban 
systemctl start fail2ban 

Riferimento: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

0

Il mese scorso ho provato a configurare iptables in un contenitore LXC VM, ma ogni volta dopo il riavvio la configurazione di iptables non è stata caricata automaticamente.

L'unico modo per me per farlo funzionare è stato eseguendo il comando seguente:

yum -y install iptables-services; systemctl disable firewalld; systemctl mask firewalld; service iptables restart; service iptables save