Mostrando entradas con la etiqueta aplicaciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta aplicaciones. 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".

jueves, 22 de marzo de 2012

clamav: antivirus libre

Instalamos la aplicación base: apt-get install clamav.
La base de datos de virus actualizada (desde los repositorios): apt-get install clamav-data.
El demonio que actualiza la base de datos automáticamente (desde el site del antivirus): apt-get install clamav-freshclam.
El front-end gráfico para clamscan: apt-get install clamtk.

Ejecuto la aplicación: clamtk.


En la opción 'Analizar' podemos seleccionar un archivo, un directorio, etc. En análisis recursivo, me analiza todo lo que tengo dentro, esto es, busca en todas las subcarpetas:


En 'Avanzado/Preferencias' podemos seleccionar otras opciones relativas al análisis, el arranque, etc.

Cups: servidor de impresión

Instalamos la aplicación CUPS: apt-get install cups

Para acceder, en el navegador ponemos: http://localhost:631/


Tenemos varias pestañas, vamos a la de Administración y pulsamos en el botón 'Administrar impresoras'. Si no vemos la PDF habrá que añadirla en 'Añadir impresora'. Yo la tengo por defecto:

Mediante la pestaña 'Administración' vemos que en 'Configuración del servidor', si pulsamos en 'Avanzada' nos aparecen las siguientes opciones para compartir la impresora en red:

Con esta configuración, otro, desde su máquina, y estando en el mismo grupo de trabajo, podrá imprimir con mi impresora.

viernes, 9 de marzo de 2012

Programación de tareas en el tiempo

At -> Crear tareas programadas (en colas: a-z,A-Z) que se ejecutarán una vez en el tiempo (demonio atd).
Comando: at [-l / -d] [-q <NoCola>] -f <ScriptAEjecutar> -m <CuandoEjecutar> (-l / -d: lista / borra tareas)
  • Listas de usuarios permitidos/denegados a insertar tareas (uno por linea): /etc/at.allow, /etc/at.deny
Cron -> Permite ejecutar tareas periódicamente en el tiempo (demonio crond).
  • Utilización como script: Crear el script a ejecutar en la carpeta deseada /etc/cron.xxx donde:
    hourly (cada hora), daily (cada día), weekly (cada semana), monthly (cada mes)
  • Utilización mediante archivo de tareas /etc/crontab (Permite más control sobre los intervalos de tiempo):
    # Rutas si no se especifican, se toman las del usuario actual.
    SHELL=[<RutaAlShellQueEjecutaLosComandos>]
    PATH=<RutasDeCarpetasDondeSeBuscaranLosComandosEjecutados>
    MAILTO=[<DirecciónDeCorreoQueRecibiráLaSalidaDe/LosComandosEjecutados>]
    HOME=[<RutaALaCarpetaHomeDelUsuarioQueEjecuta>]
    # Tareas cron (cada una en una línea)
    # Sintaxis: mm hh DD MM WW <NombreUsuarioQueEjecuta> Comando1[;Comando2]...[;ComandoN]
    # mm: Minutos, hh: hora, DD: día del mes, MM: mes, WW: día de la semana (domingo: 0 o 7).
    # Valores posibles: Todos (*), Cada x (*/x), Alternos (n1,n2,n3).
  • A tener en cuenta:
    1.- Sólo el usuario root tiene permisos de escritura sobre /etc/cron.xxx. o sobre el archivo /etc/crontab.
    2.- Los usuarios no root editan sus tareas ejecutando: crontab -e [-u <NombreUsuario>] (sin colum. usuario)
    3.- Listas de usuarios permitidos/denegados a insertar tareas (uno por linea): /etc/cron.allow, /etc/cron.deny
    4.- Si una tarea programada en cron no sucede (p.ej.: pc apagado), ya no sucederá jamás para ese instante.
Escribimos en terminal: nano /etc/cron y pulsamos dos veces el tabulador para ver los distintos archivos que podemos editar.

Nosotros vamos al crontab: nano /etc/crontab.


