enero 24, 2020

IPTABLES HOWTO: Ejemplos de iptables para Sysadmins

VERSION ANALIZADA: iptables 1.4.7-1.4.12 (iptables -V)
Si no sabes que es Iptables o quieres una introducción sobre que es y como utilizarlo, puedes consultar la siguiente guía
IPTABLES HOWTO: Guia iptables para Sysadmins
Para poder trabajar con iptables, necesitamos privilegios de root.
En muchos sistemas, por defecto, se encuentra en /sbin/iptables o /usr/sbin/iptables

Ejemplos de reglas para IPTABLES:

Reset iptables firewall rules
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
Ver el estado de tu firewall y listar reglas
Type the following command as root:
iptables -L -n -v
iptables -n -L -v --line-numbers

iptables -L INPUT -n -v
iptables -L OUTPUT -n -v --line-numbers
Eliminar reglas de Firewall iptables -L INPUT -n --line-numbers
iptables -L OUTPUT -n --line-numbers
iptables -L OUTPUT -n --line-numbers | less
iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1
Se puede eliminar por número de regla
iptables -D INPUT 4
O especificar una regla que coincida
iptables -D INPUT -s 202.54.1.1 -j DROP
Establecer las políticas de firewall por defecto  
Para eliminar todo el tráfico:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -L -v -n
Sólo a bloquear el tráfico entrante
Para eliminar todos los paquetes entrantes / enviado, pero permitir el tráfico saliente, escriba:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -L -v -n


Eliminar direcciones de red privada en la interfaz pública (Suponiendo eth1 como interfaz pública)
iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Bloquear IP:
iptables -A INPUT -s 192.168.1.5 -j DROP
iptables -A INPUT -s 192.114.71.13 -j DROP
Guardar reglas:
iptables-save > /root/iptables.fw

To save firewall rules under CentOS / RHEL / Fedora Linux, enter:
service iptables save

Restaurar reglas:
iptables-restore < /root/iptables.fw

To restore firewall rules under CentOS / RHEL / Fedora Linux, enter:
service iptables restart



Una forma de recargar reglas automáticamente al reiniciar el servidor:
vi /etc/rc.local
...
# Reload IPTABLES Rules automatically on restart
/sbin/iptables-restore < /root/iptables.fw


En CentOS pueden almacenarse las reglas en el siguiente fichero para recargarlas automáticamente:
/etc/sysconfig/iptables


Permitir todo el tráfico de loopback, y eliminar todo el tráfico a 127/8 que no usa lo0
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT


Eliminar cualquier paquete TCP que no se ha iniciado con el Flag SYN activo
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Aceptar todas las conexiones entrantes establecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Eliminar cualquier paquete inválido que no pueda ser identificado
iptables -A INPUT -m state --state INVALID -j DROPDrop all inbound telnet traffic
iptables -I INPUT -p tcp --dport 23 -j DROPDrop all outbound web traffic
iptables -I OUTPUT -p tcp --dport 80 -j DROPDrop all outbound traffic to 192.168.0.1
iptables -I OUTPUT -p tcp --dest 192.168.0.1 -j DROPAllow all inbound web traffic
iptables -I INPUT -p tcp --dport 80 -j ACCEPTAllow inbound port traffic for localhost
iptables -I INPUT -s 12.0.0.1 -p tcp --dport 2003 -j ACCEPTAllow inbound HTTPS traffic from 10.2.2.4
iptables -I INPUT -s 10.2.2.4 -p tcp -m tcp --dport 443 -j DROPDeny outbound traffic to 192.2.4.0-192.2.4.255
iptables -I OUTPUT -d 192.2.4.6.0/24 -j DROP

Bloquear tráfico al dominio facebook.com



Primero miramos la IP de facebook.com y luego su RANGO DE IPs
host -t a www.facebook.com
whois 69.171.228.40 | grep CIDR


Creamos la regla para no permitir acceso
iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP


También es posible hacerlo por nombre de dominio, pero la ayuda ya dice que es una mala idea ;)
You can also use domain name, enter:
iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP
iptables -A OUTPUT -p tcp -d facebook.com -j DROP


IPTABLES man page:
"... specifying any name to be resolved with a remote query such as DNS (e.g., facebook.com is a really bad idea), a network IP address (with /mask), or a plain IP address ..."


 Allow incoming connections to port 21 from one IP address 11.22.33.44
iptables -A INPUT -p tcp -m state --state NEW --dport 21 --source 11.22.33.44

Permitir todo el tráfico entrante SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


Permitir SSH saliente
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


Permitir tráfico HTTP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT


Permitir HTTPS saliente.
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT


Combinar reglas con multipuerto
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT


Deny all other incoming connections to port 21.
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -j DROP

Eliminar la primera regla de entrada
iptables -D INPUT 1

Bloquear o Permitir solicitud de ICMP Ping  
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT  


A continuación sólo acepta tipo limitado de peticiones ICMP:
### ** assumed that default INPUT policy set to DROP ** #############
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
## ** all our server to respond to pings ** ##
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT  


Permitir ping de fuera hacia adentro
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT


Permitir PING de dentro a fuera.
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT


Permitir tráfico DNS saliente.
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT


Abrir un rango de puertos de entrada
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

Abrir un rango de IPs
## only accept connection to tcp port 80 (Apache) if ip is between 192.168.1.100 and 192.168.1.200 ##
iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

## nat example ##
iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25



Restringir el número de conexiones concurrentes a un servidor por IP
Puedes utilizar el módulo connlimit para crear estas restricciones. Permitir 3 conexiones SSH por cliente:
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Limitar el número de conexiones HTTP a 20:
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP

Donde:
--connlimit-above 3 : Match if the number of existing connections is above 3.
--connlimit-mask 24 : Group hosts using the prefix length. For IPv4, this must be a number between (including) 0 and 32.


Eliminar o aceptar paquetes desde una MAC Address
iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
## *only accept traffic for TCP port # 22 from mac 00:0F:EA:91:04:07 * ##
iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT


