Páginas

martes, 6 de agosto de 2013

dhcp-server dnsmasq squid FreeBSD

Créditos:  freebsd faq
 how to dnsmasq

Las máquinas cliente:
1 - Portatil de trabajo Ip fija = 192.168.3.60
2 - Pc sobremesa Ip obtenida mediante DHCP
ip servidor freebsd 192.168.3.1
En la parte final se comprobarán los puertos abiertos
y los clientes conectados con el comando sockstat
El servidor freebsd dispone de dos tarjetas de red.
Lan - red interna = em0
Wan - externa = em1
Ip Lan - 192.168.3.1 (router default Lan)
Ip Wan - 192.168.1.250
Firewall servidor - ipfw
sshd habilitado en el servidor
Entrar por sshd como user normal desde Lan
$ ssh -l carlos -p 2222 192.168.3.1
$ hostname
$ freebsdserver.linux.bcn
$ su
Password:
#

Intalar y configurar dhcp-server

# pkg_add -r isc-dhcp41-server
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/isc-dhcp41-server.tbz... Done.
===> Creating users and/or groups.
Creating group 'dhcpd' with gid '136'.
Creating user 'dhcpd' with uid '136'.

Así quedará el archivo dhcpd.conf:

# sed -e '/^[ ]*#/d' -e '/^$/d' /usr/local/etc/dhcpd.conf
option domain-name "linux.bcn";
option domain-name-servers 192.168.3.1;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.3.0 netmask 255.255.255.0 { 
 range 192.168.3.40 192.168.3.50;
 option routers 192.168.3.1;

}
Para iniciar dhcp-server con el sistema
agregar al archivo rc.conf:
dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="-q" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="em0"    # ethernet interface(s)
dhcpd_withumask="022"   # file creation mask 
 
Iniciar el servidor dhcp:
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.

Instalar dnsmasq

$cd /usr/ports
$ make search name=dnsmasq
$ cd /usr/ports/dns/dnsmasq/
# make install clean

Archivo de configuración dnsmasq.conf

Filtrando dnsmasq.conf con grep para eliminar líneas que empiezan con un espacio, líneas que comienzan con almohadilla y líneas vacías.
grep -v '#' /etc/dnsmasq.conf
port=53
domain-needed
bogus-priv
strict-order
interface=em0
listen-address=127.0.0.1
expand-hosts
domain=linux.bcn

Iniciar dnsmasq con el sistema

 agregar esta línea al archivo /etc/rc.conf
dnsmasq_enable="YES"


Archivo resolv.conf del servidor

#permite a las maquinas locales obtener información DNS.
nameserver 127.0.0.1
 
#OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
 
# Otra opcion es utilizar los DNS del proveedor ISP.
 
# nameserver 192.168.1.1

Impedir cambios en el fichero resolv.conf

Añadir esta línea al archivo de configuración de resolv.conf (resolvconf.conf)
# ee /etc/resolvconf.conf
resolv_conf="/dev/null"

Archivo resolv.conf de las máquinas cliente: $ cat /etc/resolv.conf
# Archivo inmutable resolv.conf
search linux.bcn
nameserver 192.168.3.1

Realizar consultas desde un cliente

Instalar squid como paquete

# pkg_add -r squid
# squid -v
Version 2.7.STABLE9

Archivo de configuración squid.conf

Copiar archivo squid.conf
# cp /usr/local/etc/squid/squid.conf.default /usr/local/etc/squid/squid.conf Filtrando el archivo /usr/local/etc/squid/squid.conf para ver las opciones del archivo de configuración de squid.:
# sed -e '/^[ ]*#/d' -e '/^$/d' /usr/local/etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80  # http
acl Safe_ports port 21  # ftp
acl Safe_ports port 443  # https
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
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 192.168.3.1:3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/squid/logs/access.log squid
refresh_pattern ^ftp:  1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern .  0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/squid/cache
cache_log /var/squid/logs/cache.log
logfile_rotate 10
minimum_object_size 0 KB
maximum_object_size 1024 MB
request_body_max_size 0
cache_dir ufs /var/squid/cache 200 16 256
cache_mem 32 MB
visible_hostname freebsdserver.linux.bcn
acl ips src 192.168.3.0/255.255.255.0
acl hora time MTWHF 8:00-22:00
acl todas src 0.0.0.0/0.0.0.0
http_access allow ips
http_access deny !hora
http_access deny todas


Crear los directorios swap

# squid -z


Desactivar test DNS inicial

# squid -D


Iniciar con el sistema.

Agregar al archivo /etc/rc.conf
squid_enable="YES"