Añadimos una línea al final (ver ejemplos en google):


/etc/crontab (http://francisconi.org)
Contiene información acerca de los trabajos que se van a ejecutar. Cada usuario tiene un archivo crontab que se guarda en el directorio /var/spool/cron. Cada archivo tendrá un nombre que será el del usuario que creo cada tab. La única diferencia entre /etc/crontab y los crontabs de usuario es que el /etc/crontab agrega un campo adicional donde se especifica bajo que usuario se ejecutarán las tareas. Ejemplo:
@reboot root kinit -k host/pzosdgstdeb1$ -c /tmp/krb5cc_0
* */7 * * * root kinit -k host/pzosdgstdeb1$ -c /tmp/krb5cc_0
@reboot postfix kinit -k -t /var/spool/postfix/etc/krb5.keytab -c /var/spool/postfix/tmp/krb5cc_107
* */7 * * * postfix kinit -k -t /var/spool/postfix/etc/krb5.keytab -c /var/spool/postfix/tmp/krb5cc_107
A continuación se ejecuta el script: /home/user/test.pl cada 5 minutos

*/5 * * * *  /home/user/test.pl
 
.---------------- minuto (0 - 59) 
|  .------------- hora (0 - 23)
|  |  .---------- día del mes (1 - 31)
|  |  |  .------- mes (1 - 12) O jan,feb,mar,apr ... (los meses en inglés)
|  |  |  |  .---- día de la semana (0 - 6) (Domingo=0 o 8) O sun,mon,tue,wed,thu,fri,sat (los días en inglés) 
|  |  |  |  |
*  *  *  *  *  comando para ser ejecutado 

Ejemplo: Evitar que Amule se cierre solo
1) Creamos el archivo amule.cron (touch /home/adrian/amule.cron) y colocamos en el:
#!/bin/sh

/sbin/pidof amule >/dev/null

if [ $? != 0 ]
then
   
    exec /usr/bin/amule
fi

2) Luego lo hacemos ejecutable:
chmod +x /home/adrian/amule.cron

3) Editamos nuestro crontab (crontab -e) y colocamos en el:
*/1 * * * * export DISPLAY=:0 && /home/adrian/amule.cron

Anacron -> Programa que permite ejecutar tareas cada n días en el sistema. Diferencias con respecto a cron:
- Anacron es un programa (no un demonio), por lo que hay que ejecutarlo periódicamente (con cron).
- Se garantiza que una tarea que no se haya ejecutado en su debido momento se ejecute al iniciar anacron.
- Anacron sólo permite gestionar tareas como usuario root.
- Anacron guarda en la carpeta /var/spool/anacron un archivo por cada tarea indicando su última ejecución.
- Archivo de tareas /etc/anacrontab:
# Rutas si no se especifican, se toman las del usuario actual.


SHELL=[<RutaAlShellQueEjecutaLosComandos>]
PATH=<RutasDeCarpetasDondeSeBuscaranLosComandosEjecutados>
#Tareas anacron (cada una en una línea)
#Sintaxis: NN MM TID Comando1[;Comando2]...[;ComandoN]
#NN: Ejecución de tarea cada NN días
#MM: Minutos para que anacron ejecute la tarea (anacron sólo deberá ejecutar una tarea a la vez)
#TID: Nombre/Identificador único para cada tarea (No deben de haber dos o más tareas con el mismo TID).

miércoles, 7 de marzo de 2012

SSH, conectándonos remotamente

Vamos a instalar un servidor de red y así poder conectarnos remotamente.
apt-get install ssh -> yes

Hacemos ping al usuario para ver si tenemos acceso (para ver la IP -> ifconfig)

Tenemos que saber el nombre de usuario y contraseña. Una vez conocidos, en terminal:

ssh rafakatu@numerodeip, luego nos pide el password.

Ya entramos en la maquina externa. Si hay algún problema habrá que mirar los firewalls, antivirus, etc.

