Páginas

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

sábado, 10 de marzo de 2018

Instalación y configuración de vsftpd

vsftpd servidor en Centos 6.9

FTP

FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o archivos informáticos) es uno de los protocolos estándar más utilizados en Internet siendo el más idóneo para la transferencia de grandes bloques de datos a través de redes que soporten TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el envío de órdenes del cliente hacia el servidor. Prácticamente todos los sistemas operativos y plataformas incluyen soporte para FTP, lo que permite que cualquier computadora conectada a una red basada sobre TCP/IP pueda hacer uso de este servicio a través de un cliente FTP.

Modo activo

En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado.

Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo pasivo.

Modo pasivo

Fue creado como una alternativa al problema que representa el modo activo. A diferencia de éste último, el modo pasivo envía un mandato PASV en lugar del mandato PORT
a través del puerto de control del servidor. Éste devuelve como respuesta el número de puerto a través del cual debe conectarse el cliente para hacer la
transferencia de datos. El servidor puede elegir al azar cualquier puerto entre 1024 y 65535 o bien el rango de puertos determinado por el administrador del sistema. En el caso de Vsftpd, se puede definir un rango arbitrario de puertos para conexiones pasivas utilizando las opciones pasv_min_port y pasv_max_port. Éste es el método recomendado para servidores de acceso público.

Protocolo FTPS (FTP/SSL)

FTPS es la forma de designar diferentes maneras a través de las que se pueden realizar transferencias seguras de archivos mediante FTP utilizando SSL o TLS.

Aunque existen dos métodos para realizar una conexión SSL/TLS a través de FTP el utilizado por vsftpd es FTPS Explícito (FTPES), donde el cliente realiza la conexión normal por medio del puerto 21 y permitiendo negociar, de manera opciona, una conexión TLS.

RSA

RSA, acrónimo de los apellidos de sus autores, creado por Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para cifrar claves públicas Publicado por el MIT en 1977 y utilizado en todo el mundo para los protocolos destinados al comercio electrónico.

OpenSSL

Es una implementación libre de los protocoles SSL, (Secure Sockets Layer) y TLS (Transport Layer Security), continuación del proyecto SSLeay, iniciado por Eric Young y Tim Hudson.

Acerca de X.509

X.509 es un estándar ITU-T para infraestructura de claves públicas (PKI). Entre otras, establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación.

vsftpd

vsftpd (Very Secure FTP Daemon) es utlizado para implementar servidores de archivos a través del protocolo FTP. Es sencillo y seguro.

Instalación de vsftpd

# yum -y install vsftpd

Configuración

/etc/vsftpd/chroot_list es el archivo que define la lista de usuarios a enajaular o no, (depende de la configuración).

Crear el archivo

# touch /etc/vsftpd/chroot_list


Iniciar el servicio

# service vsftpd start

Activar el servicio al arranque del sistema

# chkconfig vsftpd on


Abrir los puerto 20 y 21 (TCP). El primero FTP-DATA y el segundo FTP y el rango de puertos para conexiones pasivas que se defina.

Agregar las reglas de iptables

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT

# servicce iptables save

O agregue al archivo /etc/sysconfig/iptables lo siguiente

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT

# service iptables restart

SELinux y el servicio vsftpd

Obtenga la lista de valores (booleanos) actuales de SELinux para ftp

# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off


Para establecer un valor específico por ejemplo, ftp_home_dir, teclee

# setsebool -P ftp_home_dir on

SELinux aumenta el nivel de seguridad de vsftpd

Ejecute lo siguiente para permitir que el servidor FTP pueda asociarse a cualquier puerto sin reservar al funcionar en modo pasivo:

# setsebool -P ftpd_use_passive_mode 1

Ejecute lo siguiente para permitir que los usuarios anónimos puedan realizar procesos de escritura sobre el sistema de archivos:

# setsebool -P allow_ftpd_anon_write 1

Si se necesita permitir el acceso utilizando las cuentas de usuarios del anfitrión local, a fin de que éstos puedan acceder a sus directorio de inicio, se debe habilitar la política ftp_home_dir

# setsebool -P ftp_home_dir 1

Ejecute lo siguiente para hacer que SELinux permita acceder a los usuarios locales al resto del sistema de archivos:

# setsebool -P allow_ftpd_full_access 1

Ejecute lo siguiente para permitir que el servicio vsftpd pueda hacer uso de sistemas de archivos remotos a través de CIFS (Samba) o NFS y que serán utilizados para compartir a través del servicio

setsebool -P allow_ftpd_use_cifs 1
setsebool -P allow_ftpd_use_nfs 1


# getsebool -a | grep ftp

allow_ftpd_anon_write --> on
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> on
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> on
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off


Archivo de configuración de vsftpd.

Opción anonymous_enable

Define si se permitirán accesos anónimos al servidor.

anonymous_enable=YES

Opcion local_enable

Establece si se permiten accesos autenticados de los usuarios locales del sistema

local_enable=YES

Opción write_enable

Permite escritura en el servidor

write_enable=YES

Opción anon_upload_enable

Determina si los usuarios anónimos pueden subir contenido al servidor. No es una función deseada, por lo que se acostumbra a desactivarla.

Opción anon_upload_enable=NO


Opción anon_mkdir_write_enable

Igual que la anterior normalmente esta función no es deseada por lo que se desactiva

anon_mkdir_write_enable=NO

Opción ftpd_banner

Establece el banderín que será mostrado al acceder un usuario al servidor. La frase no debe contener signos de puntuación.

ftpd_banner=Bienvenido al servidor FTP

Establecer jaulas para los usuarios

Opciones chroot_local_user y chroot_list_file

Los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal. Para limitar a los usuarios a sólo utilizar su propio directorio, puede hacerse con la opción chroot_local_user que habilita la función chroot() y las opciones chroot_list_enable y chroot_list_file para establecer el archivo con la lista de usuarios que quedarán excluidos de la función chroot().

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

Crear el archivo /etc/vsftpd/chroot_list si aún no lo ha hecho

# touch /etc/vsftpd/chroot_list

A partir de ahora cada vez que un usuario local se autentique en el servidor FTP sólo tendrá acceso a su directorio personal y lo que este contenga.

Si el usuario regular tiene acceso al intérprete de comandos del sistema (/bin/bash o /bin/sh) y privilegios de escritura sobre el directorio raíz de su propia jaula (su directorio de inicio) la función chroot() puede ser peligrosa. Los directorios de inicio de los usuarios involucrados deben tener permiso 755, propiedad de root y asignar al usuario /bin/false o /sbin/nologin como intérprete de comandos.

Modificar una cuenta de usuario regular para la cual se quiere dar acceso al servidor FTP utilizando chroot() con vsftpd

# chroot 755 /home/fulano
# chown root:root /home/fulano
# mkdir /home/fulano/uploads
# chown fulano:fulano /home/fulano/uploads
# usermod -s /sbin/nologin fulano