El proxy ha sido configurado como transparent de manera que no hace falta configurar el navegador de los clientes:
Comprobar puertos abiertos:
# sockstat -4


FreeBSD es genial!

jueves, 25 de julio de 2013

Dynamic DNS Comtrend VR-3025u


Mucha gente está teniendo problemas para configurar Dynamic DNS a través del nuevo router VR-3025u de Jazztel 30MB, para habilitar el acceso remoto al servidor u otra máquina dentro de la red interna.

El origen de la confusión es que solo aparecen en la configuración del router (DNS -Dynamic DNS - Add Dynamic DNS) las opciones DynDNS.org y TZO.

Configurar Dynamic DNS utilizando una cuenta de synology.

(Tampoco presenta ninguna dificultad la configuración de dnsdynamic.org)

Dispongo de una cuenta DDNS en synology que utilizo para acceder remotamente al servidor synology y otra en noip para acceder a un segundo servidor freebsd interno a través del firewall pfsense. Como el proceso es similar solo configuraremos el de acceso al servidor synology utilizando https puerto 7001, que veremos más adelante, o un número de puerto secreto si el servidor no tiene servicios públicos accesibles desde Internet, como un servidor web.

Abrir puertos en el router:

DDNS synology:
Acceder desde una red externa al servidor utilizando el puerto 7001:

FreeBSD es genial!.

sábado, 20 de julio de 2013

Backup sistema FreeBSD bsdtar


El objetivo es realizar una copia de respaldo del sistema completo en un disco duro externo. Los datos, que residen en otra partición, (/dev/ads0s2) quedan respaldados con rsync directamente en el servidor local.

El sistema es un portátil  (Dell Inspiron) con freeBSD RELEASE-9.1 y gnome2 instalado. FreeBSD sistema operativo con excelente documentación utilizado principalmente en servidores de pequeñas, medianas y grandes empresas pero que funciona perfectamente en pc's de sobremesa y portátiles cuyo hardware sea soportado por FreeBSD.


Iniciar el sistema en modo single user.

Pulsar la barra espaciadora en la cuenta atrás y luego pulsar 6 (single user)

Presionar Intro para la shell por defecto y teclear la contraseña de root si fuera necesario.

Copia de seguridad del sistema

En el símbolo del sistema teclear:

# fsck -p
# mount -u /
# mount -a
# swapon -a
# adjkerntz -i

Nota: El disco externo usb (ada0) al que se copiará el archivo tar.gz (archivo tar comprimido) ha sido particionado utilizando fdisk desde la consola del sistema. La partición a respaldar es /dev/ada0s4a.

Crear sistema de archivos
# newfs -U /dev/da0s1

Montar primera particion (a) del primer disco
# mount -t ufs -o ro /dev/ada0s4a /media

Montar primera (a) del disco duro externo (usb).
# mount -t ufs -o rw /dev/da0s1 /mnt

Nuevo directorio donde se guardará el archivo tar.gz
# mkdir -p /mnt/%backup%/ada0s4a-20-7-2013/

Cambiar a directorio raiz (partición a respaldar)
# cd /

Hacer respaldo, excluir home (es solo un enlace a /usr/home)
# bsdtar cvfz /mnt/%backup%/ada0s4a-20-7-2013/freebsd-system.tar.gz --exclude=home *

# cd /
# umount /mnt
# umount /media
# reboot

Restaurar copia de seguridad:
Iniciar el sistema en modo single user.

Pulsar la barra espaciadora en la cuenta atrás y luego pulsar 6 (single user).

Presionar Intro para la shell por defecto.

En el símbolo del sistema teclear:

# fsck -p
# mount -u /
# mount -a
# swapon -a
# adjkerntz -i
Formatear el sistema de ficheros a restaurar
# newfs -U /dev/ada0s4a

Montar particiones
# mount -t ufs -o rw /dev/ada0s4a /media
# mount -t ufs -o ro /dev/da0s1 /mnt
# cd /mnt/media

Emperar la restauración
# bsdtar xvzf /mnt/%backup%/ada0s4a-20-7-2013/freebsd-system.tar.gz
# cd /

Desmontar partición
# umount /mnt /media

Reiniciar
# reboot

Fuente: http://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/backup-basics.html

Los programadores de freebsd recuerdan:
"No hacer nada" no es un programa, pero es la estrategia de respaldo más extendida. No tiene coste. No hay un calendario de respaldos a seguir. Simplemente hay que decir que no. Si algo le sucediera a sus datos sonría y acostúmbrese a su nueva situación."

FreeBSD es genial!.

martes, 16 de abril de 2013

Pfsense servidor web

