2014/02/19

SFTP

Introduccion:

Configurar el servicio SFTP para transferencias y que el usuario este enjaulado.

Requerimientos:

* FreeBSD instalado
* Conexion a Internet
* Leer este tutorial

Manuales utilizados:

Chroot sftp users using ssh

El proceso:

# edit /etc/ssh/sshd_config

Agragar al final las lineas:

Match group        chroot
ChrootDirectory    %u
X11Forwarding      no
AllowTcpForwarding no
ForceCommand       internal-sftp

Reiniciar (restart o reload) sshd

# /etc/rc.d/sshd reload

Agragar el nuevo grupo llamado chroot

# pw addgroup chroot

Nota:
Para eliminar un grupo creado, usar: # pw groupdel nombregrupo

Agregar el nuevo usuario con el que se conectaran

# adduser
Username: sftpuser
Full name: SFTP User
Uid (Leave empty for default):
Login group [sftpuser]: chroot         <- Atencion a este parametro!
Login group is chroot. Invite sftpuser into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/sftpuser]: /home/sftpuser
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : sftpuser
Password   : *****
Full Name  : SFTP User
Uid        : 1170
Class      :
Groups     : chroot
Home       : /home/sftpuser
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (sftpuser) to the user database.
Add another user? (yes/no): no
Goodbye!

Ahora le ajustamos los permisos al home del usuario

# chown -R root:chroot /home/sftpuser

Crear un directorio llamado pub dentro para que puedan crear archivos

# mkdir /home/sftpuser/pub

Ajustarle los permisos al directorio pub

# chmod -R 0777 /home/sftpuser/pub

Los archivos se deben transferir al directorio pub

2014/02/06

ISC BIND (DNS)

Introduccion:

Instalar ISC BIND.

Requerimientos:

* FreeBSD instalado
* Conexion a Internet
* Leer este tutorial

El proceso:

Actualizar el arbol de ports

# portsnap update

Instalar el port de bind

# cd /usr/ports/dns/bind99
# make install clean

bind99-9.9.5
(dejo las opciones por defecto)
...
Installing bind99-9.9.5... done

Hacer que inicie con el equipo

# echo '# ISC BIND' >> /etc/rc.conf
# echo 'named_enable="YES"' >> /etc/rc.conf

Activar la tarjeta de red que va a nuestra LAN con la IP 192.168.1.1/24

# edit /etc/rc.conf

Agregamos la linea con los datos de nuestra segunda tarjeta de red

#Segunda tarjeta de red que va hacia la LAN
ifconfig_em1="inet 192.168.1.1 netmask 255.255.255.0"

Levantamos manualmente la segunda tarjeta sin reiniciar

# ifconfig em1 inet 192.168.1.1 netmask 255.255.255.0 up

Editar el archivo de configuracion de bind para crear nuestras zonas

# edit /usr/local/etc/namedb/named.conf

Ajustamos las lineas originales

...
        listen-on       { 127.0.0.1; };
...
        forwarders {
                127.0.0.1;
        };
...
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
...

por

...
        listen-on       { 127.0.0.1; 192.168.1.1; };
...
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
...
//zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
...

