Last active
January 4, 2016 08:19
-
-
Save ayxos/8594302 to your computer and use it in GitHub Desktop.
IPTABLES.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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