Método entrando en el ordenador origen primero.
  • Entro en el ordenador donde tengo el archivo -> ssh julio@192.168.1.xxx.
  • Introduzco contraseña.
  • Copio el archivo del ordenador externo y me lo traigo al mío a la ubicación que le indique -> scp /home/julio/Escritorio/prueba.txt rafakatu@192.168.1.xxx:/home/rafakatu/Escritorio/
Método entre dos ordenadores que no son el mío:
scp julio@192.168.1.xxx:/home/julio/Escritorio/prueba.txt kristo@192.168.1.xxx:/home/kristo/Escritorio/



Gparted, particionar un disco duro

Instalar el paquete particiones GParted por terminal.. Estando en la carpeta de VMWare (cd /home/rafakatu/Escritorio/vmware-tools-distrib/).
Instalamos: apt-get install gparted. Ejecutamos -> gparted.

Gestor de paquetes Synaptic, sirve para buscar programas, descargarnos los paquetes (principales, importados, etc). Es otra forma de instalar programas. Permite instalar software en su equipo y gestionar el software que está ya instalado. El software se entrega en lo que se conocen como paquetes. Una aplicación individual puede incluso tener varios paquetes: ej: la aplicación Mozilla Internet Suite se empaqueta en mozilla-browser que contiene el navegador y mozilla-mail que contiene el cliente de correo.

Vamos a descargarnos el Wireshark, los buscamos en el buscador de Synaptic, lo seleccionamos y nos dirá qué otros paquetes necesita dicho programa. Para descargar pulsamos APLICAR y OK.
Para ejecutarlo, es mejor hacerlo desde consola y con privilegios de administrador para que te aparezcan los interfaces (eth0, etc): "sudo wireshark".

Tenemos que comprar un nuevo disco duro para probar el gparted, que el nuestro será virtual. En los settings de nuestro disco (como hicimos para puentear la red) pulsamos ADD y añadimos un nuevo Hard Disk.. elegimos las opciones que deseemos y listo. Reiniciamos el sistema para que el HD donde tenemos linux nos reconozca el nuevo disco.

Ejecutamos el gparted como ROOT y ya nos debe reconocer "/dev/sda" y "/dev/sdb". Al crear una nueva tabla de particiones en sdb nos la hará por defecto del tipo MS-DOS (esto se puede cambiar dependiendo del S.O. que utilicemos). Aquí podemos crear una partición extendida (donde irá el SWAP) y hasta 3 primarias.

Lo ideal es que creemos al principio el SWAP y luego las primarias para que el disco duro dé menos vueltas, ya que la SWAP se usa como memoria de intercambio.

Para poder manejar y realizar operaciones con un disco duro hay, primero, que desmontarlo.. para volver a montarlo después. Y así me ha quedado:

Estos son los tipos de archivos soportados por linux:

martes, 6 de marzo de 2012

Editor de texto NANO

Vamos a ver cómo funciona este sencillo editor de texto. Para acceder a un archivo esta es la ruta desde la terminal: nano nombre_archivo.
Vamos a modificar los repositorios de linux, que en modo gráfico se llega por la ruta "Aplicaciones/otras/gestor de paquetes synaptic" -> "configuracion/repositorios", y en modo terminal sería: "nano /etc/apt/sources.list", con lo que se abre el editor.

Para Empezar a editar pulsamos ctrl+o y para guardar otra vez ctrl+o.
Si queremos anular un repositorio desde gráfico, basta con activar o desactivar los checkbox, en terminal hay que posicionarse en la línea del repositorio y ponerle una almohadilla delante (#) o pulsar Alt Gr+3.
Para ver los cambios entramos en Synaptic y veremos, que los que hemos comentado ya no aparecen activados.
Para ver los paquetes que necesitamos para poder instalar el wireshark -> "apt-cache search wireshark"
Si pulsamos Ctrl+alt+F1 entramos en consola virtual 1, Ctrl+alt+F2 entramos en consola virtual 2, etc, hasta la Ctrl+alt+F7 para salir de consola virtual 1, Ctrl+alt+F8 para salir de consola virtual 2, etc. Más info.

Más info de NANO: Slice of Linux