Introducció
Requisits previs
Pas 1: determineu els serveis i els ports utilitzats al vostre servidor
Pas 2: configureu les regles d'iptables
Pas 3: deseu les configuracions
Solucions alternatives per al bloqueig accidental
Introducció
Un tallafoc és un tipus d'eina de seguretat de xarxa que controla el trànsit de xarxa entrant i sortint segons el seu conjunt de regles predefinit. Podem utilitzar un tallafoc juntament amb altres mesures de seguretat per protegir els nostres servidors dels atacs i els atacs dels pirates informàtics.
El disseny d'un tallafoc pot ser un maquinari dedicat o un programa de programari que s'executa a la nostra màquina. A CentOS 6, el programa tallafocs predeterminat és iptables.
En aquest article, us mostraré com configurar un tallafocs bàsic d'iptables basat en l'aplicació Vultr "WordPress a CentOS 6 x64", que bloquejarà tot el trànsit excepte els serveis web, SSH, NTP, DNS i ping. Tanmateix, aquesta és només una configuració preliminar que satisfà les necessitats de seguretat comunes. Necessitareu una configuració d'iptables més sofisticada si teniu més requisits.
Nota :
Si afegiu una adreça IPv6 al vostre servidor, també hauríeu de configurar el servei ip6tables. Configurar ip6tables està fora de l'abast d'aquest article.
A diferència de CentOS 6, iptables ja no és el programa tallafocs predeterminat a CentOS 7 i s'ha substituït per un programa anomenat firewalld. Si teniu previst utilitzar CentOS 7, haureu de configurar el vostre tallafoc mitjançant firewalld.
Requisits previs
Desplegueu recentment una instància de servidor amb l'aplicació Vultr "WordPress a CentOS 6 x64" i, a continuació, inicieu la sessió com a root.
Pas 1: determineu els serveis i els ports utilitzats al vostre servidor
Suposo que aquest servidor només allotjarà un bloc de WordPress, i no s'utilitzarà com a router ni proporcionarà altres serveis (per exemple, correu, FTP, IRC, etc.).
Aquí necessitem els serveis següents:
- HTTP (TCP al port 80)
- HTTPS (TCP al port 443)
- SSH (TCP al port 22 per defecte, es pot canviar per motius de seguretat)
- NTP (UDP al port 123)
- DNS (TCP i UDP al port 53)
- ping (ICMP)
Tots els altres ports innecessaris es bloquejaran.
Iptables controla el trànsit amb una llista de regles. Quan s'envien paquets de xarxa al nostre servidor, iptables els inspeccionarà utilitzant cada regla en seqüència i prendrà les accions en conseqüència. Si es compleix una regla, les altres regles seran ignorades. Si no es compleix cap regla, iptables utilitzarà la política predeterminada.
Tot el trànsit es pot classificar com a INPUT, OUTPUT i FORWARD.
- El trànsit d'ENTRADA pot ser normal o maliciós, s'ha de permetre selectivament.
- El trànsit OUTPUT normalment es considera segur i s'hauria de permetre.
- El trànsit FORWARD és inútil i s'ha de bloquejar.
Ara, anem a configurar les regles d'iptables segons les nostres necessitats. Totes les ordres següents s'han d'introduir des del vostre terminal SSH com a root.
Consulteu les normes existents:
iptables -L -n
Elimina totes les regles existents:
iptables -F; iptables -X; iptables -Z
Com que els canvis a la configuració d'iptables tindran efecte immediatament, si configureu malament les regles d'iptables, és possible que us bloquegi el vostre servidor. Podeu evitar bloquejos accidentals amb l'ordre següent. Recordeu substituir-lo [Your-IP-Address]amb la vostra pròpia adreça IP pública o interval d'adreces IP (per exemple, 201.55.119.43 o 201.55.119.0/24).
iptables -A INPUT -s [Your-IP-Address] -p tcp --dport 22 -j ACCEPT
Permet tot el trànsit de retrocés (baix) i deixa tot el trànsit a 127.0.0.0/8 que no sigui lo:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -j REJECT
Bloqueja alguns atacs habituals:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Accepteu totes les connexions entrants establertes:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Permet el trànsit entrant HTTP i HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Permet connexions SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Permet connexions NTP:
iptables -A INPUT -p udp --dport 123 -j ACCEPT
Permet consultes DNS:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Permetre ping:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Finalment, establiu les polítiques predeterminades:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
Pas 3: deseu les configuracions
Cadascun dels canvis que hem fet anteriorment s'han fet efectius, però no són permanents. Si no els desem al disc dur, es perdran un cop es reiniciï el sistema.
Deseu la configuració d'iptables amb l'ordre següent:
service iptables save
Els nostres canvis es desaran al fitxer /etc/sysconfig/iptables. Podeu revisar o modificar les regles editant aquest fitxer.
Solucions alternatives per al bloqueig accidental
Si us bloquegen el vostre servidor a causa d'un error de configuració, encara podeu recuperar l'accés amb algunes solucions alternatives.
- Si encara no heu desat les vostres modificacions a les regles d'iptables, podeu reiniciar el vostre servidor des de la interfície del lloc web de Vultr i, aleshores, els vostres canvis s'eliminaran.
- Si heu desat els vostres canvis, podeu iniciar sessió al vostre servidor a través de la consola des de la interfície del lloc web de Vultr i introduir-los
iptables -Fper esborrar totes les regles d'iptables. A continuació, podeu tornar a configurar les regles.