jump to navigation

Conexion mediante SSH usando claves RSA 30 agosto, 2009

Posted by Fredy Ruiz Ondre in SSH.
add a comment

Vamos a generar claves publicas y privadas con SSH para poder acceder a un servidor sin necesidad de poner la contraseña.

SSH: Secure SHell, intérprete de órdenes seguro
RSA: Algoritmo de encriptacion asimetrico cifrador de bloques que utiliza una clave pública, y otra privada.

Datos:
Pc1: 192.168.1.70
Pc2: 192.168.1.72

En la Pc1 generaremos las claves publicas y privadas

Luego de ejecutar ‘ssh-keygen -t rsa’ simplemente le damos enter a todo ya que la idea es ingresar a la otra maquina sin ninguna contraseña ni frase

db:~ # ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
39:02:89:ac:f4:1f:d0:aa:05:e3:41:35:6a:e4:02:bf root@db

Luego accedemos a /root/.ssh y vemos que se han generado dos archivos: id_rsa (clave privada) , id_rsa.pub (clave pública

db:~ # cd .ssh/
db:~/.ssh # ll
total 8
-rw——- 1 root root 1675 Aug 5 22:46 id_rsa
-rw-r–r– 1 root root 389 Aug 5 22:46 id_rsa.pub

Es necesario copiar el contenido de id:_rsa.pub en el archivo authorized_keys, el cual debe tener permisos de escritura y lectura solo por parte del usuario propietario.

db:~/.ssh # cat id_rsa.pub >> authorized_keys
db:~/.ssh # chmod 600 authorized_keys

Ahora copiamos la clave publica al servidor que queremos acceder sin password

db:~/.ssh # scp authorized_keys 192.168.1.72:/root/.ssh/

Una ves copiado la clave, intentamos acceder via ssh

db:~/.ssh # ssh 192.168.1.72

Si todo salio bien deberiamos poder acceder directamente sin que nos pida contraseña

Papelera de reciclaje con Samba 30 agosto, 2009

Posted by Fredy Ruiz Ondre in Servidor de Archivos.
add a comment

Muchos tenemos un servidor de archivos con nuestro querido Samba, a continuacion vamos a configurar una papelera de reciclaje, esto quiere decir que cuando algun usuario elimine un archivo esto ira a la papelera.

Datos:

    * CentOS 5.3
    * samba 3.0

Accedemos a la ruta /etc/samba donde editaremos el archivo smb.conf veremos un caso especifico de una carpeta compartida del usuario jcarmen, independientemente de los permisos que tenga le añadimos

recycle:repository = /var/papelera/%U
recycle:keeptree = yes
recycle:versions = Yes
recycle:directory_mode = 0770
recycle:touch = yes

# vim smb.conf

[jcarmen]
path= /home/jcarmen
admin users = ahuaman, jcarmen
read only =no
guest ok = no
recycle:repository = /var/papelera/%U
recycle:keeptree = yes
recycle:versions = Yes
recycle:directory_mode = 0770
recycle:touch = yes

Ahora vamos a editar el archivo recycle.conf
#vim recycle.conf
name = .recycle
mode = KEEP_DIRECTORIES|VERSIONS|TOUCH
maxsize = 0

Listo ahora guardamos los cambios y recargamos el servicio smb
# /etc/init.d/smb reload

Con esto cada ves que alguien elimine algun archivo en este caso el usuario jcarmen dichos archivos iran a /var/papelera/jcarmen

Openfire 30 agosto, 2009

Posted by Fredy Ruiz Ondre in Servicio de Mensajeria.
add a comment

Vamos a instalar un servicio de mensajeria llamado Openfire. El SO utilizado es SLES 10 sp2.

Instalamos los componentes necesarios MySQL y Apache2

db:~ # yast -i mysql apache2

Descargamos e instalamos el paquete

b:~ # cd /opt/
db:/opt # wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.6.4-1.i386.rpm
db:/opt # rpm -ivh openfire-3.6.4-1.i386.rpm
db:/opt # cd openfire/resources/database/
db:/opt # rcmysql start
db:/opt/openfire/resources/database # mysqladmin create openfire -u root -p
Enter password:
db:/opt/openfire/resources/database # mysql -u root -p openfire < openfire_mysql.sql
Enter password:
db:/opt/openfire/resources/database # /etc/init.d/openfire start

Listo, luego de iniciar el servicio accedemos via web

Dir IP supuesta del server: 192.168.1.70

FQDN del server supuesto: db.dominio.com

http://192.168.1.70:9090

  • Escogemos el idioma –> en mi caso esocogi el español
  • Dominio: db.dominio.com, los puertos los dejamos tal cual
  • Fuentes de datos: Escogemos conexion estandar
  • Fuentes de datos-conexion estandar: Escogemos MySQL, URL de la base de datos –> jdbc:mysql://localhost:3306/openfire, ingresamos los datos del root de MySQL
  • Seteos de Perfil: Escogemos la opcion por defecto.
  • Cuenta del administrador: Ingresamos los datos del administrador

Finalmente reiniciamos el servicio openfire

db:/opt/openfire/resources/database #/etc/init.d/openfire restart

Ahora nos logeamos via web como admin, y empezamos a crear los usuarios.

Como programa cliente recomiendo usar spark, lo pueden descargar de la siguiente url.

http://www.igniterealtime.org/downloads/index.jsp

VPN red a red 29 agosto, 2009

Posted by Fredy Ruiz Ondre in VPN.
2 comments

Hay muchas maneras de configurar una VPN, en esta ocasion vamos a configurar del tipo net-to-net, esto quiere decir que vamos a unir dos redes diferentes, utilizaremos OpenSSL para el cifrado, la comunicacion de los servidores sera con llaves pre-compartidas.

Supuesto escenario:

lan_vpn

Ambos servidores tienen SO SLES 10 sp2, le instaleremos el openvpn, en cada maquina descargamos las fuentes del openvpn las convertimos a rpm y luego la instalamos.

#wget http://www.openvpn.net/release/openvpn-2.0.9.tar.gz

#rpmbuild -tb openvpn-2.0.9.tar.gz

#rpm -ivh /usr/src/packages/RPMS/i586/openvpn-2.0.9-1.i586.rpm

Luego de instalar el paquete, en el server con ip inetrna 192.168.10.1, lo configuramos como servidor VPN.

#cd /etc/openvpn

#vim red1-red2.conf

dev tun
port 5001
ifconfig 172.16.0.5 172.16.0.6
up ./red1-red2.up
secret red1-red2.key
user nobody
group nobody
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 9
log-append /var/log/openvpn/red1-red2.log

Ahora crearemos el archivo red1-red2.up

#vim red1-red2.up

route add -net 192.168.20.0 netmask 255.255.255.0 gw 172.16.0.6

Le damos permisos de ejecucion

#chmod +x red1-red2.up

Genramos la llave

#openvpn –genkey –secret red1-red2.key

Este misma llave la ponemos en el otro server, en la ubicacion /etc/openvpn/

Ahora en el otro server con ip interna 192.168.20.1, lo configuraremos como cliente VPN.

#cd /etc/openvpn/

#vim red2-red1.conf

dev tun
remote 190.24.136.24
port 5001
ifconfig 172.16.0.6 172.16.0.5
up ./red2-red1.up
secret red1-red2.key
user nobody
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 9
log-append /var/log/openvpn/red2-red1.log

Ahora creamos el archivo red2-red1.up

#vim red2-red1.up

route add -net 192.168.10.0 netmask 255.255.255.0 gw 172.16.0.5

Le damos permiso de ejecucion

#chmod +x red2-red1.up

Eso es todo en cuanto a la configuracion del OpenVPN, ahora toca habilitar los puertos en el firewall de cada server, en este caso ya que estoy usando SLES, habilito los puertos en el SuSEfirewall2. En la interfaz interna agrego el dispositivo tun creado por el OpenVPN.

Iniciamos los servicios de OpenVPN y ya debe haber comunicacion entra las maquinas de ambas redes.

VPN Server con protocolo pptp 29 agosto, 2009

Posted by Fredy Ruiz Ondre in VPN.
add a comment

Normalmente cuando instalo servidores VPN usao OpenVPN, pero en algunos casos los usuarios no quieren que se les instale algun programa adicional a su SO, para ello configuro un servidor VPN con el protocolo pptp ya que Windows viene con ese soporte incluido.

Datos:

SO: OpenSUSE 11.0

Red local: 192.168.0.0/24

Instalacion del paquete con el comando yast2.

linux-11wx:~ #yast2 -i pptpd

Configuracion del servicio PPTPD

Ahora configuraremos el archivo pptpd.conf, donde definiremos los parametros tals como el rango de direcciones IP que se asignaran a los clientes

linux-11wx:~ #vim /etc/pptpd.conf

speed 115200
option /etc/ppp/options.ppp0
debug
localip 192.168.0.140-155 #Rango de ip’s locales para los clientes remotos
remoteip 192.168.0.160-175 #Rango de ip’s para los clientes remotos
pidfile /var/run/pptpd.pid

Ahora editamos las opciones del servidor, usar emos encriptación mppe, rechazamos cualquier forma de autentificación excepto mschap-v2 y añadimos require-mppe

linux-11wx:~ #vim /etc/ppp/options.ppp0

lock
auth
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nobsdcomp
novj
novjccomp
nologfd

Editamos el archivo de autentificación de usuarios en el servidor /etc/ppp/chap-secrets y añadimos como tercer campo una contraseña segura.

linux-11wx:~ #vim /etc/ppp/chap-secrets

#client hostname 192.168.1.1

usuario pptpd contraseña *

Aqui, solo le agregamos la cuenta de usuario y la contraseña, es decir si quiero crear una cuenta de usuario digamos ‘cchavez’ y queremos ponerle una contraseña digamos ‘CcH4ve$’, quedaria de la siguiente manera:

#client hostname 192.168.1.1

usuario pptpd contraseña *
cchavez pptpd CcH4ve$ *

Habilitando el acceso al servicio PPTPD en el firewall.

Para ello accedemos al archivo SuSEfirewall2 y agregamos algunas reglas dentro de las opciones ya existentes, quedando de la siguiente forma

linux-11wx:~ # vim /etc/sysconfig/SuSEfirewall2

FW_SERVICES_EXT_TCP=”pptp”
FW_SERVICES_EXT_UDP=”pptp”
FW_SERVICES_EXT_IP=”GRE”

Reiniciamos los servicios.

linux-11wx:~ # rcpptpd restart
linux-11wx:~ # rcSuSEfirewall2 restart

Ahora creamos la conexion desde una maquina con Windows y listo

Nota: Por cada IP Publica solo puede haber una conexion; es decir, dos maquinas clientes que esten en una misma sede remota saldran a Internet  con la misma ip publica, estas maquinas no podran conectarse al servidor VPN ya que provienen con la misma ip publica.

Squid con autenticacion en Active Directory 29 agosto, 2009

Posted by Fredy Ruiz Ondre in Servidor Proxy.
9 comments

Configuraremos un servidor Proxy con Squid sobre OpenSUSE 11.0, las politicas de acceso hacia internet sera por grupos de usuarios cada grupo con diferentes privilegios, los usuarios se autenticaran contra un Windows Server 2003 con Active Directory.

Datos usados:

Dominio: angeles.com
Controlador de dominio: dc.angeles.com

el controlador de dominio (dc.angeles.com) tiene la ip 192.168.1.2
el proxy tiene la ip 192.168.1.9

Instalacion de paquetes necesarios:

yast2 -i samba samba-winbind squid

Con esto tenemos las herramientas necesarias, ahora empezamos a configurar

Archivo krb5.conf ubicado en /etc/krb5.conf

[libdefaults]
default_realm = ANGELES.COM
clockskew = 300
[realms]
ANGELES.COM = {
kdc = 192.168.1.2
default_domain = angeles.com
admin_server = 192.168.1.2
}
angeles.com = {
kdc = 192.168.1.2
default_domain = angeles.com
admin_server = 192.168.1.2
}
angeles = {
kdc = 192.168.1.2
default_domain = angeles
admin_server = 192.168.1.2
}
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.angeles = angeles
.angeles.com = ANGELES.COM
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}