Configurar pfsense y el firewall del router ADSL para acceder de manera remota a un servidor web que está en una máquina dentro de la red LAN. la configuración de la red es la siguiente (diagrama Dia).

  
El firewall pfsense con dos tarjetas de red re0 y re1. La ip de la tarjeta re0 la obtiene del router adsl del ISP.

Editando el archivo de configuración de apache en la máquina desde la que se realizará el ejemplo, (por supuesto - freebsd) y así cambiar el número de puerto por defecto a 54321 para, un sitio al que solo tendrá acceso de forma remota el que conozca el número de puerto. El puerto por defecto (80) está habilitado para un sevidor web situado en la ip 192.168.1.254 (Synology).

# ee /usr/local/etc/apache22/http.conf  

Abrir puerto 54321en el router adsl de jazztel


Firewall NAT Port Forward

Rules WAN

Rules LAN


Conectar de manera local

Acceder de manera remota

Comprobar que el puerto está en escucha

 Seguridad en freebsd, impresionante


Pfsense es genial!.

domingo, 7 de abril de 2013

FreeBSD Gnome2 Ports

Instalar FreeBSD + Gnome2 en PC cliente.

Núcleo : FreeBSD
Tipo de núcleo : Monolítico
Licencia : BSD
Version : 9.1
Sistema de archivos : UFS (Unix File System)
Plataforma : amd64

FreeBSD es un sistema operativo completo, que consiste de una biblioteca C, herramientas del espacio del usuario (userland tools) y mucho más. Este enfoque de desarrollo hace muy consistente el sistema global.

FreeBSD es usado por compañías, proveedores de Internet, profesionales de la informática, estudiantes y usuarios particulares de todo el mundo en su trabajo, educación y ocio.

FreeBSD ofrece muy altas prestaciones en networking, rendimiento, seguridad y compatibilidad, las cuales no están aún presentes en otros sistemas operativos, incluyendo los comerciales de mayor renombre. Está inspirado en la variante 4.4 BSD-Lite de UNIX. Es compatible con binarios de varios sistemas operativos de tipo Unix, incluyendo GNU/Linux.

Primero, después de la instalación del sistema base, se actualiza la coleccion de ports, estos pasos que se realizan solo una vez:

# portsnap fetch
# portsnap extract
# portsnap update

A partir de este momento la coleccion de ports se actualiza con este comando:
# portsnap fetch update
# make index

Instalar pormaster:

# cd /usr/ports/ports-mgmt/portmaster && make install clean
# cd /usr/ports/ports-mgmt/pkg && make install clean
# echo 'WITH_PKGNG=yes' >> /etc/make.conf

Comprobar el valor de las variables en el fichero portmaster.rc:

Primero copiar el fichero de ejemplo y luego activar las variables recomendadas:

# cp /usr/local/etc/portmaster.rc.sample /usr/local/etc/portmaster.rc
....
# Always delete stale distfiles without prompting (-d)
ALWAYS_SCRUB_DISTFILES=dopt
# Be verbose (-v)
PM_VERBOSE=vopt
# Install packages for build-only dependencies (--packages-build)
PM_PACKAGES_BUILD=pmp_build
# Delete build-only dependencies when finished (--delete-build-only)
PM_DEL_BUILD_ONLY=pm_dbo
#Suppress the build confirmation message (--no-confirm)
PM_NO_CONFIRM=pm_no_confirm
....

Portmaster define cuatro categorías de puertos :

Root port: no tiene ninguna dependencia y no es una dependencia de cualquier otro puerto .

Trunk port: no tiene dependencias , pero otros puertos dependen de ella .

Branch port: tiene dependencias y otros puertos dependen de ella .

Leaf port: tiene dependencias , pero no hay otros puertos dependen de ella .


Para listar estas categorías y buscar actualizaciones:

# Pormaster -L


Actualizar todos los paquetes:
# portmaster -a

Actualizar y reconstruir todos los puertos:
Si se producen errores durante el proceso de actualización, añadir -f para actualizar y reconstruir todos los puertos:

# portmaster -af


Instalar las fuentes del kernel:
$ fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/9.1-RELEASE/src.txz
# bsdtar -C / -xzvf src.txz

Instalando entorno gráfico y software adicional:
# pkg_add -r portupgrade
# pkg_add -r xorg
# pkg_add -r gnome2 gdm
# pkg_add -r gnome2-fifth-toe gnome2-hacker-tools gnome2-office gnome2-power-tools
# rehash
# pkgdb -F
# freebsd-update fetch
# freebsd-update install
$ cat /etc/rc.conf
hostname="freebsd.linux.bcn"
keymap="spanish.iso.kbd"
ifconfig_msk0="inet 192.168.3.60 netmask 255.255.255.0"
defaultrouter="192.168.3.1"
moused_enable="YES"
webcamd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