Prevenir ataques DoS
-Limit 25/minute : Limita a sólo 25 conexiones por minuto.
-Limit-burst 100: Indica que el valor de limit/minute será forzado sólo después del número de conexiones en este nivel
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Permitir redirección de puertos.
Ejemplo puerto 422 redirigimos al 22, con lo que podemos tener conexiones al puerto 22 y al puerto 422 por ssh.
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT


Logar y eliminar paquetes:
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP


Logar y eliminar paquetes limitando el número de entradas repetidas en el LOG
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP


Sacar en el log los paquetes caídos.
Primero creamos una cadena llamada LOGGING:
iptables -N LOGGINGLuego todas las conexiones entrantes vayan por la cadena LOGGING
iptables -A INPUT -j LOGGINGLogueamos paquetes con un log-prefix
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7Y los bloqueamos:
iptables -A LOGGING -j DROP

Listado de reglas ejemplo para puertos TCP/UDP comunes:

Replace ACCEPT with DROP to block port:
## open port ssh tcp port 22 ##
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

## open cups (printing service) udp/tcp port 631 for LAN users ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

## allow time sync via NTP for lan users (open udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

## open tcp port 25 (smtp) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT

# open dns server ports for all ##
iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT

## open http/https (Apache) server port to all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

## open tcp port 110 (pop3) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT

## open tcp port 143 (imap) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT

## open access to Samba file server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT

## open access to proxy server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT

## open access to mysql server for lan users only ##
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT



Conclusión:
Esta entrada es una lista básica de reglas para iptables. Puedes crear y construir reglas más complejas a partir de estas, e incluso crear sistemas para automatizar la adición o eliminación de reglas.
Para crear las reglas, es importante comprender y conocer bien TCP/IP.
Puede ser importante o necesario aplicar ciertas modificaciones al kernel mediante sysctl.conf

Fuente: http://www.seavtec.com/en/content/soporte/documentacion/iptables-howto-ejemplos-de-iptables-para-sysadmins

enero 13, 2020

PostgreSQL insertar fecha y hora de ingreso a un campo de la tabla

PostgreSQL

Insertar fecha y hora de ingreso a un campo de la tabla.

Una forma de que automáticamente se inserte el dato de la fecha y hora en que se ingresó el registro en una tabla es usando la instrucción now() como campo por defecto en un tipo de dato TIMESTAMPTZ.

CREATE TABLE nombretabla (
     id         SERIAL PRIMARY KEY,
     otrocampo      VARCHAR NOT NULL,
     creadoenlafecha TIMESTAMPTZ DEFAULT Now()
);

enero 10, 2020

Error al subir archivo en Wordpress. El tamaño máximo de archivo 2 mb.

Para solucionar el error al subir archivo en Wordpress.



El tamaño máximo de archivo 2 mb.

Revisar el archivo php.ini comúnmente ubicado en /etc/php.ini las opciones

post_max_size
upload_max_filesize
memory_limit

Cambia la opción 
upload_max_filesize = 2M

por
upload_max_filesize = 4M

reinicia los servicios
service httpd restart
service php-fpm restart


enero 07, 2020

Problemas para montar un disco externo en Mac


1.- Ejecuta el Terminal
2.- Introduce "diskutil list" y a continuación enter
3.- Vamos a montar el que tiene el identificador como por ejemplo disk3s1.
4.- "diskuril mount disk3s1" el identificador del disco por ejemplo disk3s1.

Si no funciona usar el software Paragon Software https://www.paragon-software.com
Comprar e instalar HFS+
https://www.paragon-software.com/home/hfs-windows/

Comprar e instalar APFS
https://www.paragon-software.com/home/apfs-windows/

Si se puede ver los archivos, realizar una copia de seguridad y formatearlo como NTFS.
Después insertar en disco en la Mac y formatearlo de nuevo como HFS+ o APFS

noviembre 14, 2019

Visualizar el log de SQL Server mediante la herramienta SQL Server Management Studio

Tomado de: https://docs.microsoft.com/en-us/sql/relational-databases/performance/view-the-sql-server-error-log-sql-server-management-studio?view=sql-server-ver15

The SQL Server error log contains user-defined events and certain system events you can use for troubleshooting.

View the logs

  1. In SQL Server Management Studio, select Object Explorer. To open Object Explorer, select F8. Or on the top menu, select View, and then select Object Explorer:
    Object_Explorer
  2. In Object Explorer, connect to an instance of SQL Server, and then expand that instance.
  3. Find and expand the Management section (assuming you have permissions to see it).
  4. Right-click SQL Server Logs, select View, and then choose SQL Server Log.
    View_SQLServer_Log_SSMS
  5. The Log File Viewer appears (it might take a moment) with a list of logs for you to view.

See also


For more information, see MSSQLTips.com's helpful post Identify location of the SQL Server Error Log file.

noviembre 13, 2019

Cambiar nombre de usuario Windows 10

Si te has equivocado en el nombre de tu usuario y quieres cambiarlo, así como también el nombre del usuario Administrador. Hacerlo es muy sencillo, aunque no desde el Panel de control.
Ve a Inicio de Windows Imagen y escribe netplwiz y presionas Enter.
Imagen
Luego se abrirán las propiedades de Cuentas de usuario. Haces doble clic sobre el usuario que deseas cambiar el nombre y abrir una nueva ventana.
Imagen
En la casilla Nombre de usuario cambian el nombre por el de su preferencia en caso de que sea una cuenta local como el Administrador, si es una Cuenta Microsoft se debe cambiar en la casilla siguiente, en la de Nombre completo.
Imagen
Cuando hayas cambiado el nombre de tu usuario haces clic en Aplicar y después en Aceptar. Para que los cambios surtan efecto debes cerrar sesión si lo haces desde el mismo usuario que modificas.
Advertencia: Evita modificar otras opciones diferentes a las indicadas en estos pasos, la modificación incorrecta puede afectar el inicio de sesión del usuario modificado.
Pertenencia a grupos 
¿Qué es la Pertenencia a grupos?
Es la capacidad que tiene un Usuario en el equipo de modificar el sistema e instalar aplicaciones. El Usuario debe ser Administrador o pertenecer al Grupo administradores para poder hacer modificaciones importantes al sistema operativo. Hay 2 tipos básicos de usuarios, Estándar (Grupo de usuarios) y Administrador (Grupo de administradores), el primero grupo no tiene privilegios para hacer cambios al sistema en cambio el Grupo de administradores si los tiene.
En caso de que tengas conflicto de permisos de usuarios para hacer cambios al sistema debes verificarlo en la pestaña Pertenencia a grupos. Si tu usuario es Estándar y necesitas permisos, entonces marca la casilla Administrador.
Imagen


