Mostrando entradas con la etiqueta ejercicio. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejercicio. Mostrar todas las entradas

miércoles, 11 de abril de 2012

iptables: firewall de linux

¿Qué son las iptables?

Existen módulos para el kernel que permiten definir un sistema de reglas para aceptar o rechazar los paquetes o las comunicaciones que pasan por el sistema. Estos sistemas de reglas conforman lo que se conoce como firewall o cortafuegos; en otros sistemas los firewall pueden estar implementados en software y estar desvinculados del sistema operativo, pero en el caso de linux, el firewall se puede montar a nivel de kernel y no es necesario instalar un software adicional que a veces tiene agujeros.

Podemos crear un script que se ejecute al inicio en /bin/nombre.sh, para que lo podamos ejecutar desde cualquier punto de la consola (es posible que haya que darle permisos al fichero: chmod 750 nombre.sh).

Lo principal de este script es que primero ejecutamos líneas de comando para que el firewall lo cierre todo y luego empezamos a dar permisos:
#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
echo -n Aplicando Reglas de Firewall...

## FLUSH  de reglas
iptables  –F
iptables  –X
iptables  –Z
iptables  -t nat –F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales)
iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s ?.?.?.? -j ACCEPT <- modificar IP

# A un compañero le dejamos entrar al servidor de internet
iptables -A INPUT -s ?.?.?.? -p tcp --dport 80 -j ACCEPT <- modificar IP

# A otro compañero le dejamos usar el ssh
iptables -A INPUT -s ?.?.?.? -p tcp --dport 22 -j ACCEPT<- modificar IP

# El puerto 443 de www debe estar abierto, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# El puerto 80 de www debe estar cerado, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 80 -j DROP

# Y el resto, lo cerramos
iptables -A INPUT -p tcp --dport  20:21 -j DROP
iptables -A INPUT -p tcp --dport  3306 -j DROP
iptables -A INPUT -p tcp --dport  22 -j DROP
iptables -A INPUT -p tcp --dport  10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Para comprobar el estado de las iptables:
iptables -L
Para comprobar el estado de las iptables después de aplicar el script:
iptables -L -n

Para comprobar el estado de los puertos del sistema con netstat:
netstat -ln

Para borrar una cadena:


iptables -D INPUT 3

...siendo 3 el número de la cadena.


Comandos iptables
Ejemplos prácticos
http://www.pello.info/filez/IPTABLES_en_21_segundos.html

miércoles, 28 de marzo de 2012

isc-dhcp-server: servidor dinámico DHCP

Para realizar esta práctica debemos tener dos máquinas virtuales, una con linux y otra con windows.

En linux instalamos el isc-dhcp-server: apt-get install isc-dhcp-server

En las settings de red de vmware, nos pasamos a NAT de la red virtual específica, que en este caso es la VMnet8 (lo hacemos en los dos virtuales -linux y windows-):



Ya en Debian, que hacemos es modificar el "nano /etc/network/interfaces", que tiene que quedar tal que así:

auto lo
iface lo inet loopback


auto eth0
iface eth0 inet static
        address 192.168.197.254
        netmask 255.255.255.0
        gateway 192.168.197.2

La direccion gateway 192.168.167.2 se refiere a la dirección IP de la red "VMware Network Adapter VMnet8", cuya ruta es, en el menú de VMWare: "Edit/Virtual network editor...", eligo el vmnet8, y ".../NAT settings":


================================================

En la última línea de nano /etc/default/isc-dhcp-server, escribimos INTERFACES="eth0"

Y en nano /etc/dhcp/dhcpd.conf, descomentamos la línea "authoritative;", que indica que el servidor DHCP reasignará direcciones a los clientes mal configurados por el motivo que sea, incluída una configuración nueva del servidor , y escribimos al final:


subnet 192.168.197.0 netmask 255.255.255.0 {
  range 192.168.197.120 192.168.197.130;
  option routers 192.168.197.2;
  option domain-name-servers 8.8.8.8;
}
Con esto le decimos que cree en la subred 192.168.197.0 y máscara 255.255.255.0, un servidor dhcp que reparta ips en el rango indicado, con puerta de enlace predeterminada 192.168.197.2 y servidor DNS 8.8.8.8 (si queremos ponerle uno secundario). Guardamos (ctrl+o), salimos (ctrl+x) y reiniciamos el servidor dhcp: /etc/init.d/isc-dhcp-server restart.