dbus_enable="YES"
hald_enable="YES"
gdm_enable="YES"
gnome_enable="YES"
sendmail_enable="NO"

nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

# chmod -x /etc/rc.d/sendmail

$ cat /boot/loader.conf
autoboot_delay="2"
loader_color="YES"

# pkg_add -r calibre
# pkg_add -r qbittorrent
# pkg_add -r k3b
# pkg_add -r gqview
# pkgdb -F
# pkg_add -r thunderbird
# pkg_add -r libreoffice
# pkgdb -F
# cd /usr/ports/audio/lame; make install clean
# pkg_add -r gtkpod
# pkg_add -r xmms vlc
# pkgdb -F

Colorear terminal, agregar al archivo shrc
$ ee /home/carles/.shrc
# colorear terminal Jason web www.geekvenue.net
alias ls='ls -G'
CLICOLOR="YES"; export CLICOLOR
LSCOLORS="ExGxFxdxCxDxDxhbadExEx"; export LSCOLORS


Una imagen divertida. Una broma de los usuarios de FreeBSD


FreeBSD es un sistema operativo utilizado sobre todo en servidores. Esta vez correrá en un portátil Dell cpu intel core2 duo 4 Gb de Ram, gráfica intel y escritorio gnome2. El proceso de instalación es omitido ya que es muy sencillo.

FreeBSD está dotado de un eficiente sistema de gestión de paquetes llamado ports.

Instalación de ports

Se asume que tiene una conexión a Internet o disponer de una copia del distfile en /usr/ports/disfiles

Un port es un conjunto mínimo de ficheros que indican a FreeBSD como compilar e instalar un programa e incluye:

Un Makefile que contiene diversas sentencias que indican como compilar y donde instalarlo.

El fichero distinfo contiene información sobre que ficheros descargar para compilar el port y el fichero checksum para comprobar la integridad del fichero.

Un directorio files que contiene los parches necesarios para compilar e instalar el port. Son pequeños ficheros que indican cambios en ficheros concretos. Su formato es texto plano, dice cosas del tipo "cambia la línea 13 por esta otra" y se generan con diff.

El fichero pkg-plist contiene una lista de los ficheros que instalará el port y que ficheros eliminar durante la desinstalación del port.

El fichero pkg-message (si existe) gestiona situaciones especiales.

El port incluye instrucciones necesarias para obtener software a partir del código fuente aunque no incluye el código. Normalmente es un fichero comprimido con gzip. El código del programa se llama "distfile".

Antes de instalar un port la colección de ports debe estar actualizada y realizada la comprabación de seguridad con portaudit, ejecutando:

# portaudit -F

Opciones de  compilación

Al compilar ciertos ports se le presentará un menú basado en ncurses en el cual podrá elegir entre más o menos opciones de compilación. No es raro que los usuarios quieran volver a usar ese menú para añadir, quitar o cambiar opciones una vez que el port ya está compilado.


Hay bastantes formas de hacerlo. Una manera es entrar al directorio que contiene el port y teclear make config o make config-recursive, que hará que se le presente de nuevo el menú con las opciones que estuvieran seleccionadas previamente. Otra opción es usar la orden make showconfig, que le mostrará todas las opciones de configuración del port. Hay otra opción más, make rmconfig, que borrará todas las opciones que estuvieran seleccionadas y le permitirá por tanto empezar desde cero.

Desinstalar ports

# pkg_delete wget

/usr/ports/UPDATING
Una vez actualizada la Colección de Ports (y antes de intentar actualizar ningún port) debe consultar /usr/ports/UPDATING. Este fichero describe todas las novedades, problemas que pueden encontrarse y pasos que deben seguir los usuarios al actualizar un port; hay cambios de formato, cambios de ubicación de ficheros de configuración o incompatibilidades con versiones anteriores.

Si UPDATING se contradice de cualquier modo con lo que lea aquí tenga muy encuenta que lo que aparezca en UPDATING tiene prioridad absoluta.

Instalar actualizaciones FreeBSD:

La aplicación de parches de seguridad en el momento oportuno y la actualización a una nueva versión de un sistema operativo, son aspectos importantes de la administración del sistema en curso. FreeBSD incluye una utilidad llamada freebsd-update que puede ser utilizado para llevar a cabo ambas tareas.

# freebsd-update fetch
# freebsd-update install

