Por lo tanto, voy a asumir que su servidor no hace nada excepto el comercio electrónico . Por lo tanto, los únicos puertos que necesita son:
80 - HTTP predeterminado, para que pueda aceptar conexiones y redirigir a ...
443 - SSL / TLS para transacciones seguras.
SSH, pero ... es mejor elegir un puerto aleatorio alto en lugar del estándar 22.
Coloque SSH en un puerto aleatorio alto
En / etc / ssh / sshd_config, cambie la directiva puerto a un puerto alto aleatorio. Puede elegir manualmente un puerto "No asignado" de la lista de puertos de la IANA, o puede ser perezoso y usar un script que escribí que descarga la lista de puertos actual, encuentra los puertos no asignados y elige uno al azar.
Esto no necesariamente "aumenta la seguridad", sino que reduce el número de sondas que buscan fruta de baja pendiente en 22.
En aras de la discusión, digamos que ha elegido 32637 como el puerto. Esto es importante en la última parte de la respuesta.
Configurar iptables
En primer lugar, tenemos que hacer esto como un script para que pueda completarse a la vez.
Aquí hay una gist para bloquear el servidor . Pero el código también está abajo:
#!/bin/bash
#Default deny
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#Allow established sessions
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Allow localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Allow tcp/80 (HTTP)
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
#Allow tcp/443 (HTTPS)
iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
#Allow SSH on our random port
iptables -A INPUT -p tcp --dport 32637 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Así es como funciona:
- Comenzamos por defecto bloqueando todo desde cualquier lugar. Ya que está ejecutando eCommerce y solo necesita 80 y 443, bloqueamos por defecto todo lo demás.
- A continuación, permitimos que las sesiones establecidas permanezcan activas y trabajen. Esto es para que no nos desconectemos durante el proceso. Pero también es útil para las sesiones que se establecerán más adelante para permanecer establecidas.
- A continuación, permitimos localhost. Supongo que está hablando con un servidor de bases de datos (¿MySQL?) Para Magento.
- Las últimas tres reglas permiten explícitamente 80, 443 y 32637, que son HTTP, HTTPS y SSH en nuestro alto puerto aleatorio configurado anteriormente.
Y, por supuesto, si quieres restablecer iptables, aquí tienes:
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
entrante o saliente
Todo lo anterior es entrante.
Respecto al bloqueo de salida: aquí, asumimos que su servidor no está comprometido, deberá enviar confirmaciones por correo electrónico y, de lo contrario, se mantendrá bien. No hay no bloqueo de salida. Si su servidor está limpio y bien ejecutado, realmente no hay razón para hacerlo.
A menos que tenga un motivo ... pero un Magento predeterminado (instalación de la aplicación web) que se mantiene y protege adecuadamente, no lo necesita realmente porque no debería enviar conexiones, escaneos o solicitudes de color rojo.