Archivo nsswitch.conf ubicado en /etc/nsswitch.conf

passwd: compat winbind
group: compat winbind

hosts: files dns
networks: files dns

services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files nis
publickey: files

bootparams: files
automount: files nis
aliases: files

Archivo ntp.conf ubicado en /etc/ntp.conf

driftfile /var/lib/ntp/drift/ntp.drift
logfile /var/log/ntp
server dc.angeles.com

#Nota: se entendera que en el dc.angeles.con esta corriendo el servicio ntp

Archivo smb.conf ubicado en /etc/samba/smb.conf

[global]
workgroup = angeles
security = ads
password server = *
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users =yes
winbind enum groups = yes
winbind use default domain = yes
realm = ANGELES.COM
netbios name = proxy
server string = proxy

#Nota: proxy es el hostname del servidor Proxy

iniciamos los servicios smb y winbind

proxy:~#rcntp start
proxy:~#rcsmb start
proxy:~#rcwinbind start

Ahora si todo ha salido bien, es decir todos los servicios smb y winbind estan corriedo, uniremos la maquina al controlador de dominio.  Iniciar los servicios en ese orden.

proxy:~#net ads join -S dc.angeles.com -U Administrador
password:

Ingresamos la constraseña y listo, ahora vamos a comprobar, para ello ejecutamos
proxy:~#wbinfo -t