Comprobar la lista de ports instalados y reparar todas las inconsistencias que aparezcan. Esta comprobación se hace de manera regular y "siempre" antes de una actualización:

# pkgdb -F

Buscar port

# cd /usr/ports; make search name=wget


Después de instalar un port

Una vez que ha instalado una nueva aplicación normalmente deberás leer toda la documentación que incluya, editar los ficheros de configuración necesarios, asegurarse de que la aplicación se ejecute al arrancar el sistema (si es un dæmon) etc.

Obviamente los pasos exactos para configurar cada aplicación son distintos de una a otra. De cualquier forma, si acaba de instalar aplicación y se pregunta «?Y ahora qué?» estos consejos puede que le ayuden:

Use pkg_info(1) para ver qué ficheros se instalaron y dónde. Por ejemplo, si instalón el paquete Un-Package 1.0.0, lo siguiente:

# pkg_info -L un-package-1.0.0 | less

mostrará los ficheros instalados por el paquete. Los ficheros en el directorio man/ son las páginas de ayuda y los del directorio etc/ contiene los ficheros de configuración; bajo el directorio doc/ podrá encontrar información más detallada.

Si no está seguro de qué versión del paquete ha instalado teclée:

# pkg_info | grep -i un-package

y verá todos los paquetes que se llaman un-package. Reemplace un-package en la línea de órdenes que tenga que usar en su caso.

Los ports que deben arrancar con el sistema (como los servidores de Internet) normalmente instalaran un "script" de ejemplo en /usr/local/etc/rc.d. Debe revisar este scrip para comprobar que todo sea correcto, editarlo o renombrarlo si fuera necesario.

Agregar compatibilidad linux en freebsd

# kldload linux

Editar /etc/fstab y agregar la línea:

linproc /compat/linux/proc linprocfs rw 0 0


# cd /usr/ports/emulators/linux_base-f10
# make install clean


Instalar Adobe Flash Player

# cd /usr/ports/www/linux-f10-flashplugin11/
# make install clean


Firefox y Chromium requieren el uso de nspluginwrapper
Instalando ndispluginwrapper



# cd /usr/ports/www/nspluginwrapper/
# make install clean

Ejecutar como usuario no privilegiado:
$ nspluginwrapper -v -a -i


Instalar firefox y plugin para ejecutar applets java

# pkg_add -r firefox

Instalar paquete español firefox
# pkg_add -r firefox-i18n




Instalar open java

# pkg_add -r openjdk6

# pkg_add -r icedtea-web

Algunos programas (sobre todo Java) no funcionarán sin acceso al filesystem-level a sus descriptores. Ver esos archivos descriptores adicionales requiere fsdecfs.

# mount    –t fdescfs fdesc /dev/fd

Para montar automáticamente fdesc al iniciar el sistema añadimos la siguiente entrada al archivo /etc/fstab

null /dev/fd fdescfs rw

Instalar chromium con soporte java

# pkg_add -r chromium

Plugins Chromium
Localizar plugin flash
# locate libflashplayer.so
# mkdir -p /usr/local/share/chromium/plugins/
# ln -s /usr/local/lib/browser_plugins/linux-f10-flashplugin/libflashplayer.so /usr/local/share/chromium/plugins/

# ln -s /usr/local/lib/IcedTeaPlugin.so /usr/local/share/chromium/plugins/

 Plugin para Firefox y Opera

# mkdir -p /home/carles/.mozilla/plugins
# ln -s /usr/local/lib/IcedTeaPlugin.so /home/carles/.mozilla/plugins/



Activar Flash player Opera:
# pkg_add -r opera-linuxplugins
o
# cd /usr/ports/www/opera-linuxplugins && make install clean

$ mkdir /home/carles/.opera/plugins
# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /home/carles/.opera/plugins/
o
# # ln -s /usr/local/lib/browser_plugins/linux-f10-flashplugin/libflashplayer.so /home/carles/.opera/plugins/

Reiniciar Opera


Conectar con pfsense firewall vía ssh:



Cambiar el editor por defecto:

Averiguar shell por defecto

$ ps ax | grep sh
1814 ... /bin/sh

Establecer el editor por defecto en shell tcsh

$ setenv EDITOR ee

Si utiliza shell sh 

$ EDITOR=ee ; export EDITOR

o

$ ee /home/carles/.profile

EDITOR=ee; export EDITOR

guardar y cerrar.


http://www.freebsd.org/doc/es/books/handbook/ports-using.html
http://www.freebsd.org/doc/es/books/handbook/ports-nextsteps.html
http://www.freebsd.org/doc/es/books/handbook/ports-broken.html
Comandos freebsd

Unix es genial!.