Espero que esto te ayude en lo que necesitas.

noviembre 12, 2019

AH01630: client denied by server configuration

Problema

AH01630: client denied by server configuration

Síntomas

/var/log/httpd/ssl_error_log
[Tue Nov 12 14:27:24.894836 2019] [authz_core:error] [pid 11320:tid 139831617136384] [client xxx.xxx.xxx.xxx:53240] AH01630: client denied by server configuration: xxx.html

Buscando la solución

https://stackoverflow.com/questions/18392741/apache2-ah01630-client-denied-by-server-configuration/25767603#25767603?newreg=3ab895094b2d4f93bb93dd0226167ca3

Solución

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory /Volumes/Data/Data/USER/Sites/>
    AllowOverride none
    Require all granted
</Directory>

Off topic


Si te sirvió la ayuda y quieres cooperar para que siga publicando soluciones, da clic en uno de los siguientes enlaces:
www.richardsite.com
www.allabord.com

Estas páginas tienen la intención de ser un catálogo de sitios de Internet clasificados por sección.

Si tienes algún sitio que te agrade lo puedo incluir. O tú mismo puedes agregar información, como:

  • la dirección en Internet de tu Home Page
  • el enlace a tu Twitter
  • el enlace a tu FanPage de Facebook
  • el enlace a tu Instagram
  • etc.



noviembre 11, 2019

Error curl: (23) Failed writing body (761 != 1291) al correr el comando curl https://getfedora.org/static/fedora.gpg | gpg --import

Problema


Al tratar de instalar el sistema operativo Fedora 31 muestra el error

advertencia:/var/lib/dnf/system-upgrade/authselect-compat-1.1-2.fc31.x86_64.rpm: EncabezadoV3 RSA/SHA256 Signature, ID de clave 3c3359c4: NOKEY

Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-x86_64 [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-x86_64]

Diagnóstico


Al tratar de importar los repositorios de fedora

al correr el comando 
# curl https://getfedora.org/static/fedora.gpg | gpg --import

da el error

Error curl: (23) Failed writing body (761 != 1291)

Solución


Para solucionar el Error curl: (23) Failed writing body (761 != 1291)

en vez de  correr el comando 

# curl https://getfedora.org/static/fedora.gpg | gpg --import

ejecutar el comando
# curl https://getfedora.org/static/fedora.gpg | tac | tac | gpg --import

Retroalimentación


Una solución alternativa es canalizar la transmisión a través de un programa intermediario que siempre lee toda la página antes de pasarla al siguiente programa.

P.ej. rizo "url" | tac | tac | grep -qs foo tac es un programa simple de Unix que lee toda la página de entrada e invierte el orden de las líneas (por lo tanto, lo ejecutamos dos veces).

Debido a que tiene que leer toda la entrada para encontrar la última línea, no generará nada para grep hasta que cURL haya terminado.

Grep seguirá cerrando el flujo de lectura cuando tenga lo que está buscando, pero solo afectará a tac, que no emite un error.

Fuente
https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body

Off topic


Si te sirvió la ayuda y quieres cooperar para que siga publicando soluciones, da clic en uno de los siguientes enlaces:
www.richardsite.com
www.allabord.com

Estas páginas tienen la intención de ser un catálogo de sitios de Internet clasificados por sección.

Si tienes algún sitio que te agrade lo puedo incluir. O tú mismo puedes agregar información como tu dirección en Internet de tu Home Page, Twitter, Facebook, Instagram, etc.

octubre 03, 2019

Configuración básica de Sendmail con soporte SSL/TLS.

Configuración básica de Sendmail con soporte SSL/TLS.

Fuente: http://www.alcancelibre.org/staticpages/index.php/15-como-sendmail-apendice-01
Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org
© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Es imprescindible primero estudiar y comprender los conceptos descritos en el documento titulado «Introducción a los protocolos de correo electrónico

Acerca de Sendmail.

Es uno de los más populares agentes de transporte de correo electrónico (MTA o Mail Transport Agent). Es un proyecto derivado delivermail y fue dirigido originalmente por Eric Allman a principios de la década de 1980. Aunque por largo tiempo se le ha criticado por muchos incidentes de seguridad, lo cierto es que éstos siempre han sido resueltos en tiempos razonables.
URL: http://www.sendmail.org/.

Acerca de SASL y Cyrus SASL.

SASL (Simple Authentication and Security Layer) es una implementación diseñada para la seguridad de datos en protocolos de Internet. Desempareja los mecanismos de la autenticación desde protocolos de aplicaciones, permitiendo, en teoría, cualquier mecanismo de autenticación soportado por SASL, para ser utilizado en cualquier protocolo de aplicación que sea capaz de utilizar SASL. En la actualidad SASL es un protocolo de IETF (Internet Engineering Task Force) que ha sido propuesto como estándar. Está especificado en el RFC 2222 creado por John Meyers en la Universidad Carnegie Mellon.
Cyrus SASL es una implementación de SASL que puede ser utilizada del lado del servidor o bien del lado del cliente y que incluye como principales mecanismos de autenticación soportados a ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI y PLAIN. El código fuente incluye también soporte para los mecanismos LOGIN, SRP, NTLM, OPT y KERBEROS_V4.
URL: http://asg.web.cmu.edu/sasl/sasl-library.html.