Para listar a los usuarios y grupos del dominio
proxy:~#wbinfo -u
proxy:~#wbinfo -g

Si nos ha listado los usuarios y grupos, quiere decir que todo esta correcto

Ahora editamos el archivo squid.conf ubicado en /etc/squid/squid.conf

#Configuraremos unas reglas simples, crearemos 3 grupos, cada grupo con privilegios diferentes, el primero tendra acceso total el segundo tendra algunas restricciones como el msn y el tercer grupo solo podra acceder a ciertas paginas, para el ejemplo le daremos acceso solo a http://www.sunat.gob.pe y http://www.mtc.gob.pe

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_dir ufs /var/cache/squid 500 16 256
cache_access_log /var/log/squid/access.log
cache_mem 64 MB
cache_swap_low 70
cache_swap_high 85
# parametros que nos permitiran autentcar contra el Active Directory
auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param basic program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
auth_param basic children 15
auth_param basic realm angeles.com
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#—–
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl rednueva src 172.16.0.0/16
acl SSL_ports port 81 443 563 8080 8040
acl Safe_ports port 80 81 443 8080 # http
acl Safe_ports port 20 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl msn1 url_regex -i gateway.dll
acl msn2 dstdomain messenger.msn.com gateway.messenger.hotmail.com
acl msn3 req_mime_type ^application/x-msn-messenger$
acl grupo1 proxy_auth “/etc/squid/reglas/grupo1.txt”
acl grupo2 proxy_auth “/etc/squid/reglas/grupo2.txt”
acl grupo3 proxy_auth “/etc/squid/reglas/grupo3.txt”
acl domgrupo3 dstdomain .sunat.gob.pe .mtc.gob.pe
no_cache deny QUERY

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow grupo1
http_access deny msn1 !grupo1
http_access deny msn2 !grupo1
http_access deny msn3 !grupo1
http_access allow grupo2
http_access allow grupo3 domgrupo3
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname proxy.angeles.com
coredump_dir /var/cache/squid