Opciones pasv_min_port y pasv_max_port

Establece el rango arbitrario de puertos utilizados para las conexiones pasivas. Cualquier rango de puertos es válido entre 1024 y 65535

pasv_min_port=30300
pasv_max_port=30309

Controlar el ancho de banda

Opción anon_max_rate

Utilizada para limitar la tasa de transferencia en bytes por segundo, para los usuarios anónimos, muy útil en servidores FTP de acceso público. En este caso 500 kb por segundo.

anon_max_rate=524288

Opción local_max_rate

Limita la tasa de transferencia en bytes por segundo para los usuarios locales del servidor. En este caso a 1 MB

local_max_rate=1048576

Opción max_clients

Establece el número máximo de clientes accediendo simultáneamente al servidor FTP. En este caso 20

max_clients=20

Opción max_per_ip

Evita que algunos accesos queden bloqueados, como en el caso de redes que acceden a través de un Proxy (servidor intermediario) o puerta de enlace.

max_per_ip=10

Soporte SSL/TLS  

Todos los datos enviados mediante el protocolo FTP lo hacen en texto simple (nombre de usuario y claves de acceso), lo cual es muy peligroso, vsftpd se puede configurar para utilizar los protocolos SSL y TLS a través de un certificado RSA.

Como usuario root acceda al directorio /etc/pki/tls

# cd /etc/pki/tls

Generar el certificado y firma digital

Utilizando una estructura X.509, algoritmo de cifrado RSA de 2048 bits, sin Triple DES que permite iniciar sin interacción alguna al servicio vsftpd, con una validez de 1825 días (5 años):


# openssl req -x509 -nodes -days 1825 -newkey rsa:2048 \
> -keyout private/vsftpd.key \
> -out certs/vsftpd.crt

Ingrese los siguientes datos

Código de dos letras para el país.
Estado o provincia.
Ciudad.
Nombre de la empresa o bien la razón social.
Unidad o sección responsable del certificado.
Nombre del anfitrión (FQDN) o bien dominio con comodín.
Dirección de correo electrónico de la persona responsable del certificado


Generating a 2048 bit RSA private key

....+++

...........+++

writing new private key to 'private/vsftpd.key'

