Skip to content

Instantly share code, notes, and snippets.

@ayxos
Last active January 4, 2016 08:19
Show Gist options
  • Save ayxos/8594302 to your computer and use it in GitHub Desktop.
Save ayxos/8594302 to your computer and use it in GitHub Desktop.
IPTABLES.sh
#! /bin/bash
# author: Marco Antonio Pajares/Alvaro Lopez
# year: 2012
sudo echo "Este script configura el firewall..."
sudo echo "Estado de las iptables previo a la configuracion:"
#sudo iptables -L
sudo echo "Con iptables -F (Flush) hemos eliminado todas las reglas previas"
sudo iptables -F
sudo echo "Por defecto la politica de entrada al host sera DROP, "
sudo iptables -P INPUT DROP
sudo echo "Permitimos conexiónes internas, tanto de salida como de entrada"
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Aceptamos paquetes con los posibles estados ESTABLISHED or RELATED states
#comentario , uso de IP determinada, ip local de la VM.
#sudo iptables -A INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT
#para los usuarios, hay que modificar el archivo sshd_config ubicado en /etc/ssh (previo instalado de la parte servidor de ssh [apt-get install openssh-server])
#autentificacion solo el adminweb
#agregar en el archivo /etc/sudoers la linea
#ALL ALL=NOPASSWD: /usr/bin/IPTables
#para que al ejecutar el script con sudo no pida contraseña
#copiar en /etc/init.d
#$sudo update-rc.d IPTables.sh defaults
#asi el script se ejecutará siempre que inicie el sistema.
#para obtener certificado de seguridad (firma digital) -> www.fnmt.es ->obtenga certificado digital -> solicitud de certificado -> te da un numero y con una copia del dni-e, en la uni y te podras descargar el certificado y luego se exporta. (hacerlo en el mismo pc de casa para los pdf)
#usar sinadura (solo x86)
#actualizar el sistema con update y upgrade
#/etc/onetwork/
echo "Abrimos la puerta de comunicacion con los servidores de actualizaciones"
#UBUNTU España
iptables -A OUTPUT -d 147.83.195.55 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 147.83.195.55 -p tcp --sport 80 -j ACCEPT
#Servidores de UBUNTU situados en Reino Unido
iptables -A INPUT -s 82.98.86.167 -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -s 91.189.90.41 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 91.189.94.156 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 91.189.94.156 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 91.189.89.88 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 91.189.89.88 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 91.189.90.41 -p tcp --dport 80 -j ACCEPT
#Servidor de actualización de versión de UBUNTU.
iptables -A OUTPUT -d 91.189.90.14 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -d 91.189.90.14 -p tcp --dport 80 -j ACCEPT
echo "A continuacion modificamos la configuracion del ssh para conexion remota del adminweb"
sudo cp sshd_config /etc/ssh
echo "Abrimos puerto de ssh para la dirección del administrador web, se filtraran los accesos por contraseña y con el archivo ssh_config"
#ssh in
sudo iptables -A INPUT -d 192.168.226.128 -p tcp --dport 22 -j ACCEPT
#ssh out
sudo iptables -A OUTPUT -d 192.168.226.128 -p tcp --sport 22 -j ACCEPT
echo "Abrimos puerta de comunicación http (al ser un servidor web)"
#http innma
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#http out
sudo iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
echo "Abrimos puerta de comunicacion con tomcat (servidor web)"
#Entorno tomcat in
iptables -A INPUT -p udp --sport 8080 -j ACCEPT
#Entorno tomcat out
iptables -A OUTPUT -p udp --dport 8080 -j ACCEPT
echo "Abrimos puerta de comunicacion para trabajar con mysql, que se usara con fakebook"
#mysql in
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
#mysql out
sudo iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT
echo "Habilitamos conexiones https"
#https in
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#https out
sudo iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
sudo echo "Se han abierto los puertos 3306, 80, 8080 y 22 para conexiones de entrada por tcp"
echo "Habilitamos por tcp y udp la comunicacion con el dns"
#dns in
sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
#dns out
sudo iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
sudo iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
sudo echo "Se han abierto los puertos 3306, 80 y 22 para conexiones de entrada por tcp"
sudo echo "Cerramos el puerto de ipp (impresora remota) que necesita ser cerrado esplicitamente"
#sudo iptables -A INPUT -p tcp --dport 631 -j DROP
#sudo iptables -A INPUT -p udp --sport 631 -j DROP
#sudo iptables -A OUTPUT -p tcp --sport 631 -j DROP
#sudo iptables -A OUTPUT -p udp --dport 631 -j DROP
sudo echo "Loggeamos las entradas ssh y peticiones ping en el fichero /var/log/syslog"
sudo iptables -A INPUT -p icmp -j LOG --log-prefix "PING "
sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH "
echo "Guardamos los cambios"
sudo iptables-save
#sudo iptables -L
sudo echo "Resultado del analisis nmap despues del script: "
sudo nmap -sV localhost
sudo echo "FIN DE SCRIPT"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment