Ho installato CentOS 7 con una configurazione minima (os + dev tools). 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?
# 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.
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. Per prima cosa, interrompi e maschera il servizio firewalld:
systemctl stop firewalld
systemctl mask firewalld
Quindi, installa il pacchetto iptables-services:
yum install iptables-services
Abilita il servizio al momento dell'avvio:
systemctl enable iptables
Gestire il servizio
systemctl [stop|start|restart] iptables
Il salvataggio delle regole del firewall può essere eseguito come segue:
service iptables save
o
/usr/libexec/iptables/iptables.init save
RHEL e CentOS 7 usano firewall-cmd invece di iptables . Dovresti usare questo tipo di comando:
# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent
Quindi, puoi ricaricare le regole per essere sicuro che tutto sia a posto
firewall-cmd --reload
Questo è meglio che usare iptable-save, specialmente se si prevede di usare container lxc o docker. L'avvio dei servizi di finestra mobile aggiungerà alcune regole che il comando iptable-save richiederà. Se salvi il risultato, avrai un sacco di regole che NON dovrebbero essere salvate. Poiché i contenitori docker possono cambiarli al prossimo riavvio.
Firewall-cmd con opzione permanente è meglio per questo.
Controlla "man firewall-cmd" o controlla i documenti ufficiali firewalld per vedere le opzioni. Ci sono molte opzioni per controllare zone, configurazione, come funziona ... la pagina man è veramente completa.
Consiglio vivamente di non usare iptables-service da Centos 7
Ho avuto il problema che il riavvio non avrebbe avviato iptables.
Questo l'ha risolto:
yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
Prova il seguente comando iptables-save
.
Ho modificato il file /etc/sysconfig/ip6tables-config
cambiando:
IP6TABLES_SAVE_ON_STOP="no"
A:
IP6TABLES_SAVE_ON_STOP="yes"
E questo:
IP6TABLES_SAVE_ON_RESTART="no"
A:
IP6TABLES_SAVE_ON_RESTART="yes"
Questo sembrava salvare le modifiche apportate usando i comandi iptables attraverso un riavvio.
Il mese scorso ho provato a configurare iptables su un contenitore LXC VM, ma ogni volta dopo il riavvio la configurazione di iptables non veniva caricata automaticamente.
L'unico modo per farlo funzionare era eseguire il seguente comando:
yum -y installa iptables-services; systemctl disable firewalld; systemctl mask firewalld; servizio iptables restart; servizio iptables salvare
Inserisci la configurazione di IPtables nel file tradizionale e verrà caricata dopo l'avvio:
/ Etc/sysconfig/iptables
E per aggiungere, dovresti essere in grado di fare lo stesso per ip6tables dopo aver eseguito il comando systemctl mask firewalld
:
systemctl start ip6tables.service
systemctl enable ip6tables.service
Se lo fai, e stai usando fail2ban, dovrai abilitare i filtri/le azioni corretti:
Inserisci 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
Abilita e avvia fail2ban:
systemctl enable fail2ban
systemctl start fail2ban
Riferimento: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/