Inciamos el servicio y listo

proxy:~#rcsquid start

Nota: en el archivo winbindd_privileged el usuario propietario debera ser squid, para ello hacemos lo siguiente, ojo no hacerlo de manera recursiva

proxy:~#chown squid winbindd_privileged

Ahora solo nos queda probar desde una maquina guindos que este en el dominio, el usuario podra acceder a internet de acuerdo a los privilegios del grupo en que se encuentra. cuando trate de acceder a internet ya no le pedira que se autentique, el proxy usara los datos de la sesion.

Nota1: Tener cuidado si se copia y pega la parte de “–helper-protocol=squid-2.5-ntlmssp” en el putty directo, sale con un punto adelante  “.helper-protocol=squid-2.5-ntlmssp” en lugar de dos guiones – –

Nota2: tener cuidado con los DNS’s

se puede probar haciendole un ping a dc.angeles.com
proxy:~#ping dc.angeles.com
ping dc.angeles.com (192.168.1.2) …

Deberia resolver a la ip del controlador de dominio

Control de Acceso en Postfix 29 agosto, 2009

Posted by Fredy Ruiz Ondre in Servidor de Correo.
add a comment

A continuacion configuraremos Postfix para hacer restricciones de envio y recepcion de cuentas de correo de nuestro dominio, es decir queremos que un usuario, por ejemplo que la cuenta user1@dominio.com solo pueda enviar a cuentas locales, es decir solo a cuentas del dominio ‘dominio.com’, del mismo modo haremos que solo reciba correos de nuestro dominio.

Datos:
dominio: dominio.com

Archivo main.cf


smtpd_sender_restrictions =
check_recipient_access hash:/etc/postfix/usuarios_restringidos_recepcion
permit_mynetworks,

smtpd_restriction_classes = envio_local, recepcion_local
envio_local =
check_recipient_access hash:/etc/postfix/envios_dominios_locales, reject
recepcion_local =
check_sender_access hash:/etc/postfix/recepcion_dominios_locales, reject

smtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/usuarios_restringidos_envio
permit_mynetworks,
reject_invalid_hostname,

Luego de configurar los parametros dentro de main.cf, creamos los archivos:

* recepcion_dominios_locales
* envios_dominios_locales
* usuarios_restringidos_envio
* usuarios_restringidos_recepcion

Dentro de /etc/postfix/

recepcion_dominios_locales
dominio.com OK

envios_dominios_locales
dominio.com OK

usuarios_restringidos_envio
user1@dominio.com envio_local

usuarios_restringidos_recepcion
user1@dominio.com recepcion_local

Luego de editar los archivos ejecutaremos

#postmap hash:/etc/postfix/recepcion_dominios_locales
#postmap hash:/etc/postfix/envios_dominios_locales
#postmap hash:/etc/postfix/usuarios_restringidos_envio
#postmap hash:/etc/postfix/usuarios_restringidos_recepcion

Finalmente recargamos el servicio postfix

#postfix reload

Con esto el usario user1@dominio.com solo podra enviar y recibir correos del dominio ‘dominio.com’