Una vez reiniciado ejecutamos la orden "/etc/init.d/isc-dhcp-server status" para ver si tenemos el servidor activo:

================================================

Abrimos nuestro windows virtual y ejecutamos en terminal "ipconfig":


Vemos cómo le ha proporcionado una ip del rango que le introdujimos en nano /etc/dhcp/dhcpd.conf.

Si queremos que a una determinada máquina de la red le de una IP concreta, habrá que introducir el siguiente código en "nano /etc/dhcp/dhcpd.conf":

host xprafa {
  hardware ethernet 00:0C:29:88:7D:EC;
  fixed-address 192.168.197.127;
}
Con esto le digo que la tarjeta de red con mac "00:0C:29:88:7D:EC" le asigne la IP "192.168.197.127", que tiene que estar dentro del rango de IPs que definimos anteriormente. Yo le he puesto al host "xprafa", pero se le puede poner el que queramos. Guardamos, reiniciamos el servidor ISC (/etc/init.d/isc-dhcp-server restart) y nos vamos a windows (hay que desactivar y activar la conexión de área local). En consola escribimos "ipconfig" y...


Vemos cómo nos cambia la IP de esta máquina por la que le definimos.

Mucha más info en "liberaliatempus.com".

viernes, 16 de marzo de 2012

Práctica de samba 2

SMBD.CONF sin asistente

crear en el escritorio una carpeta llamada compartida2

dentro de ella, tenemos recurso6nombre ...7nombre ...8 ..9. 0

mkdir /home/rafakatu/Escritorio/compartida2
mkdir /home/rafakatu/Escritorio/compartida2/recurso6rafa
mkdir /home/rafakatu/Escritorio/compartida2/recurso7rafa
mkdir /home/rafakatu/Escritorio/compartida2/recurso8rafa
mkdir /home/rafakatu/Escritorio/compartida2/recurso9rafa
mkdir /home/rafakatu/Escritorio/compartida2/recurso0rafa

#[recurso 6],
#montada en /home/usuario/Escritorio/compartida2/recurso6nombre
#modo lectura , al entrar el usuario final es usu1 , visible , la red tiene acceso ,solo se conecten mediante interfaces
[recurso6rafa]
        comment = carpeta compartida 6
        path = /home/rafakatu/Escritorio/compartida2/recurso6rafa

        force user = user1
        force group = user1
        guest ok = yes
        browseable = yes

        hosts allows = 192.168.1.
        interfaces = eth0
#force user sirve para sea el que sea el usuario que intente entrar, actúe como si fuera user1, con sus permisos y privilegios.

#[recurso7]
#montada ........./recurso7nombre
#modo estructura , usuario final invitado , invisible , solo una ip tiene acceso , usuario administrador es su administirador
[recurso7rafa]
        comment = recurso compartido 7
        path = /home/rafakatu/Escritorio/compartida2/recurso7rafa

        read only = no
        writable = yes
        guest ok = yes
        browseable = no
        hosts allow = 192.168.1.111
        admin users = root


#[recurso8 ]
#montada ..../recurso8nombre
#modo lectura , interfaces eth1 , visible , solo usuario 2 y  3 pueden acceder  si permite invitado
[recurso8rafa]
        comment = recurso compartido 8
        path = /home/rafakatu/Escritorio/compartida2/recurso8rafa
        read only = yes
        interfaces = eth1
        browseable = yes
        valid users = user2,user3
        invalid users = user1,user4,user5,nobody
        guest ok = yes


#[recurso9 ]
#/recurso9nombre
#modo escritura , visible , solo puede acceder usu5 , todo de la interfaz eth0 , solo 5 ips pueden acceder
[recurso9rafa]
        comment = recurso compartido 9
        path = /home/rafakatu/Escritorio/compartida2/recurso9rafa
        writable = yes
        browseable = yes
        valid users = user5
        invalid users = user1,user2,user3,user4,nobody
        interfaces = eth0
        hosts allow = 192.168.1.108 192.168.1.119 192.168.1.65