Acerca de DSA.

DSA (Digital Signature Algorithm o Algoritmo de Firma digital) es un algoritmo creado por el NIST (National Institute of Standards and Technology o Instituto Nacional de Normas y Tecnología de EE.UU.), publicado el 30 de agosto de 1991, como propuesta para el proceso de firmas digitales. Se utiliza para firmar información, más no para cifrar ésta.
URL: http://es.wikipedia.org/wiki/DSA

Acerca de RSA.

RSA, acrónimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para el ciframiento de claves públicas que fue publicado en 1977, patentado en EE.UU. en 1983 por el Instituto Tecnológico de Michigan (MIT). RSA es utilizado ampliamente en todo el mundo para los protocolos destinados para el comercio electrónico.
URL: http://es.wikipedia.org/wiki/RSA

Acerca de X.509.

X.509 es un estándar ITU-T (estandarización de Telecomunicaciones de la International Telecommunication Union ) para infraestructura de claves públicas (PKI o Public Key Infrastructure). Establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación. Este último se encarga de verificar que la ruta de un certificado sea válida bajo una infraestructura de clave pública determinada. Es decir, desde el certificado inicial —pasando por certificados intermedios— hasta el certificado de confianza emitido por una Autoridad Certificadora (CA o Certification Authority).
URL: http://es.wikipedia.org/wiki/X.509

Acerca de OpenSSL.

OpenSSL es una implementación libre de código fuente abierto, de los protocolos SSL (Secure Sockets Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security o Seguridad para Nivel de Transporte). Está basado sobre el extinto proyecto SSLeay iniciado por Eric Young y Tim Hudson.
URL: http://www.openssl.org/

Equipamiento lógico necesario.

Instalación a través de yum.

Si se utiliza de CentOS o Red Hat™ Enterprise Linux ejecute lo siguiente:
yum -y install sendmail sendmail-cf m4 make \
    cyrus-sasl cyrus-sasl-plain

Procedimientos.

Definiendo Sendmail como agente de transporte de correo predeterminado.

Ejecute alternatives con la opción --config y el valor mta:
alternatives --config mta
Lo anterior devolverá una salida similar a la siguiente, donde deberá elegir entre postfix y sendmail como MTA predeterminado del sistema:

Hay 2 programas que proporcionan 'mta'.

  Selección    Comando
-----------------------------------------------
   1           /usr/sbin/sendmail.postfix
*+ 2           /usr/sbin/sendmail.sendmail

Presione Intro para mantener la selección actual[+] o bien escriba el número de la selección:  2
Defina Sendmail como agente de transporte de correo (MTA, Mail Transport Agent), seleccionado éste
Si estuviera presente postfix, desactive y detenga éste y active e inicie el servicio sendmail:
service postfix stop
chkconfig postfix off
service sendmail start
chkconfig sendmail on

Certificado SSL/TLS.

Es importante generar un certificado SSL/TLS personalizado.
Elimine el certificado de prueba que está asociado al nombre de anfitrión localhost.
rm -f /etc/pki/tls/certs/sendmail.pem
La creación de la firma digital y certificado —en un único archivo con extensión *.pem— requiere utilizar una firma con algoritmo RSA de 4096 octetos (bits), estructura X.509 y sin DES. En el siguiente ejemplo, se establece una validez por 1825 días (cinco años) para el certificado creado:
openssl req -sha256 -new -x509 -nodes -newkey rsa:4096 -days 1825 \
    -out /etc/pki/tls/certs/sendmail.pem \
    -keyout /etc/pki/tls/certs/sendmail.pem
Lo anterior solicitará se ingresen varios datos:
  • Código de dos letras para el país.
  • Estado o provincia.
  • Ciudad.
  • Nombre de la empresa o razón social.
  • Unidad o sección.
  • Nombre del anfitrión. En el formato nombre.dominio.tld o dominio.tld. Ejemplo: alcancelibre.org, mail.alcancelibre.org, correo.alcancelibre.org. Por si acaso lo desconoce, tld corresponde a las siglas de Top Level Domain, es decir Dominio de Primer Nivel, como serían .com, .net, .org, .info, .mx, etc.
  • Dirección de correo.