Note que:
1) En listen-on se agrega la IP interna para que bind responda consultas que le hagan.
2) En forwarders quitamos la IP local y agregamos las de los DNS de Google.
3) Con doble slash (//) comentamos la linea zone "example.com"...

Al final del archivo agregamos nuestras zonas "zona" y "zona inversa"

...
zone "example.com" {
        type master;
        allow-update { none; };
        allow-transfer { localhost; 192.168.1.2; };
        file "/usr/local/etc/namedb/master/example.com";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        allow-update { none; };
        allow-transfer { localhost; 192.168.1.2; };
        file "/usr/local/etc/namedb/master/1.168.192.in-addr.arpa";
};

Creamos el archivo de nuestra "zona"

# edit /usr/local/etc/namedb/master/example.com

$TTL 3600 ; 1 hour default TTL
example.com.                IN          SOA         freebsd.example.com.         admin.example.com.          (
                                            2013021701          ; Serial
                                            10800               ; Refresh (3 hours)
                                            3600                ; Retry (1 hour)
                                            604800              ; Expire (1 week)
                                            300         ; Negative Response TTL (5 minutes)
                                            )
; DNS Servers
                            IN          NS          freebsd.example.com.                 
; MX Records                                                                
                            ;IN         MX          10 mx.example.com.                  
                            ;IN         MX          20 mail.example.com.                
                            IN          A           192.168.1.1                         
; Machine Names                                                             
localhost                   IN          A           127.0.0.1                           
freebsd                      IN          A           192.168.1.1                         
; Aliases                                                                   

Creamos el archivo de nuestra "zona inversa"

# edit /usr/local/etc/namedb/master/1.168.192.in-addr.arpa

$TTL 3600 ; 1 hour default TTL
1.168.192.in-addr.arpa. IN          SOA         freebsd.example.com.         admin.example.com.          (
                                            2013021701          ; Serial
                                            10800               ; Refresh (3 hours)
                                            3600                ; Retry (1 hour)
                                            604800              ; Expire (1 week)
                                            300                 ; Negative Response TTL (5 minutes)
                                            )
; DNS Servers                                                               
                            IN          NS          freebsd.example.com.                 
; Machine IPs                                                               
1                           IN          PTR         freebsd.example.com.

Iniciamos bind

# /usr/local/etc/rc.d/named start

Hacer que nuestro FreeBSD use el bind

# edit /etc/resolv.conf

Comentamos las lineas "nameserver" y agregamos a bind, queda asi

search example.com
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
#nameserver 8.8.8.8
#nameserver 8.8.4.4
nameserver 127.0.0.1

Verificamos que bind esta funcionando

Prueba a un host local

# dig @192.168.1.1 freebsd.example.com

; <<>> DiG 9.9.5 <<>> @192.168.1.1 freebsd.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36043
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;freebsd.example.com.         IN      A

;; ANSWER SECTION:
freebsd.example.com.  3600    IN      A       192.168.16.1

;; AUTHORITY SECTION:
freebsd.example.com.  3600    IN      NS      ns1.freebsd.example.com.
freebsd.example.com.  3600    IN      NS      ns2.freebsd.example.com.

;; ADDITIONAL SECTION:


;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Feb 06 13:40:35 COT 2014
;; MSG SIZE  rcvd: 118

Prueba a un host remoto

# dig @192.168.1.1 google.com

; <<>> DiG 9.9.5 <<>> @192.168.1.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48596
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             300     IN      A       190.248.35.30
google.com.             300     IN      A       190.248.35.45
google.com.             300     IN      A       190.248.35.35
google.com.             300     IN      A       190.248.35.34
google.com.             300     IN      A       190.248.35.24
google.com.             300     IN      A       190.248.35.49
google.com.             300     IN      A       190.248.35.54
google.com.             300     IN      A       190.248.35.40
google.com.             300     IN      A       190.248.35.25
google.com.             300     IN      A       190.248.35.50
google.com.             300     IN      A       190.248.35.59
google.com.             300     IN      A       190.248.35.20
google.com.             300     IN      A       190.248.35.55
google.com.             300     IN      A       190.248.35.44
google.com.             300     IN      A       190.248.35.39
google.com.             300     IN      A       190.248.35.29

;; AUTHORITY SECTION:
google.com.             172742  IN      NS      ns4.google.com.
google.com.             172742  IN      NS      ns1.google.com.
google.com.             172742  IN      NS      ns3.google.com.
google.com.             172742  IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         172742  IN      A       216.239.32.10
ns2.google.com.         172742  IN      A       216.239.34.10
ns3.google.com.         172742  IN      A       216.239.36.10
ns4.google.com.         172742  IN      A       216.239.38.10

;; Query time: 59 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Feb 06 13:34:11 COT 2014
;; MSG SIZE  rcvd: 431

---------------------------------------------------------------------------------------------------------
Para un bind (slave) que funcione como respaldo del primer bind (master)...

Todo se hace de forma muy similar, pero hay algunos cambios

En named.conf (slave), las zonas al final del archivo quedan asi (vea que en lugar de la carpeta master, quedan en slave) y con la linea masters se especifica la IP del primer bind (master)

...
zone "example.com" {
        type slave;
        file "/usr/local/etc/namedb/slave/example.com";
        masters { 192.168.1.1; };
};

zone "1.168.192.in-addr.arpa" {
        type slave;
        file "/usr/local/etc/namedb/slave/1.168.192.in-addr.arpa";
        masters { 192.168.1.1; };
};

Los archivos "zona" y "zona inversa" no hay que crearlos ya que se importan automaticamente del primer bind (master).

Luego de iniciar bind (slave), los archivos seran transferidos desde el primer bind (master) como por arte de magia

# ls /usr/local/etc/namedb/slave
1.168.192.in-addr.arpa
example.com
---------------------------------------------------------------------------------------------------------

KDE

Introduccion:

Instalar el escritorio KDE4.

Requerimientos:

* FreeBSD instalado
* The X Window System instalado
* Conexion a Internet
* Leer este tutorial

El proceso:

Actualizar el arbol de ports

# portsnap update

Agregar los parametros recomendados en /etc/make.conf

# edit /etc/make.conf

Agregamos las siguientes lineas

# FreeBSD versions earlier than 10.X require this line
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pkgng-intro.html
#
WITH_PKGNG=yes

Instalar el meta-port kde4

# cd /usr/ports/x11/kde4
# make config-recursive

kde 4.10.5_1

[ ] KDEACCESSIBILITY  Accessibility applications
[ ] KDEADMIN          Administration utilities
[ ] KDEARTWORK        Additional screensavers and wallpapers
[ ] KDEBINDINGS       Bindings for programming languages
[ ] KDEEDU            Entertaining, educational programs
[ ] KDEGAMES          Collection of games
[ ] KDEGRAPHICS       Graphics utilities
[ ] KDEMULTIMEDIA     Multimedia applications
[ ] KDENETWORK        Network-related programs
[ ] KDEPLASMA         Extra plasmoids and plugins for Plasma
[ ] KDESDK            Software development kit
[ ] KDETOYS           Miscellaneous small applications
[ ] KDEUTILS          Set of generic utilities
[ ] KDEWEBDEV         Web development environment
───────────────── PIM ─────────────────
( ) KDEPIM            Personal information management
( ) KDEPIM44          KDE-Pim 4.4 (legacy version)

Yo desactivo todo ya que solo quiero KDE4 sin adicionales (EDU, GAMES, etc.), pero se pueden instalar si los desea dejando todo por defecto.

Los ports "KDEACCESSIBILITY", "KDEADMIN", etc., los puedo dejar por defecto ya que en el meta-port kde4 los desactive y no se instalaran (si se desea instalar EDU, GAMES, etc., tambien se dejan por defecto).

Los demas ports necesarios para kde4 tambien se dejan las opciones por defecto.

Nota:
Si tengo problemas con los cambios al meta-port kde4, puedo borrar los ajustes que hice para dejarlo como estaba por defecto e iniciar los ajustes nuevamente con el comando # rm -rf /var/db/ports/*

# make install clean

KDE requiere montar /proc para hacerlo editamos /etc/fstab

# edit /etc/fstab

Agregamos las siguientes lineas

# KDE requires the /proc mounted
proc            /proc           procfs  rw      0       0

Montamos manualmente para no tener que reiniciar

# mount -a

Crear el archivo que iniciara kde4 en el home del usuario, que en nuestro ejemplo se llama John Doe y su home es john

# echo '# KDE' > /home/john/.xinitrc
# echo 'exec /usr/local/bin/startkde' >> /home/john/.xinitrc
# echo 'setxkbmap -option "terminate:ctrl_alt_bksp"' >> /home/john/.xinitrc
# echo '# UTF-8' >> /home/john/.xinitrc
# echo 'export LC_ALL=en_US.UTF-8' >> /home/john/.xinitrc
# echo 'export LANGUAGE=en_US.UTF-8' >> /home/john/.xinitrc
# echo 'export LANG=en_US.UTF-8' >> /home/john/.xinitrc

Para iniciar kde4 desde el usuario John Doe, usamos

$ startx

The X Window System

Introduccion:

Instalar The X Window System en FreeBSD.

Requerimientos:

* FreeBSD instalado
* Conexion a Internet

* Leer este tutorial

El proceso:

Actualizar el arbol de ports

# portsnap update

Agregar los parametros recomendados en /etc/make.conf

# edit /etc/make.conf

Agregamos las siguientes lineas

# Installing KMS Ports
# https://wiki.freebsd.org/Graphics#Ports
#
WITH_NEW_XORG=yes
WITH_GALLIUM=yes  # Needed for Radeon cards, but doesn't harm with Intel devices.
#
# FreeBSD versions earlier than 10.X require this line
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pkgng-intro.html
#
WITH_PKGNG=yes

Instalar el port xorg

# cd /usr/ports/x11/xorg
# make config-recursive

 xorg-apps 7.7

(dejo todo como esta por defecto)

xorg-drivers 7.7

[X] MOUSE          Install mouse input driver
[X] KEYBOARD       Install keyboard input driver

desactivo todo y solo dejo estos tres activados

python27-2.7.6_1 (todo por defecto)
libdrm-2.4.17_1 (todo por defecto)
xterm-300 (todo por defecto)
pixman-0.30.2 (tod por defecto)
xf86-video-radeonhd-1.3.0_5 (tod por defecto)
libxml2-2.8.0_3 (todo por defecto)
m4-1.4.17,1 (todo por defecto)
perl5-5.16.3_4 (todo por defecto)
png-1.5.17 (todo por defecto)
freetype2-2.5.0.1 (todo por defecto)
dejavu-2.34 (todo por defecto)
xorg-server-1.7.7_11,1 (todo por defecto)
libcheck-0.9.11 (todo por defecto)
libxslt-1.1.28_1 (todo por defecto)
hal-0.5.14_22 (todo por defecto)
xkeyboard-config-2.9_1 (todo por defecto)
policykit-0.9_6 (todo por defecto)
docbook-xsl-1.76.1_1 (todo por defecto)
glib-2.36.3_1 (todo por defecto)
pcre-8.33 (todo por defecto)
polkit-0.105_1 (todo por defecto)
unzip-6.0_1 (todo por defecto)
xmlcatmgr-2.2 (todo por defecto)
docbook-1.4_1 (todo por defecto)
dbus-1.6.12 (todo por defecto)
libffi-3.0.13 (todo por defecto)
docbook-5.0_1 (todo por defecto)
cairo-1.10.2_6,2 (todo por defecto)

# make install clean

Agregar estas lineas para cargar al inicio

# echo '# X11 Configuration' >> /etc/rc.conf
# echo 'hald_enable="YES"' >> /etc/rc.conf
# echo 'dbus_enable="YES"' >> /etc/rc.conf

Iniciarlo complementos (start|stop|restart)
# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/hald start

Crear el archivo xorg.conf.new basico
# rehash
# Xorg -configure

Editar el archivo con los parametros para el monitor

# edit /root/xorg.conf.new

En mi caso tengo este monitor
http://support.dell.com/support/edocs/systems/1907FP/en/about.htm#Specifications

En la seccion "Monitor" le agregamos HorizSync, VertRefresh y Option       "DPMS"

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-81
        VertRefresh  56-76
        Option       "DPMS"
EndSection

En la seccion "Screen" solo dejamos Depth 24 y Modes "1280x1024"

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1280x1024"
        EndSubSection
EndSection

Probamos nuestro archivo para ver si funciona bien

# Xorg -config /root/xorg.conf.new -retro

Esto inicia las X, para pararlo

Ctrl+Alt+F1 y usamos Ctrl+C

Nota:
En mi caso con una tarjeta Nvidia, no carga las X, pero luego con el driver de nvidia todo funciona bien.

Copiar el archivo al lugar correcto con el nombre final

# cp /root/xorg.conf.new /etc/X11/xorg.conf

Instalar el driver de Nvidia

# cd /usr/ports/x11/nvidia-driver
# make config-recursive

nvidia-driver-319.32

[  ] ACPI_PM      ACPI_PM Power Management support
[X] DOCS        Build and/or install documentation
[  ] LINUX        Linux compatibility support
[  ] WBINVD     Flush CPU caches directly with WBINVD

<OK>

# make install clean

Cargar manualmente el modulo

# kldload nvidia

Agregar estas lineas para cargar al inicio

# echo '# NVIDIA Driver' >> /boot/loader.conf
# echo 'nvidia_load="YES"' >> /boot/loader.conf

Editar el archivo para usar el driver nvidia en lugar de nv

# edit /etc/X11/xorg.conf

cambiar la linea original

Driver      "nv"

por

Driver      "nvidia"

Instalar el port  mesa-demos para poder usar glxgears y glxinfo

# cd /usr/ports/graphics/mesa-demos
# make install clean

Otros ports relacionados con NVIDIA
x11/nvidia-settings
x11/nvidia-xconfig