-----

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:Catalunya
Locality Name (eg, city) [Default City]:Barcelona
Organization Name (eg, company) [Default Company Ltd]:Empresa S.L. 
Organizational Unit Name (eg, section) []:Direccion Comercial
Common Name (eg, your name or your server's hostname) []:*.linux.bcn
Email Address []:webmaster@linux.bcn


El archivo del certificado y de la firma digital, deben tener permisos de sólo lectura para el usuario root.

# chmod 400 certs/vsftpd.crt private/vsftpd.key

# cd

Edite el archivo de configuración de vsftpd.conf

# vim /etc/vsftpd/vsftpd.conf

# Habilita el soporte de TLS/SSL
ssl_enable=YES
# Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos
allow_anon_ssl=NO
# Obliga a utilizar TLS/SSL para todas las operaciones, es decir, 
# transferencia de datos y autenticación de usuarios locales.
# Establecer el valor NO, hace que sea opcional
# utilizar TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Se prefiere TLSv1 sobre SSLv2 y SSLv3
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Rutas del certificado y firma digital
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
# Los desarrolladores de FileZilla decidieron eliminar 
# el soporte para el algoritmo de cifrado 3DES-CBC-SHA, 
# agregue la siguiente línea para solucionarlo
ssl_ciphers=HIGH
# Filezilla además requiere desactivar la siguiente opción
require_ssl_reuse=NO

Aplicar los cambios

# service vsftpd restart
# service vsftpd restart
Apagando vsftpd:   [  OK  ]
Iniciando vsftpd para vsftpd: [  OK  ]

Asigne una contraseña al usuario fulano

$ ssh 192.168.0.1
carles@192.168.0.1's password: 
Last login: Fri Mar  9 19:52:01 2018 from 192.168.0.53

# passwd fulano

Cambiando la contraseña del usuario fulano.
Nueva contraseña: 
Vuelva a escribir la nueva contraseña: 
passwd: todos los tokens de autenticación se actualizaron exitosamente.

Cliente para acceder a FTPES

# yum -y install lftp

El mandato lftp con las opciones -e 'set ftp:ssl-force true' y -e set ssl:verify-certificate no' como argumentos y un nombre anfitrión o dirección IP como último argumento. Inicie una conexión hacia la dirección del servidor 192.168.0.1.

[carles@aldos ~]$ lftp -e 'set ftp:ssl-force true' -e 'set ssl:verify-certificate no' 192.168.0.1

En el intérprete de comandos de LFTP teclee el comando user seguido del nombre de usuario que quiera utilizar. En este caso fulano, le pedirá la contraseña.

lftp 192.168.0.1:~> user fulano
Clave:

Teclee el comando pwd

lftp fulano@192.168.0.1:~> pwd

Devolverá una salida similar a la siguiente

ftp://fulano@192.168.0.1

Cree una carpeta llamada prueba

lftp fulano@192.168.0.1:~> mkdir prueba

Lo anterior devuelve una salida como esta

mkdir ok, `prueba' creado           

Ejecute un ls

lftp fulano@192.168.0.1:/> ls

La salida es la siguiente

drwxr-xr-x    2 504      504   4096 Mar 09 20:41 prueba

Salir de lftp

lftp fulano@192.168.0.1:/> bye


Filezilla cliente FTP
# yum -y install filezilla


Red Hat System Administrator Guide
Protocolo de transferencia de archivos

Centos es genial!.

viernes, 16 de febrero de 2018

Configurar NTP en Centos

Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable. NTP utiliza UDP como su capa de transporte, usando el puerto 123.

NTP es uno de los protocolos de internet más viejos que siguen en uso, desarrollado en 1981 y descrito por primera vez en RFC 778. NTP fue diseñado originalmente por David L. Mills de la Universidad de Delaware1​, el cual lo sigue manteniendo, en conjunto con un equipo de voluntarios.

NTP utiliza el Algoritmo de Marzullo con la escala de tiempo UTC, incluyendo soporte para características como segundos intercalares.

Instalar a través de yum

# yum -y install ntp ntpdate

Edite el archivo /etc/sysconfig/iptables y añada la siguiente línea

-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT

Reiniciar el servicio iptables

# service iptables restart

Archivo de configuración /etc/ntp.conf


# Se establece la política predeterminada para cualquier

# servidor de tiempo utilizado: se permite la sincronización

# de tiempo con las fuentes, pero sin permitir a la fuente 

# consultar (noquery), ni modificar el servicio en el 

# sistema (nomodify) y declinando proveer mensajes de 

# registro (notrap).

restrict default nomodify notrap noquery

restrict -6 default nomodify notrap noquery

# Permitir todo el acceso a la interfaz de retorno del

# sistema.

restrict 127.0.0.1

restrict -6 ::1

# Se le permite a las redes local sincronizar con el servidor

# pero sin permitirles modificar la configuración del

# sistema y sin usar a éstos como iguales para sincronizar.

# Cambiar por las que correspondan a sus propias redes locales.

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap 

restrict 192.168.3.0 mask 255.255.255.128 nomodify notrap

restrict 10.0.1.0 mask 255.255.255.248 nomodify notrap

# Reloj local indisciplinado.

# Este es un controlador emulado que se utiliza sólo como

# respaldo cuando ninguna de las fuentes reales están

# disponibles.

fudge   127.127.1.0 stratum 10

server  127.127.1.0

# Archivo de variaciones.

driftfile /var/lib/ntp/drift

broadcastdelay  0.008

# Archivo de claves si acaso fuesen necesarias para realizar

# consultas

keys            /etc/ntp/keys

# Lista de servidores de tiempo de estrato 1 o 2.

# Se recomienda tener al menos 3 servidores listados.

# Mas servidores en:

#               http://kopernix.com/?q=ntp

#               http://www.eecis.udel.edu/~mills/ntp/servers.html

server 0.pool.ntp.org iburst

server 1.pool.ntp.org iburst

server 2.pool.ntp.org iburst

server 3.pool.ntp.org iburst

# Permisos que se asignarán para cada servidor de tiempo. 

# En los ejemplos, se impide a las fuente consultar o modificar

# el servicio en el sistema, así como también enviar mensaje de 

# registro.

restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

restrict 2.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

restrict 3.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

# Se activa la difusión hacia los clientes

broadcastclient


Reiniciar para aplicar los cambios

# service ntpd restart

Para sincronizar la hora de inmediato en este servidor.

# ntpdate -u 0.pool.ntp.org

Activar el servicio ntpd con el siguiente reinicio del sistema en los niveles de ejecución 2,3,4 y 5

# chkconfig ntpd on

Configuración de los clientes

Instalar el paquete NTP y sabiendo que la dirección IP del servidor es 192.168.0.1, compruebe que existe conectividad hacia el servidor.

# ntpdate -u 192.168.0.1

La salida será algo similar a esto

16 Feb 13:52:46 ntpdate[3305]: adjust time server 64.113.44.54 offset -0.065594 sec

Asignación de servidores NTP de área local a través de DHCP

# vim /etc/dhcp/dhcp.conf

Utilice la opción ntp-servers para definir una lista separada por comas de todos los servidores NTP que se quiera utilizar en la red de área local:

option ntp-servers 192.168.0.1;

#
# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see 'man 5 dhcpd.conf'

ddns-update-style interim;

ignore client-updates;

authoritative;

default-lease-time 900;

max-lease-time 7200;

option ip-forwarding off;

option domain-name "linux.bcn";



ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {

option routers 192.168.0.1;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.0.255;

option domain-name-servers 8.8.8.8,8.8.4.4,192.168.0.1;

option ntp-servers 192.168.0.1;

range 192.168.0.50 192.168.0.99;

}


Reiniciar el servidor dhcpd

# service dhcpd restart



OpenBSD es genial!.

Samba en un Servidor Centos Linux

Configuración de Samba en Centos

Protocolo SMB

SMB (Server Message Block), también llamado CIFS (Common Internet File System), es un protocolo del nivel de presentación del modelo OSI de TCP/IP creado por IBM en el año 1985.

Samba

SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos por The Samba Team.

Instalar a través de yum

# yum -y install samba samba-client samba-common

Abrir los puertos 135 al 139 (TCP Y UDP) y el puerto 445 (TCP).

Utilizando desde la consola el mandato iptables


# ptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables save

O editar el archivo /etc/sysconfig/iptables y añadir lo siguiente

-A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables restart

SELinux y el servicio smb

Con la finalidad de que SELinux permita al servicio smb la escritura como usuario anónimo, ejecute:

# setsebool -P allow_smbd_anon_write 1

A fin de que SELinux permita al servicio smb funcionar como Controlador Primario de Dominio (PDC)

# setsebool -P samba_domain_controller 1

Para que SELinux perminta al servicio smb compartir los directorios de inicio de los usuarios locales del sistema, ejecute:

# setsebool -P samba_enable_home_dirs 1

A fin de que SELinux desactive la protección para los directorios de inicio de los usuarios a través de smb, ejecute:

# setsebool -P use_samba_home_dirs 1

Con la finalidad de que SELinux permita al servicio smb crear nuevos directorios de inicio para los usuarios a través de PAM (operación común en PDC, ejecute

# setsebool -P samba_create_home_dirs 1

Para que SELinux permita al servicio smb funcionar como un organizador de mapa de puertos (portmapper):

# setsebool -P samba_portmapper 1

Para que SELinux permita al servicio smb ejecutar guiones dentro del directorio /var/lib/samba/scripts sin confinamiento:

# setsebool -P samba_run_unconfined 1

Con el fin de que SELinux permita al servicio smb compartir todos los recursos en modo de sólo lectura:

# setsebool -P samba_export_all_rw 1

Para que SELinux perminta al servicio smb compartir todos los recursos en modo de lectura y escritura:

# setsebool -P samba_export_all_rw 1

Mandato chcon

Para definir que un directorio será compartido a través del servicio smb y que debe considerarse como contenido Samba, por ejemplo /var/samba/publico:

# chcon -t samba_share_t /var/samba/publico

Antes de configurarse en el el archivo /etc/samba/smb.conf, cada nuevo directorio que se vaya a compartir debe ser configurado como se ha descrito anteriormente.

Iniciar el servicio

# service nmb start
# service smb start

Añadir el servicio al arranque del sistema

# chkconfig nmb on
# chkconfig smb on

Después de aplicar cambios al archivo de configuración de Samba es necesario reiniciar el servicio smb

# service smb restart

El servicio nmb es el encargado de proveer el servidor de nombre para los clientes a través de NetBios sobre IP. Por tanto, debe reiniciar el servicio nmb si realiza cualquier cambio en la configuración de la opción netbios name

# service nmb restart

Alta de cuentas de usuario

Primero asigne una contraseña al usuario root (no tiene que ser la misma utilizada en el sistema).

# smbpasswd -a root

La sincronización de cuentas entre el servidor Samba y las estaciones Windows se realiza ingresando el mismo nombre de usuario y contraseña tanto en el servidor Samba como en la máquina Windows.

La mayoría de las cuentas de usuario que se utilizan para acceder a Samba no requieren acceso al intérprete de comandos del sistema, no hace falta asignar una contraseña con el mandato passwd. El intérprete de comandos quedará definido como /sbin/nologin o /bin/false para la cuenta de usuario. Esta cuenta en cuestión estará inactiva para el resto de servicios.

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius

Archivo lmhosts

Se utiliza para resolver de manera local los nombres NetBios, asociándolos con su dirección IP correspondiente. El nmbre NetBios no debe exceder los doce caracteres alfanuméricos. Como mínimo debe definirse el nombre del anfitrión del servidor Samba junto a su dirección IP.

# vi /etc/samba/lmhosts
127.0.0.1      localhost
192.168.0.1      servidor

Configuración básica del archivo smb.conf

# vi /etc/samba/smb.conf

La opción workgroup define el grupo de trabajo

workgroup = MYGROUP

Opción netbios name

Define un nombre de anfitrión distinto al detectado automáticamente. Debe ser el mismo que aparece en el archivo /etc/samba/lmhosts

netbios name = servidor

Opción server string

server string = Servidor Samba %v en %L

Opción hosts allow

En esta entrada del archivo smb.conf se pueden definir direcciones IP o redes que tendrán permiso de acceso hacia el servidor. Por tanto, una red con anfitriones con direcciones IP desde 192.168.0.1 hasta 192.168.0.254, el rango de direcciones IP definido en hosts allow será 192.168.0., (los tres primeros octetos).

Vamos a definir las redes 192.168.0.0/24, 102.168.1.0/24 y 192.168.3.0/24 como vimos con anterioridad utilizando los tres primeros octetos de la dirección IP de red, en el caso de cualquier dirección IP de la red 127.0.0.0/8 se define sólo el primer octeto de dicho segmento.

hosts allow = 127., 192.168.0., 192.168.1., 192.168.3.

Opción name resolve order

Define el orden en que se intenta de resolver los nombres NETBIOS. Primero con la información del archivo /etc/samba/lmhosts, luego el archivo /etc/hosts, a continuación de consultas en el servidor WINS y, si todo lo anterior falla, a través de la dirección IP de difusión de la red local.

name resolve order = lmhosts hosts wins bcast

Gestor de archivos Nautilus

Esta configuración es necesaria para el gestor de archivos predeterminado de Gnome, Nautilus y además que se especifique wins en el orden de resolución de nombres del archivo /etc/nsswitch.conf del anfitrión desde el cual se ejecute.

# vi /etc/nsswitch.conf

hosts:    files dns

al final agregje wins

hosts:    files dns wins

Opción remote announce

remote announce = 192.168.3.127, 192.168.1.255

Reinicie los servicios para aplicar los cambios.

# service smb restart
# service nmb restart

Compartir directorios

Crear el directorio /var/samba/publico

# mkdir -p /var/samba/publico

Cambiar el contexto de SELinux para que este directorio sea considerado como contenido Samba.

# chcon -t samba_share_t /var/samba/publico


[publico]

comment = Recurso compartido publico

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644

Listas de control de acceso ACL

setfacl se utiliza para cambiar los permisos en las listas de control de acceso de un archivo o directorio dado. Asignar cambiar permisos de lectura, escritura y ejecución al usuario andrius

Crear el usuario y agregarlo al grupo samba

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius
# passwd andrius

# setfacl -m u:andrius:rwX /var/samba/publico

Se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso a directorios evitando aplicar el bit de ejecución a los archivos.

getfal se utiliza para determinar los permisos establecidos en las listas de control de acceso de un archivo o directorio.

# getfacl /var/samba/publico/

getfacl: Eliminando '/' inicial en nombres de ruta absolutos

# file: var/samba/publico/

# owner: root

# group: root

user::rwx

user:andrius:rwx

group::r-x

mask::rwx

other::r-x


Estos permisos que se establecieron en la lista de control de acceso del directorio /var/samba/publico son exclusivamente para éste. Cualquier nuevo archivo o directorio creado carecerá de estos nuevos permisos. Si se desea que éstos permisos se vuelvan los predeterminados para los nuevos archivos y directorios que sean creados en lo sucesivo dentro del directorio /var/samba/publico, se ejecuta el mismo mandato setfacl, pero añadiendo la opción -d para definir que serán los permisos  predeterminados  para nuevos archivos  y directorios.

Lo anterior muestra que sólo el propietario del directorio tiene permisos de lectura, escritura y acceso. Para lograr que un usuario en particular pueda acceder también a este directorio, se ejecuta el mandato setfacl, con la opción -m para modificar la lista de control de acceso, [u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos. Ejemplo:

setfacl -m u:usuario:rX /var/samba/publico

En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.

Lo mismo en notación octal

# setfacl -m u:usuario:5 /var/samba/publico

Editar el archivo /etc/samba/smb.conf y al final añada el siguiente contenido


[publico]

comment = Recurso compartido publico 

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644


# service smb restart

Ocultando archivos que empiezan por punto.

Los archivos cuyo nombre comienza con un punto (archivos de configuración, normalmente), como es el caso del directorio de inicio del usuario en el servidor Samba (.bash_profile, .bashrc, .bash_history entre otros) pueden ocultarse con la opción hide dot files y el valor Yes.

[homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    inherit acls = yes
    hide dot files = yes

Reinicie el servidor smb para que los cambios tengan efecto

# service smb restart


Montar recursos compartidos desde un cliente Linux

$ cat /etc/hosts
127.0.0.1        localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6
192.168.0.1    servidor

# mkdir /mnt/publico

# mount.cifs -o username=andrius //servidor/publico /mnt/publico

Solicitará la contraseña del usuario utilizado en el servidor Samba

Password for andrius@//servidor/publico:

# mount | grep publico
//servidor/publico on /mnt/publico type cifs (rw)

Cree el archivo /etc/acreditar para hacer permanente lo anterior.

# vim /etc/acreditar

Especifique el nombre de usuario y contraseña utilizados con el recurso compartido.

username=andrius
password=password

Cambiando los permisos de acceso al archivo para que sólo el usuario root pueda ver y modificar el contenido.

# chmod 600 /etc/acreditar

# vim /etc/fstab

Este recurso será montado automáticamente en el siguiente reinicio del sistema. Agregue la siguiente línea incluyendo las opciones uid y gid

//servidor/publico /mnt/publico cifs credentials=/etc/acreditar,uid=501,gid=501 0 0

Utilizar smbclient desde Linux

Lo más práctivo y sencillo para hacer pruebas es el mandato smbclient. Permite acceder hacia cualquier servidor Samba y Windows.

# smbclient -U andrius -L servidor


Conectar un cliente Windows al servior Samba

Esta máquina está en la red 192.168.3.0/25 detrás de un firewall router Soekris y OpenBSD.






https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/pdf/system_administrators_guide/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-en-US.pdf

Centos es genial!.

domingo, 4 de febrero de 2018

Servidor Centos 6.9

Samba en un servidor Centos
Servidor NTP Centos


Este servidor consta de dos tarjetas de red: Una con la que se conecta a Internet desde el router del proveedor de acceso a Internet (ISP) y otra para la red interna. El sistema operativo es Centos 6.9 excelente sistema con una extensa documentación. DHCP, DNS, Samba, Iptables, etc..

eth0 = Internet
eth1 = Red interna

Centos 6.9 puede instalarse desde un dvd o una memoria USB en modo gráfico (conectando el servidor a un monitor). A partir de la mínima configuración puede continuar vía ssh desde una máquina de la red. La opción a elegir es servidor.


Estructurar la red eth0 eth1. /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1


DEVICE=eth0
HWADDR=00:22:4D:A5:9D:06
TYPE=Ethernet
UUID=2288f191-aa67-420a-b23c-ad5ce6bc1736
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

DEVICE=eth1
HWADDR=00:22:4D:A5:9D:0A
TYPE=Ethernet
UUID=6f52e738-8c50-4c34-9f47-399086d5406f
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
PEERDNS=no



Servidor DHCP para entregar direcciones de red a los equipos de la red interna /etc/dhcp/dhcpd.conf


# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "linux.bcn";

ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option domain-name-servers 8.8.8.8,8.8.4.4,192.168.0.1;
option ntp-servers 192.168.0.1;
range 192.168.0.50 192.168.0.99;
}

Habilitar ssh y prohibir la autenticación como usuario root
PermitRootLogin no
AllowUsers carles

Activar el reenvío de paquetes IP

# sysctl net.ipv4.ip_forward = 1

En el archivo /etc/sysctl.conf cambiar
# Controls IP packet forwarding
net.ipv4.ip_forward = 0

por
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Iptables para administrar Netfilter

# Generated by iptables-save v1.4.7 on Fri Feb  9 23:38:57 2018
*mangle
:PREROUTING ACCEPT [1128:95583]
:INPUT ACCEPT [1033:84832]
:FORWARD ACCEPT [95:10751]
:OUTPUT ACCEPT [722:117312]
:POSTROUTING ACCEPT [789:118879]
COMMIT
# Completed on Fri Feb  9 23:38:57 2018
# Generated by iptables-save v1.4.7 on Fri Feb  9 23:38:57 2018
*nat
:PREROUTING ACCEPT [11:704]
:POSTROUTING ACCEPT [1:116]
:OUTPUT ACCEPT [32:9528]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
-A POSTROUTING -o eth0 -j MASQUERADE 
COMMIT
# Completed on Fri Feb  9 23:38:57 2018
# Generated by iptables-save v1.4.7 on Fri Feb  9 23:38:57 2018
*filter
:INPUT DROP [9:353]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -p udp -m udp --dport 67:68 -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT 
-A INPUT -s 192.168.0.0/24 -i eth1 -p tcp -m tcp --sport 1024:65535 --dport 22 -m state --state NEW -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 135:139 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 135:139 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
-A INPUT -i eth0 -j LOG 
-A INPUT -i eth1 -j LOG --log-prefix "From LAN:" 
-A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT 
-A FORWARD -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -o eth0 -p tcp -m tcp --sport 31337 --dport 31337 -j DROP 
-A FORWARD -j LOG --log-prefix "forward:" 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -d 192.168.0.0/24 -o eth1 -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --sport 31337 --dport 31337 -j DROP 
-A OUTPUT -s 192.168.0.0/24 -o eth1 -p udp -m udp --sport 1024:65535 --dport 53 -j ACCEPT 
-A OUTPUT -s 192.168.0.0/24 -o eth1 -p udp -m udp --dport 67:68 -j ACCEPT 
-A OUTPUT -s 192.168.0.0/24 -o eth1 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT 
-A OUTPUT -s 192.168.0.0/24 -o eth1 -p udp -m udp --dport 5353 -j ACCEPT 
-A OUTPUT -s 192.168.0.0/24 -o eth1 -p udp -m udp --dport 67:68 -j DROP 
-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT 
-A OUTPUT -o WAN_IFACE -p tcp -m tcp --sport 1:1024 -j DROP 
-A OUTPUT -o WAN_IFACE -p udp -m udp --sport 1:1024 -j DROP 
-A OUTPUT -o eth0 -p udp -m udp --sport 1:1024 -j DROP 
COMMIT
# Completed on Fri Feb  9 23:38:57 2018

Reiniciar el servicio iptables
# service iptables restart

Linux es genial!.

domingo, 23 de octubre de 2016

Slackware 14.2 KDE

Instalar Slackware 14.2 y actualizar kde 4.14.3 a kde 5 plasma 64 bit uefi
Hardware : procesador Intel Braswell, 8 gb de ram, disco duro ssd 120 GB

Slackware Live Edition

El programa setup2hd, incluido en el live dvd, es un instalador de Slackware modificado que le guiará a través de los conocidos menús de configuración e instalará el contenido de Slackware Live Edition en su disco duro. Se puede ejecutar desde su sesión X y seguir interactuando con Internet mientras se instala Slackware.

Compatibilidad con System V

Compatibilidad del sistema V init se introdujo en Slackware 7.0. Muchas otras distribuciones de Linux hacen uso de este estilo en vez del estilo BSD. Básicamente cada nivel de ejecución se da un subdirectorio para los scripts de init, mientras que el estilo BSD brinda un script de inicio para cada nivel de ejecución.

El script rc.sysvinit buscará cualquier scripts de inicio System V que tenga en /etc/rc.d y utilizarlos, si es adecuado el nivel de ejecución.

Al ejecutar del slackdvd de instalación  lo primero es elegir el teclado querty/es.map (español España).

Particionado con cfdisk
Justo después de crear las particiones con cfdisk es importante asegurarse que la partición sda1 tiene el formato correcto. No es suficiente con solo indicar que el type es Efi System.
# mkfs.vfat /dev/sda1



Una vez creadas las particiones el resto del proceso es muy intuitivo y no explico porque no contempla dificultad alguna.

Continua la instalación  tecleando desde la linea de comando
# setup

El resto de la instalación es muy intuitivo. Al final elegimos las opciones por defecto para el escritorio kde e incluimos kdei que el paquete de idiomas de kde.

locales

/etc/profile.d/lang.sh

Ver idiomas disponibles
# locale -a

No copie la salida literal de locale -a, no tendrá soporte unicode.

Lenguaje es España lang.sh

# nano -w /etc/profile.d/lang.sh
export LANG="es_ES.UTF-8"
export LC_MESSAGES="es_ES.UTF-8"
export LC_CTYPE="es_ES@euro"
export LC_COLLATE="es_ES@euro"
export LC_TIME="es_ES.UTF-8"
export LC_NUMERIC="es_ES.UTF-8"
export LC_MONETARY="es_ES@euro"
export LC_PAPER="es_ES.UTF-8"
export LC_TELEPHONE="es_ES.UTF-8"
export LC_ADDRESS="es_ES.UTF-8"
export LC_MEASUREMENT="es_ES.UTF-8"
export LC_NAME="es_ES.UTF-8"


Existen buenas razones por las que Slackware no activa unicode por defecto:
# unicode_stop
# unicode_start

Ver actual fuente de consola
# showconsolefont

Ubicación de las fuentes:
# ls /usr/share/kbd/consolefonts.

Para elegir una fuente de consola tecleamos en la terminal: 
# setconsolefont

Alternativamente puede utilizar el archivo rc.font
# cat -w /etc/rc.d/rc.font
#!/bin/sh
setfont -v lat9-16.psf.gz

Slackpkg
Es una herramienta para instalar o actualizar paquetes a través de una red,  desde un espejo de Slackware.
 
Instalar Slackpkg desde el SlackDVD
# cd /mnt/cdrom/slackware64/np/
# installpkg slackpkg-2.82.1-noarch-3.txz

Abrir el archivo mirrors y utilizar el mas cercano, descomentando la linea correspondiente, p.e
# PORTUGAL (PT)
http://darkstar.ist.utl.pt/pub/slackware/slackware64-14.2/

# nano /etc/slackpkg/mirrors

# slapkpg update gpg
# slackpkg update

Archivo de configuracion slackpkg

# sed -e '/^[ ]*#/d' -e '/^$/d' /etc/slackpkg/slackpkg.conf
TEMP=/sda6/var/cache/packages
WORKDIR=/var/lib/slackpkg
WGETFLAGS="--passive-ftp"
DELALL=on
CHECKMD5=on
CHECKGPG=on
CHECKSIZE=on
PRIORITY=( patches %PKGMAIN extra pasture testing )
POSTINST=on
ONLY_NEW_DOTNEW=off
ONOFF=on
DOWNLOAD_ALL=off
DIALOG=on
BATCH=off
DEFAULT_ANSWER=n
USE_INCLUDES=on
SPINNING=on
DIALOG_MAXARGS=139000

Archivo blacklist. Incluye los paquetes que no deben ser actualizados.

#/d' -e '/^$/d' /etc/slackpkg/blacklist    
#xorg-server
#kernel-firmware
#kernel-generic
#kernel-generic-smp
#kernel-headers
#kernel-huge
#kernel-huge-smp
#kernel-modules
#kernel-modules-smp
#kernel-source

Instalar slackpkg+ Descargar desde 
https://sourceforge.net/projects/slackpkgplus/ 
$ cd Download/
# installpkg slackpkg+-1.7.0-noarch-4mt.txz

Ejemplo del archivo de configuracion slackpkgg+

# sed -e '/^[ ]*#/d' -e '/^$/d' /etc/slackpkg/slackpkgplus.conf
SLACKPKGPLUS=on
VERBOSE=1
ALLOW32BIT=off
USEBL=1
WGETOPTS="--timeout=20 --tries=2"
SEARCH_CLOG_INPARENT=on
CACHEUPDATE=off
GREYLIST=on
SENSITIVE_SEARCH=on
WW_FILE_SEARCH=on
SHOWORDER=package
DETAILED_INFO=none
STRICTGPG=on
PKGS_PRIORITY=( ktown )
TAG_PRIORITY=off
REPOPLUS=( slackpkgplus alien alien_restricted )
MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
MIRRORPLUS['alien']=http://bear.alienbase.nl/mirrors/people/alien/sbrepos/14.2/x86_64/
MIRRORPLUS['alien_restricted']=http://bear.alienbase.nl/mirrors/people/alien/restricted_sbrepos/14.2/x86_64/
MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
MIRRORPLUS['ktown']=http://alien.slackbook.org/ktown/14.2/5/x86_64/

El sistema verifica la firma GPG de cada paquete (por defecto), slackpkg.conf
CHECKGPG=on

Como se utiliza el manejador de paquetes slackpkg?
bash-4.3# slackpkg help

slackpkg - version 2.81 / slackpkg+ 1.7.0

Usage:  slackpkg update [gpg]           download and update files and 
                                        package indexes
        slackpkg check-updates          check if there is any news on
                                        Slackware's ChangeLog.txt
        slackpkg install package        download and install packages 
        slackpkg upgrade package        download and upgrade packages
        slackpkg reinstall package      same as install, but for packages 
                                        already installed
        slackpkg remove package         remove installed packages
        slackpkg clean-system           remove all packages which are not 
                                        present in the official Slackware 
                                        package set. Good to keep the house
                                        in order
        slackpkg upgrade-all            sync all packages installed in your 
                                        machine with the selected mirror. This
                                        is the correct way to upgrade all of 
                                        your machine.
        slackpkg install-new            install packages which are added to
                                        the official Slackware package set.
                                        Run this if you are upgrading to another
                                        Slackware version or using current.
        slackpkg blacklist              Blacklist a package. Blacklisted
                                        packages cannot be upgraded, installed,
                                        or reinstalled by slackpkg
        slackpkg download               Only download (do not install) a package
        slackpkg info package           Show package information 
                                        (works with only ONE package)
        slackpkg search package         Search packages that have a
                                        selected name
        slackpkg file-search file       Search for a specific file in the
                                        entire package collection
        slackpkg new-config             Search for new configuration files and
                                        ask to user what to do with them.
        slackpkg generate-template      Create a template with all 
                                        official Slackware packages installed 
                                        in your machine.
        slackpkg install-template       Install selected template.
        slackpkg remove-template        Remove selected template. Be careful.
        slackpkg help                   Show this screen. 


Antes de utilizar slackpkg ejecutamos:
# slackpkg update gpg
# slackpkg update && slackpkg update

instalar iptables y nmap desde SlackDVD
# cd /run/media/carles/SlackDVD/slackware64/n

# installpkg iptables-1.6.0-x86_64-2.txz

# installpkg nmap-7.12-x86_64-1.txz

Generar reglas de Firewall fácil. Adaptado para Slackware.
Archivo de configuración de iptables /etc/rc.d/rc.firewall chmod +x /etc/rc.d/rc.firewall (ejecutable)
############################################
SYSCTL="/sbin/sysctl -w" 
IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
IPTR="/usr/sbin/iptables-restore"
INET_IFACE="eth0"
LO_IFACE="lo"
LO_IP="127.0.0.1"
if [ "$1" = "save" ]
then
 echo -n "Saving firewall to /etc/sysconfig/iptables ... "
 $IPTS > /etc/sysconfig/iptables
 echo "done"
 exit 0
elif [ "$1" = "restore" ]
then
 echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
 $IPTR < /etc/sysconfig/iptables
 echo "done"
 exit 0
fi
echo "Loading kernel modules ..."
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
else
    $SYSCTL net.ipv4.tcp_syncookies="1"
fi
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
else
    $SYSCTL net.ipv4.conf.all.rp_filter="1"
fi
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
    $SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
fi
if [ "$SYSCTL" = "" ]
then
    echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
else
    $SYSCTL net.ipv4.conf.all.accept_source_route="0"
fi
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
else
    $SYSCTL net.ipv4.conf.all.secure_redirects="1"
fi
if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
else
    $SYSCTL net.ipv4.conf.all.log_martians="1"
fi
echo "Flushing Tables ..."
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
if [ "$1" = "stop" ]
then
 echo "Firewall completely flushed!  Now running with no firewall."
 exit 0
fi
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
echo "Create and populate custom rule chains ..."
$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N icmp_packets
$IPT -N udp_inbound
$IPT -N udp_outbound
$IPT -N tcp_inbound
$IPT -N tcp_outbound
$IPT -A bad_packets -p ALL -m conntrack --ctstate INVALID -j LOG \
    --log-prefix "Invalid packet: "
$IPT -A bad_packets -p ALL -m conntrack --ctstate INVALID -j DROP
$IPT -A bad_packets -p tcp -j bad_tcp_packets
$IPT -A bad_packets -p ALL -j RETURN
$IPT -A bad_tcp_packets -p tcp ! --syn -m conntrack --ctstate NEW -j LOG \
    --log-prefix "New not syn: "
$IPT -A bad_tcp_packets -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG \
    --log-prefix "Stealth scan: "
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A bad_tcp_packets -p tcp -j RETURN
$IPT -A icmp_packets --fragment -p ICMP -j LOG \
    --log-prefix "ICMP Fragment: "
$IPT -A icmp_packets --fragment -p ICMP -j DROP
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j DROP
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
$IPT -A icmp_packets -p ICMP -j RETURN
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --destination-port 138 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 --source-port 67 --destination-port 68 \
     -j ACCEPT
$IPT -A udp_inbound -p UDP -j RETURN
$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT
$IPT -A tcp_inbound -p TCP -j RETURN
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT
echo "Process INPUT chain ..."
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
$IPT -A INPUT -p ALL -j bad_packets
$IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP
$IPT -A INPUT -p ALL -i $INET_IFACE -m conntrack --ctstate ESTABLISHED,RELATED \
     -j ACCEPT
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP
$IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
    --log-prefix "INPUT packet died: "
echo "Process FORWARD chain ..."
echo "Process OUTPUT chain ..."
$IPT -A OUTPUT -p icmp -m conntrack --ctstate INVALID -j DROP
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT
$IPT -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
    --log-prefix "OUTPUT packet died: "
echo "Load rules for nat table ..."
echo "Load rules for mangle table ..."
###############################################

Colorear la salida de ls:
$ cat .bashrc
alias ls="ls --color"
alias ll="ls -l --color"

Lo copiamos a root
# cp .bashrc /root/


Instalar un paquete con slackpkg
# slackpkg install chromium


Instalar LibreOffice es
# slackpkg search libreoffice

# slackpkg install libreoffice-5.2.1 libreoffice-l10n-es-5.2.1 libreoffice-dict-es-5.2.1

# slackpkg install webcore-fonts-installer

Instalar flashplayer-plugin
# slackpkg install flashplayer-plugin


Crear la base de datos de slocate
# slocate -u

Redirigir errores salida standard para omitir en pantalla

# find / -iname xinitrc 2>/dev/null


Antes de realizar un update-all ver los cambios en el archivo Changelog.txt
# slackpkg check-updates

Actualizar el sistema
# slackpkg upgrade-all

Como hemos actualizado el kernel el sistema nos pregunta si queremos actualizar lilo, le decimos que no porque nuestro sistema es uefi y utiliza elilo.

$ vim /etc/fstab


Ejecutar eliloconfig (si no lo hace no arrancara el sistema con el nuevo kernel)
# eliloconfig

# slackpkg check-updates

No news... is good news

Esto quiere decir que no hay cambios en ChangeLog.txt

Manejador de new config files de Slackware:


Alternativamente podemos utilizar find para encontrar los archivos .new
# find /etc/ *.new
blacklist.new
mirrors.new

Actualizar KDE 5 Plasma
Un proceso sencillo gracias al trabajo de Eric Hameleers alias alienbob y documentado en el archivo README o README.html. Es el archivo que Eric Hameleers (alienbob) mantiene actualizado. Las cosas que pueden cambiar estarán en el README del día que realice la actualización.

Imprescindible no estar ejecutando KDE o cualquier entorno X. Haga un cierre de sesion (log out) y cambie al nivel de ejecución (runlevel) 3 tecleando init 3 si esta en runlevel 4 (grafical login). Luego ejecute los camandos del archivo README desde la consola.

Dicho esto, hago un resumen de la actualización que yo he realizado en octubre del 2016.

Si inicia con startx (/etc/inittab):

 These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:

Actualizar KDE 5 Plasma desde KDE 4.14.3

# removepkg /var/log/packages/*-4.14.3-*
# removepkg libkscreen
# removepkg kscreen
# removepkg kactivities
# removepkg kde-workspace
# removepkg libmm-qt
# removepkg libnm-qt
# removepkg plasma-nm
#removepkg polkit-kde-agent-1
# removepkg polkit-kde-kcmodules-1
# removepkg kdeconnect-kde
# removepkg kdepimlibs

Más fácil aún es la utilización de Slackpkg y antes deseleccionar los paquetes que quiere conservar (Amarok, Calligra, k3b, etc):
# slackpkg remove kde

Descargar los archivos precompilados necesarios utilizando rsync (Alternativamente puede utilzar lftp)
Necesito los paquetes x86_64 por tanto excluyo los x86, no olvide el punto final
$ mkdir alien
$ cd alien
$ rsync -av --exclude=x86 rsync://alien.slackbook.org/alien/ktown/current/5 .


$ pwd
/home/carles/alien
$ ls
$ README  README.html   x86_64

Ejecutar estos comando como root. Slackware 64-bit:

# upgradepkg --reinstall --install-new x86_64/deps/*.t?z
# upgradepkg --reinstall --install-new x86_64/deps/telepathy/*.t?z
# upgradepkg --reinstall --install-new x86_64/kde/*/*.t?z

Para instalar el paquete de idioma español
# upgradepkg --install-new x86_64/kdei/kde-l10n-es-16.08.0-noarch-1alien.txz

Si tiene el paquete de idioma instalado
# upgradepkg x86_64/kdei/*.t?z

Procesar los "*.new" archivos con
# slackpkg new-config

Por  último y no menos importante tiene que ejecutar 'xwmconfig'
# xwmconfig
y seleccione 'xinitrc.plasma' como su session desktop.


Reiniciar
user name: carles
password
# startx

slackware-live-edition

Unix es genial!.

jueves, 7 de mayo de 2009

Iptables

Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red.

Autor: Pello Xabier Altadill Izura
Firewall simple
######################################################################
## SCRIPT de IPTABLES ##
## Pello Xabier Altadill Izura I+D+I+I en tiempo record ##
## Investigación, Desarrollo, Innovación e IMPLANTACIÓN ##
## Este script es de ejemplo y no es el mejor ejemplo, ##
## pero funciona en RedHat 7.2 y es muy pedagógico ##
#####################################################################

## Notas para usuarios de IPCHAINS:
# ipchains e iptables son módulos del kernel que
# NO pueden convivir juntos
# DENY ahora es DROP
# Los LOG se guardan de otra forma
echo -n Aplicando Reglas de Firewall...

## Instalando módulos
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

## Variables
EXTIF="eth0" # La que va al router
INTIF="eth1" # La que va a la LAN

## Primeras reglas
/sbin/iptables -P INPUT ACCEPT # INPUT se acepta por defecto MAL HECHO
/sbin/iptables -F INPUT
/sbin/iptables -P OUTPUT ACCEPT # OUTPUT se acepta por defecto, weno..
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD ACCEPT # FORWARD se acepta por defecto buf
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -F

## se deniega 80 y se guarda log (ejemplo)
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport www -j LOG --log-prefix "IPTablesFW> "
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport www -j DROP

## Acceso al 3128 (proxy squid) desde LAN
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 3128 -j ACCEPT
# El resto se tira
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport 3128 -j DROP

## Acceso al 143 desde LAN
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 143 -j ACCEPT

## Acceso al ssh desde la LAN
/sbin/iptables -A INPUT -i $EXTIF -s 213.195.64.0/24 -p TCP --dport 22 -j ACCEPT

## Acceso al ssh un rango externo
/sbin/iptables -A INPUT -i $EXTIF -s 213.195.64.0/24 -p TCP --dport 22 -j ACCEPT
# el resto se tira
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p TCP --dport 22 -j DROP
## Acceso al puerto 25
/sbin/iptables -A INPUT -i $EXTIF -s 213.191.89.0/24 -p TCP --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p TCP --dport 25 -j DROP


## FORWARD
# Que me haga log de todo el forward
/sbin/iptables -A FORWARD -j LOG

## He aqui el forward para la LAN, una regla mágica
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Ese peazo de bit que hay que habilitar
echo 1 > /proc/sys/net/ipv4/ip_forward

Ejemplo de Firewall más Completo
Este ejemplo es algo más serio, ya que la regla de input por defecto es DROP. Esta política de reglas es
la más segura, ya que por defecto se denegará TODO, y poco a poco se van habilitando las entradas precisas.
#!/bin/sh
## SCRIPT de IPTABLES
## Pello Xabier Altadill Izura
echo -n Aplicando Reglas de Firewall...

## Paramos el ipchains y quitamos el módulo
/etc/rc.d/init.d/firewall stop
rmmod ipchains

## Instalando módulos
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

## Variables
IPTABLES=iptables
EXTIF="eth1"
INTIF="eth0"

## En este caso,
## la tarjeta eth1 es la que va al ROUTER y la eth0 la de la LAN

## Primeras reglas
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -F

### En principio, si las reglas INPUT por defecto hacen DROP, no haria falta
### meter más reglas, pero si temporalmente se pasa a ACCEPT no esta de más.

## Todo lo que viene de cierta IP se deja pasar (administradores remotos...)
/sbin/iptables -A INPUT -i $EXTIF -s 203.175.34.0/24 -d 0.0.0.0/0 -j ACCEPT

## El localhost se deja
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

## Aceptar al exterior al 80 y al 443

# Permitir salida al 80


/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 80 -j ACCEPT
# Permitir salida al 443
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 443 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 443 -j ACCEPT

## SALIDA SMTP - Para que el servidor se pueda conectar a otros MTA
# Permitir salida SMTP
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 25 -j ACCEPT

## SALIDA FTP - Para que el servidor se pueda conectar a FTPs
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
# ftp activo
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
# ftp pasivo
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

## El acceso al 19720 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 19720 -j DROP

## El acceso al 19720 desde dentro, ACEPTADO
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 19720 -j ACCEPT

## El acceso al 19721 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 19721 -j DROP

## El acceso al SSH desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 1972 -j DROP

## El acceso al SMTP desde dentro, permitido.
/sbin/iptables -A INPUT -i $INTIF -p tcp --dport 25 -j ACCEPT
## El acceso al SMTP desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 25 -j DROP

## Acceso al 80 desde el interior ACCEPTADO PARA DOS IPs
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.11/32 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.54/32 -p tcp --dport 80 -j ACCEPT
## Acceso al 80 desde el interior DENEGADO PARA EL RESTO
#/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 80 -j DROP

## Acceso al PROXY
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 8082 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 8082 -j ACCEPT
/sbin/iptables -A INPUT -s 127.0.0.0/8 -p tcp --dport 8082 -j ACCEPT

# Desde el exterior denegado
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 8082 -j DROP

## Acceso a POP3 e IMAP desde el EXTERIOR, DENEGADO
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 143 -j ACCEPT


## Acceso a POP3 e IMAP desde el EXTERIOR, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 110 -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 143 -j DROP
## Acceso al 8082 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 8082 -j DROP

## FORWARD
# Que me haga log de todo el forward
#/sbin/iptables -A FORWARD -j LOG

# He aqui el forward
## Norma general
##iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.11/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.16 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.54/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.10.0/24 -j MASQUERADE

# Habilitar el forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

Reglas de Protección
Tranquilos , aquí no vamos a hablar de la última maza de cartas Magic que me he comprado, ni de for-
mulas para salir airosos jugando a La Llamada de Cthulhu, entre otras cosas porque no juego a esas cosas (mi hijo si). En esta breve sección listamos algunas reglas para proteger nuestro equipo y por extensión la red, de
ciertos ataques muy habituales en las redes como el smurf y otras formas de inundación y DoS.

¿Es recomendable usar todas estas normas? Según como administremos el nivel de paranoia.

Nota: hay que dar valores concretos a las variables $
# Deshabilitar broadcast
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deshabilitar el ping... quizá discutible.
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Deshabilitar la redirección del ping
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Registrar los accesos extraños, paquetes falseados, etc..
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood
iptables -A INPUT -i $IFACE -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP
# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
iptables -A INPUT -i $IFACE -f -j LOG --log-prefix "Fragmento! "
iptables -A INPUT -i $IFACE -f -j DROP

# Anti-spoofing (falseo de ip origen)


iptables -A INPUT -i $IFACE -s $IPADDR -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_A -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_B -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_C -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_D_MULTICAST -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_E_RESERVED_NET -j DROP
iptables -A INPUT -i $IFACE -d $LOOPBACK -j DROP
iptables -A INPUT -i $IFACE -d $BROADCAST -j DROP
(bien explicado en el script de linuxguruz)
# Proxy Transparent: peticiones al puerto 80 redirigir al SQUID(3128)
iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0/0 --dport 80 -j REDIRECT --to 3128