La salida será algo similar a lo siguiente:
Generating a 1024 bit DSA private key
writing new private key to 'smtp.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) [GB]:MX
State or Province Name (full name) [Berkshire]:Distrito Federal
Locality Name (eg, city) [Newbury]:Mexico
Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
Organizational Unit Name (eg, section) []:Unidad de negoico responsable
Common Name (eg, your name or your server's hostname) []:mail.dominio.com
Email Address []:webmaster@dominio.com
Si definió un nombre de anfitrión absoluto (ejemplo: mail.dominio.com), el certificado sólo será válido cuando el servidor de correo electrónico sea invocado con el nombre definido en el campo Common Name. Es decir, sólo podrá utilizarlo cuando se defina mail.dominio.com como servidor SMTP/IMAP/POP3 con soporte TLS desde el cliente de correo electrónico. Funcionará incorrectamente si se invoca al servidor como, por mencionar un ejemplo, correo.dominio.com.
A fin de facilitar a los clientes de correo electrónico el poder gestionar una futura actualización de certificado, conviene añadir una huella distintiva indubitable (fingerprint) al certificado.
openssl x509 -subject -fingerprint -noout \
    -in /etc/pki/tls/certs/sendmail.pem
Es indispensable que el archivo *.pem tenga permisos de acceso de lectura y escritura sólo para root:
chmod 600 /etc/pki/tls/certs/sendmail.pem
chown root:root /etc/pki/tls/certs/sendmail.pem

Alta de cuentas de usuario y asignación de contraseñas.

La autenticación para SMTP, a través de cualquier método —PLAIN, LOGIN, Digest-MD5 o CRAM-MD5— requiere se gestione a través del servicio saslauthd.
Si los usuarios se van a dar de alta siguiendo el formato usuario@dominio.com en lugar de sólo usuario, una práctica común en los servidores con múltiples dominios virtuales, es necesario añadir al servicio saslauthd la opción -r, la cual permite combinar el nombre de usuario y dominio antes de pasar por el mecanismo de autenticación. Si éste es el caso, se debe editar el archivo /etc/sysconfig/saslauthd:
vi /etc/sysconfig/saslauthd
Y añadir la opción -r a los argumentos de FLAGS:
# Options sent to the saslauthd. If the MECH is other than "pam" uncomment
# the next line.
# DAEMONOPTS=--user saslauth

# Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
# for the list of accepted flags.
FLAGS=-r
Añada el servicio al arranque del sistema e inicie éste ejecutando lo siguiente:
chkconfig saslauthd on
service saslauthd start
El alta de usuarios es la misma que como con cualquier otro usuario del sistema. Sendmail utilizará el servicio saslauthd para autenticar a éstos a través de los métodos PLAIN y LOGIN.
Se sugiere se asignar /dev/null o /sbin/nologin como intérprete de mandatos para los usuarios de correo. Ejemplo:
useradd -s /dev/null usuario
La asignación de contraseñas para permitir autenticar a través de SMTP, POP3, e IMAP, utilizando el método PLAIN o bien el método LOGIN, se hace exactamente igual que con cualquier otra cuenta de usuario del sistema:
passwd usuario
El sistema solicitará se confirme la nueva contraseña. Prefiera utilizar buenas contraseñas y evitará así problemas de seguridad.
Nota.
La asignación de contraseñas para autenticar SMTP a través de métodos CRAM-MD5 y DIGEST-MD5 puede hacerse ejecutando saslpasswd2 con el nombre de usuario como argumento:
saslpasswd2 usuario
Cabe señalar que sólo algunos clientes de correo electrónico tienen de soporte para autenticar a través de estos métodos.
Puede mostrarse la lista de los usuarios con contraseña asignada a través de SASL-2 ejecutando sasldblistusers2.

Dominios a administrar.

Edite el archivo /etc/mail/local-host-names:
vi /etc/mail/local-host-names
Establezca los dominios locales que serán administrados:
dominio1.com
dominio2.net
dominio3.org
dominio4.com.mx

Control de acceso

Edite el archivo /etc/mail/access para definir las listas de control de acceso:
vi /etc/mail/access
Este archivo debe incluir todas las direcciones IP locales del servidor —las que se devuelvan tras ejecutar ip addr show.
Puede incluir también la lista direcciones IP, dominios o cuentas de correo electrónico a las que se quiera otorgar permisos de re-transmisión sin restricciones o con permiso para enviar correo electrónico sólo a cuentas locales. Puede definir también una lista negra de direcciones de correo electrónico, dominios y direcciones IP a las que se desee denegar el acceso. Considere que:
  • Cualquier elemento con RELAY tendrá permitido enviar correo electrónico, sin necesidad de autenticar y re-transmitir éste sin restricción alguna.
  • Cualquier elemento con OK tendrá permitido enviar correo electrónico, sin necesidad de autenticar pero sólo a las cuentas locales.
  • Cualquier elemento con REJECT tendrá prohibida cualquier tipo de comunicación de correo electrónico.
Nota.
Jamás configure una segmento completo de red local con RELAY, ya que dejaría de tener sentido utilizar autenticación a través de SMTP y potencialmente podría permitir que los problemas de seguridad de maquinas infectadas con virus, gusanos o troyanos, se magnifiquen, siendo que permitiría el envío, sin restricciones, de correo electrónico infectado o bien cantidades extraordinarias de spam, originadas por los equipos cuya seguridad se haya visto comprometida.
Ejemplo de configuración para el archivo /etc/mail/access:
Connect:localhost.localdomain RELAY
Connect:localhost  RELAY
Connect:127.0.0.1  RELAY
#
# Dirección IP del propio servidor.
Connect:192.168.70.51  RELAY
#
# Otros servidores de correo en la LAN a los que se les permitirá enviar
# correo libremente a través del propio servidor de correo.
Connect:192.168.70.52  RELAY
#
# Direcciones IP que sólo podrán entregar correo de forma local, es decir,
# no pueden enviar correo fuera del propio servidor.
Connect:192.168.2.24  OK
#
# Lista negra
usuario@molesto.com REJECT
productoinutil.com.mx REJECT
10.4.5.6  REJECT
#
# Bloques de Asia Pacific Networks, ISP desde el cual se emite la mayor
# parte del Spam del mundo.
# Las redes involucradas abarcan Australia, Japón, China, Corea del Sur, Taiwan,
# Hong Kong e India por lo que bloquear el correo de dichas redes significa
# cortar comunicación con estos países, pero acaba con entre el 60% y 80%
# del Spam.
222   REJECT
221   REJECT
220   REJECT
219   REJECT
218   REJECT
212   REJECT
211   REJECT
210   REJECT
203   REJECT
202   REJECT
140.109   REJECT
133   REJECT
61   REJECT
60   REJECT
59   REJECT
58   REJECT

Alias de root.

Es peligroso autenticarse con la cuenta de root para revisar los mensajes de correo electrónico originados por el sistema. Defina un alias hacia el cual se entregará todo el correo electrónico que originalmente fue dirigido a root.
Edite el archivo /etc/aliases:
vi /etc/aliases
Defina al final del archivo la cuenta de usuario regular al que le será entregado el correo electrónico originalmente iba dirigido a root:
root:  fulano
Ejecute newaliases para convertir el archivo /etc/aliases en /etc/aliases.db y verificar que la sintaxis esté correcta o determinar si existen aliases duplicados.
newaliases
Lo anterior debe devolver una salida similar a la siguiente:
/etc/aliases: 77 aliases, longest 10 bytes, 777 bytes total

Configuración de opciones de Sendmail.

Edite el archivo /etc/mail/sendmail.mc.
vi /etc/mail/sendmail.mc

confSMTP_LOGIN_MSG.

Esta opción permite establecer el mensaje de bienvenida al establecer la conexión al servidor y ocultar el nombre y la versión de Sendmail para agregar seguridad por oscuridad. Funciona haciendo que quien establezca una conexión hacia el servidor sea incapaz determinar qué versión de Sendmail se está utilizando y con ésto dificultar se puedan determinar las debilidades del servicio o determinar una vulnerabilidad específica. Habilite la siguiente línea resaltada eliminando el dnl y el espacio sobrante:
dnl # Do not advertize sendmail version.
dnl #
define(`confSMTP_LOGIN_MSG',`$j Sendmail; $b')dnl
dnl #
dnl # default logging level is 9, you might want to set it higher to
dnl # debug the configuration
Guarde los cambios y salga del editor.
Reinicie el servicio:
service sendmail restart
Realice una conexión al puerto 25. Obtendrá una salida similar a la siguiente:
$ telnet 127.0.0.1 25
220 mail.dominio.com ESMTP Sendmail ; Mon, 17 May 2004 02:22:29 -0500
quit
221 2.0.0 mail.dominio.com closing connection
Connection closed by foreign host.
$

confAUTH_OPTIONS.

Vuelva a editar el archivo /etc/mail/sendmail.mc:
vi /etc/mail/sendmail.mc
La siguiente línea resaltada permite realizar el proceso de autenticación a través del puerto 25 utilizando el método PLAIN o bien el método LOGIN, los cuales transmiten el nombre de usuario junto con su correspondiente contraseña en texto simple, garantizando 100% de compatibilidad con todos los clientes de correo electrónico existentes. Sin embargo ésto también implica un enorme riesgo de seguridad, por lo cual se recomienda implementar seguridad a través de SSL/TLS.
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS',`A')dnl
dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
Inhabilite ésta añadiendo un dnl y un espacio como se muestra a continuación:
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
dnl define(`confAUTH_OPTIONS',`A')dnl
dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
Localice la siguiente línea resaltada y habilite ésta eliminado el dnl y el espacio sobrante como se muestra a continuación:
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
dnl #
define(`confAUTH_OPTIONS',`A p')dnl
dnl # 
dnl # PLAIN is the preferred plaintext authentication method and used by
dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
Lo anterior hará que sea obligatorio a utilizar SSL/TLS para todas las conexiones con cualquier cliente de correo electrónico

TRUST_AUTH_MECH y confAUTH_MECHANISMS.

El soporte de autenticación requiere habilitar las siguientes dos líneas resaltadas:
dnl # guaranteed secure.
dnl # Please remember that saslauthd needs to be running for AUTH. 
dnl #
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl #
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl #     cd /etc/pki/tls/certs; make sendmail.pem
Elimine el soporte para GSSAPI, DIGEST-MD5 y CRAM-MD5. El primero requiere un servidor Kerberos y para los otros el algoritmo de ciframiento es demasiado débil para ser utilizado sin SSL/TLS y además sólo es soportado por algunos clientes de correo electrónico.
dnl # guaranteed secure.
dnl # Please remember that saslauthd needs to be running for AUTH. 
dnl #
TRUST_AUTH_MECH(`EXTERNAL LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL LOGIN PLAIN')dnl
dnl #
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl #     cd /etc/pki/tls/certs; make sendmail.pem

Soporte para SSL/TLS.

Habilite las siguientes líneas resaltadas para hacer el uso de la firma digital y certificado creados:
dnl # Complete usage:
dnl #     make -C /etc/pki/tls/certs usage
dnl #
define(`confCACERT_PATH',`/etc/pki/tls/certs')dnl
define(`confCACERT',`/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT',`/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY',`/etc/pki/tls/certs/sendmail.pem')dnl
dnl #
dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's
dnl # slapd, which requires the file to be readble by group ldap

DAEMON_OPTIONS.

De modo predeterminado Sendmail sólo escucha peticiones a través de la interfaz de retorno del sistema (127.0.0.1). Localice la siguiente línea resaltada:
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
Elimine el valor Addr=127.0.0.1 y la coma sobrante:
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
El puerto 587 (submission) puede ser utilizado también para envío de correo electrónico. Por estándar se utiliza como puerto alternativo en los casos donde un cortafuegos impide a los usuarios acceder hacia servidores de correo electrónico —que normalmente utilizan el puerto 25. Localice y habilite la siguiente línea resaltada:
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 465, but
dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
El acceso con STARTTLS se realizará a través de los puertos 25 o 587, sin embargo el acceso con SSL se realizará a través del puerto 465. Localice y habilite la siguiente línea resaltada:
dnl #
dnl # For this to work your OpenSSL certificates must be configured.
dnl #
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl #
dnl # The following causes sendmail to additionally listen on the IPv6 loopback
dnl # device. Remove the loopback address restriction listen to the network.

FEATURE(`accept_unresolvable_domains').

A fin de permitir el envío local del correo electrónico para los mensajes y alertas del sistema en un escenario sin servidores DNS, se utiliza la opción FEATURE(`accept_unresolvable_domains'). Debe inhabilitarse para impedir se acepte correo de dominios inexistentes (generalmente utilizado para el envío de correo masivo no solicitado o Spam). Inhabilite la línea añadiendo un dnl y un espacio:
dnl # protect yourself from spam. However, the laptop and users on computers
dnl # that do not have 24x7 DNS do need this.
dnl #
dnl FEATURE(`accept_unresolvable_domains')dnl
dnl #
dnl FEATURE(`relay_based_on_MX')dnl
dnl #

Archivo plantilla de todo lo anterior.

Si lo prefiere, puede descargar un archivo plantilla con todas las opciones para el archivo /etc/mail/sendmail.mc mencionadas arriba.
wget http://www.alcancelibre.org/linux/secrets/sendmail.mc \
    -O /etc/mail/sendmail.mc

Enmascaramiento.

El enmascaramiento sólo es necesario en casos donde el nombre de anfitrión del sistema es distinto al del dominio(s) administrado(s) en el servidor.
Habilite las siguientes tres líneas resaltadas eliminando los dnl y los espacio sobrantes y adapte el valor de MASQUERADE_AS para definir la máscara que utilizará el servidor para enviar correo electrónico (es decir, define lo que va después de la @ en la dirección de correo):
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
MASQUERADE_AS(`dominio1.com')dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
En el ejemplo anterior dominio1.com es sólo un ejemplo hipotético. Remplace por un dominio real.
Si se van a administrar múltiples dominios, añada aquellos que considere deban conservar su propia máscara. Utilice la opción MASQUERADE_EXCEPTION para cada uno como se muestra en el siguiente ejemplo:
dnl # specified domains appear to be sent from mydomain.com
dnl #
MASQUERADE_AS(`dominio1.com')dnl
MASQUERADE_EXCEPTION(`dominio2.net')dnl
MASQUERADE_EXCEPTION(`dominio3.org')dnl
MASQUERADE_EXCEPTION(`dominio4.com.mx')dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
En el ejemplo anterior dominio1.com, dominio2.net, dominio3.org y dominio4.com.mx son sólo ejemplos hipotéticos. Remplace por dominios reales.

Control del correo chatarra (spam) a través de DNSBLs.

Si se desea utilizar listas negras para mitigar el correo chatarra (spam), pueden añadir la siguiente línea para definir la lista negra de SpamCop.net, casi al final del archivo /etc/mail/sendmail.mc y justo arriba de MAILER(smtp)dnl:
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
FEATURE(`enhdnsbl', `bl.spamcop.net', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}', `t')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

Iniciar, detener o reiniciar servicio.

Ejecute lo siguiente para aplicar cambios realizados a la configuración:
service sendmail restart
Ejecute lo siguiente para iniciar por primera vez el servicio:
service sendmail start
Ejecute lo siguiente para detener el servicio:
service sendmail stop
Examine el contenido de /var/log/maillog ejecutando tail con la opción -f para detectar errores en la configuración:
tail -f /var/log/maillog

Comprobaciones.

Realice una conexión con nc (netcat) o bien con telnet, hacia al puerto 25 del anfitrión local:
telnet 127.0.0.1 25

Ejecute EHLO usando como argumento el nombre del dominio configurado y pulse la tecla ENTER. La salida deberá devolver todas las funciones del servidor y entre éstas debe devolver una línea que indica STARTTLS. La salida puede ser similar a la siguiente:
220 dominio.com ESMTP Sendmail ; Sat, 19 Jun 2010 18:18:02 -0500
ehlo dominio.com
250-dominio.dom Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-STARTTLS
250-DELIVERBY
250 HELP
QUIT
Ejecute QUIT y pulse la tecla ENTER para salir.
Ejecute lo siguiente para verificar el soporte SSL/TLS estableciendo conexiones SSL y TLS hacia los puertos 25, 465 y 587:
openssl s_client -crlf -connect 127.0.0.1:25 -starttls smtp
openssl s_client -connect 127.0.0.1:465
openssl s_client -crlf -connect 127.0.0.1:587 -starttls smtp
La salida de cualquiera de los anteriores será muy extensa, mostrando la información del certificado utilizado.
Ingrese EHLO con el dominio configurado. La salida deberá devolver todas las funciones del servidor y entre éstas debe devolver una línea que indica AUTH LOGIN PLAIN. La salida después del la información del certificado puede ser similar a la siguiente:
220 dominio.com ESMTP Sendmail ; Sat, 19 Jun 2010 18:18:02 -0500
ehlo dominio.com
250-dominio.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
QUIT
Realice el ejemplo de conexión para SMTP descrito en el documento titulado Introducción a los protocolos de correo electrónico para verificar el funcionamiento del envío de correo a través de SSL/TLS.

Modificaciones necesarias en el muro cortafuegos.

Como medida de seguridad siempre abra los puertos del cortafuegos sólo hasta después de finalizar la configuración del servidor de correo electrónico y que sólo hasta que haya comprobado las configuraciones.
El funcionamiento normal de un servicio de correo electrónico estándar requiere abrir los puertos 25 (smtp), 465 (smtps) y 587 (submission), todos a través de TCP.

Servicio iptables.

Ejecute lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
Ejecute lo siguiente para guardar los cambios:
service iptables save
O bien edite el archivo /etc/sysconfig/iptables:
vi /etc/sysconfig/iptables
Añada lo siguiente:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
Reinicie el servicio:
service iptables restart

Shorewall.

Edite el archivo /etc/shorewall/rules:
vi /etc/shorewall/rules
Las reglas corresponderían a algo similar a lo siguiente:
#ACTION SOURCE DEST PROTO  DEST  SOURCE
#    PORT  PORT(S)1
ACCEPT all fw tcp 25,465,587
Reinicie el servicio para aplicar los cambios:
service shorewall restart

Equipamiento lógico para servicios de IMAP y POP3.

Dovecot es una ligera, rápida y transparente solución de fácil administración para los servicios de IMAP y POP3. Sólo es apropiado para servidores que serán accedido preferentemente a través de POP3, menos de 100 usuarios o bien a través de IMAP con buzones de menos de 50 MB y baja a mediana carga de trabajo. Si así fuesen las circunstancias, por favor consulte el documento titulado «Configuración de Dovecot con soporte SSL/TLS.».
Cyrus IMAP es una compleja pero muy robusta y escalable solución que permite acceder hacia enormes cantidades de correo electrónico a través de IMAP o POP3 con mediana a elevada carga de trabajo. Si así fuesen las circunstancias, por favor consulte el documento titulado «Configuración de Cyrus IMAP con soporte SSL/TLS».

Lecturas posteriores.

Se recomienda consultar los documentos titulados «Configuración de Cyrus IMAP con soporte SSL/TLS», «Configuración de Dovecot con soporte SSL/TLS», «Configuración avanzada de Sendmail», «Cómo instalar y configurar Spamassassin» y «Configuración simple para Antivirus y Antispam».

octubre 02, 2019

Cómo mover Windows desde HDD a SSD manteniendo todos los datos


Cómo mover Windows desde HDD a SSD manteniendo todos los datos

Publicado el

en https://www.muycomputer.com/2018/05/24/mover-windows-desde-hdd-a-ssd/

Alternativas a Windows 10

El reemplazo de un disco duro por una SDD (unidades de estado sólido) ofrece grandes ventajas en cualquier equipo informático. Mayor velocidad en transferencia de datos, mejores tiempos de arranque del sistema operativo, en el acceso a las aplicaciones o en los reinicios desde modos de suspensión o hibernación.

La ausencia de partes móviles de SSD les permite mejorar el ruido emitido, la emisión calorífica y el consumo, mientras que formatos avanzados como M.2 con tamaños similares a una tarjeta de memoria, permiten crear equipos cada vez más delgados y ligeros, un aspecto esencial en informática móvil.

Reemplazar físicamente un disco duro por una SSD es sencillo como vimos en esta guía práctica. A partir de ahí tenemos que instalar el sistema operativo. Uno de los métodos es reemplazar la unidad arrancando desde la SSD y realizar una instalación limpia sobre ella (guardando previamente los archivos personales en una unidad externa) o utilizar discos de recuperación del fabricante.

Pero qué ocurre si queremos conservar el sistema operativo existente, aplicaciones, configuraciones y datos personales de usuario, trasladando una copia entera de todos los datos del disco duro al SSD. La mayoría de fabricantes incluye herramientas de clonación con la compra del SSD. La idea básica es crear una imagen de la partición del sistema operativo del disco duro y trasladarla a la SSD.

En un PC de sobremesa, simplemente se instala el SSD junto al disco duro y se realiza la clonación.

Si tenemos un ordenador portátil con una sola bahía el tema cambia y necesitamos kits de conversión y/o cableado que pase los datos desde un USB a la interfaz de la SSD, generalmente SATA, antes de realizar el reemplazo de las unidades.

Si no tenemos este tipo de adaptadores ni software de clonación, podemos utilizar otro método que sirve para mover cualquier sistema Windows instalado en un disco duro y copiarlo después en un USB, manteniendo las particiones, sistema, aplicaciones y todos los datos.

Eliminar archivos innecesarios

La ventaja de los discos duros sobre SSD es su menor precio por GB y por ello los discos duros suelen tener una capacidad superior a SSD. La clonación es una copia 1:1 por lo que la capacidad de la SSD debe tener un tamaño mínimo a la cantidad de datos a trasladar. Un ejemplo. Si tenemos una partición con 300 Gbytes datos ocupados en el disco duro y la SSD es de 250 GB, tendremos que reducir 50 GB para poder trasladar los datos.

En estos casos o adquirimos unidades de estado sólido de mayor capacidad (más caras) o debemos eliminar previamente archivos innecesarios, liberando espacio con el limpiador de disco de Windows o desinstalando algunas aplicaciones o juegos.

Descargar e instalar Macrium Reflect

Todo el proceso de migración podemos realizarlo con el software Macrium Reflect, disponible en versión gratuita y una trial para prueba durante 30 días. Descargamos e instalamos la aplicación en nuestro equipo.

HDD_SSD_2

Crear la unidad de arranque

El instalador de Macrium se encargará de descargar los archivos necesarios Windows PE, para crear la unidad de arranque que podremos grabar en una unidad óptica CD/DVD, en un pendrive USB o en una unidad de almacenamiento externo que también utilizaremos en el paso siguiente para crear la imagen de respaldo.

HDD_SSD_3

Crear la copia de respaldo

Desde el mismo Macrium Reflect podemos crear la copia de seguridad de nuestro equipo. Activa la creación de una “copia de seguridad -imagen de disco”, marca todas las particiones y selecciona la carpeta de la unidad externa donde se creará.

HDD_SSD_5

Reemplaza el disco duro por la SSD

Una vez creado el disco de arranque y la copia de respaldo es la hora de reemplazar el disco duro por la SSD. Como la inmensa mayoría de estas unidades SATA tiene un formato estándar de 2,5 pulgadas necesitaremos un adaptador a 3,5 pulgadas para acoplarla en nuestra torre de PC. Si se trata de un ordenador portátil es cuestión de sustituir una unidad por otra.

HDD_SSD_7

Restaurar la copia de respaldo

Una vez instalada la SSD, reinicia el equipo desde la unidad de arranque creada en CD/DVD, pendrive o disco externo USB. Selecciona la imagen de copia de seguridad creada.

HDD_SSD_8

Selecciona copiar todos los datos en la SSD de destino arrastrando y soltando cada partición en la unidad de estado sólido. Macrium Reflect realiza todo el proceso de forma automática e incluso cambia el tamaño de las particiones para que quepan en la SSD, aunque conviene señalar la precaución precia, la SSD tiene que tener un tamaño superior a la cantidad de datos a trasladar.

Alternativas

Personalmente, en un reemplazo de la unidad de almacenamiento y tras salvaguardar los archivos personales, recomendaría la realización de una instalación limpia desde cero utilizando un disco de arranque o los discos de recuperación del fabricante, pero si necesitas realizar una clonación del disco duro para mover una instalación completa de Windows y sus datos, este método utilizando aplicaciones como Macrium Reflect funciona realmente bien.

La mayoría de fabricantes incluye herramientas de clonación con la compra de una SSD. La idea básica es la misma que hemos realizado aquí: crear una imagen de la partición del sistema operativo del disco duro y trasladarla a la SSD.

IPTABLES HOWTO: Ejemplos de iptables para Sysadmins

VERSION ANALIZADA: iptables 1.4.7-1.4.12 (iptables -V) Si no sabes que es Iptables o quieres una introducción sobre que es y como utiliza...