#[recurso0 ]
#pueden entrar como invitado 10 ip , solo lectura , solo por interfaces eth0
[recurso0rafa]
        comment = recurso compartido 0
        path = /home/rafakatu/Escritorio/compartida2/recurso0rafa
        read only = yes
        interfaces = eth0

        guest ok = yes
        public = yes
        max connections = 10

Práctica de samba 1

Crear 5 usuarios y 5 carpetas compartidas (hay que crear los usuarios con useradd y luego con smbpasswd):
useradd user1
passwd user1
...
useradd user5
passwd user5
Estos usuarios no pueden acceder a su home, ya que con useradd no crea ni home, ni bash, etc.. para eso hay que usar adduser.

Ahora creamos los password de los usuarios samba:
smbpasswd -a user1
...
smbpasswd -a user5
 
Las carpetas se llaman como los recursos, es decir, para recurso1 la carpeta se llamará recurso:
cd Escritorio/
mkdir compartida
cd compartida/
mkdir recurso1
...
mkdir recurso5
======================================
Ahora editamos el "smb.conf" -> /etc/samba/smb.conf.

#opciones globales
#grupo de trabajo AULA2 y entrada en modo invitado

[global]        #que me funciona
workgroup = AULA2
    # Seguridad por usuarios
        security = share
    # Las contraseñas se deberán enviar encriptadas
        encrypt passwords = yes
    # Samba será servidor wins
        wins support = yes
    # Nivel y longitud máxima del archivo de registro
        log level = 1
        max log size = 1000
    # Por defecto, lectura y escritura
        read only = no
    # Se comparten también las impresoras
        load printers = yes
        interfaces = eth0

[global] #de kristo
workgroup = AULA2
interfaces = eth0
security = share
map to guest = Bad user
syslog = 0
log file = /var/log/samba/log.%m
valid users = user1, user2, user3, user4, user5
admin users = root
invalid users = nobody
max log size = 1000

#recurso1: todos se validan como user3, visible, solo lectura
[recurso1kristo]        comment = recurso compartido 1
        path = /home/kristo/Escritorio/compartida/recurso1kristo
        valid users = usu3
        invalid users = usu1,user2,user4,user5
        guest ok = No
        #read only = No
        browseable = Yes
        writable = Yes
        create mask = 777
        directory mask = 777

#recurso2: lectura escritura, solo puede entrar user4
[recurso2kristo]         comment = recurso 2 compartido

        path = /home/kristo/Escritorio/compartida/recurso2kristo
        valid users = usu4
        invalid users = usu1,usu2,usu3,usu5, nobody
        guest ok = No
        #read only = No
        browseable = Yes
        writable = Yes
        create mask = 777
        directory mask = 777

#recurso3: se puede imprimir desde ahi, invisible, solo lectura, pueden entrar todos menos user5, solo pueden acceder dos direcciones de red
[recurso3kristo]
        comment = carpeta compartida recurso3
        path = /home/kristo/Escritorio/compartida/recurso3
#puede petar    printable = Yes
        browseable = No
        read only = Yes
        valid users = user1,user2,user3,user4
        invalid users = user5,nobody
        hosts allow = 192.168.1.119 192.168.1.108


#recurso4: abierto para la red 192.168.1.x, validos todos los usuario, visible
[recurso4kristo]         comment = recurso 4 compartido

        path = /home/kristo/Escritorio/compartida/recurso4kristo
        hosts allow = 192.168.1.
        guest ok = Yes
        browseable = Yes

#recurso5: invisible, solo pueden logearse user1 user2, solo lectura,solo puede entrar la ip de la izquierda
[recurso5kristo]
        comment = carpeta compartida recurso5
        path = /home/kristo/Escritorio/compartida/recurso5kristo
        browseable = No
        guest ok = yes
        hosts allow = 192.168.1.108
        valid users = user1, user2
        read only = Yes
======================================

mount -t smbfs -o username=usu3,password=usu3 //192.168.1.56/recurso1kristo /home/rafakatu/Escritorio/folder2

El user y la password que hay que poner es el que ha creado el usuario de la máquina destino.

cuando este esto configurado, montar las unidades por parejas, exceptuando
recurso5 que solo puede el de la izquierda.