Tutoriales

Cómo configurar FreeBSD 12 VNET jail con ZFS

H¿Cómo instalo, instalo y configuro una mazmorra de FreeBSD 12 con VNET en ZFS? ¿Cómo puedo crear la mazmorra FreeBSD 12 VNET con /etc/jail.conf para ejecutar OpenVPN, Apache, Wireguard y otros servicios de Internet de forma segura en mi caja BSD?

La mazmorra de FreeBSD no es más que virtualización a nivel de sistema activo que permite particionar un servidor Unix basado en FreeBSD. Estos sistemas tienen su usufructuario root y derechos de comunicación. Las cárceles pueden utilizar la infraestructura de virtualización del subsistema de red o compartir una red existente. Las cárceles de FreeBSD son una forma poderosa de aumentar la seguridad. Por lo normal, crea una mazmorra por servicios como un servidor web Nginx / Apache con aplicación PHP / Perl / Python, servidor WireGuard / OpeNVPN, servidor MariaDB / PgSQL y más. Esta página muestra cómo configurar una mazmorra de FreeBSD con vnet y ZFZ en FreeBSD 12.x.



¿Qué es una VNET en FreeBSD 12?

VNET es una infraestructura de virtualización de subsistemas de red para FreeBSD. Podemos usar VNET para ejecutar un firewall o una mazmorra interna de servidor VPN en un entorno separado. En otras palabras, creamos la mazmorra de FreeBSD con su pila de red supuesto, con sus interfaces de red, direcciones, tabla de enrutamiento, etc. El kernel de FreeBSD 12 tiene la opción VIMAGE por defecto. En FreeBSD 11.xy versiones anteriores, compilamos el kernel para amplificar soporte para VIMAGE. Vea cómo configurar jails en FreeBSD 11.x con VNET para más información.

Cómo configurar FreeBSD 12 VNET jail con ZFS

El procedimiento para configurar FreeBSD 12 VNET jail con ZFS es el posterior. Estoy usando la interpretación 12.2 de FreeBSD con el nivel de parche 2. Verifique la interpretación de FreeBSD:
$ freebsd-version

Paso 1: creación de un nuevo conjunto de datos zfs para las cárceles de FreeBSD

Necesita configurar el sistema de archivos. Utilice el comando zpool para obtener una registro de zfs configurados:
# zpool list
Ejecutemos el posterior comando zfs para zroot montado en / jails /:
# zfs create -o mountpoint=/jails zroot/jails
Luego cree un conjunto de datos zfs llamado fullbasejail, ingrese:
# zfs create zroot/jails/fullbasejail
Verifíquelo:
# zfs list
Por merced anote el / jails / fullbasejail.

Paso 2: configurar la mazmorra cojín de FreeBSD 12

Configuremos una nueva plantilla de mazmorra cojín para nuestro trabajo. La sintaxis es la posterior para preparar la mazmorra usando el comando bsdinstall:
# export BSDINSTALL_DISTSITE=https://download.freebsd.org/ftp/releases/amd64/12.2-RELEASE/
# bsdinstall jail /jails/fullbasejail


Aplique las actualizaciones y compare FreeBSD con un índice «bueno conocido» de la interpretación instalada:
# freebsd-update -b /jails/fullbasejail fetch install
# freebsd-update -b /jails/fullbasejail IDS

Esto es lo que vemos. Ignoraré la advertencia del archivo / etc / * mientras configuro la contraseña de root para mi mazmorra cojín:

src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 12.2-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
/etc/master.passwd has SHA256 hash 070a37fe90f5e2fce8191ac77eeb416e3a6b7ab6076fa22badef1f63d4657c01, but should have SHA256 hash 1a7dee96fb231be3e28b5fc2489dcffe61632ab1f6406e4e53f6b149de1e923b.
/etc/pwd.db has SHA256 hash b4172a427ad0f8a2b5a989de5eba8258682818226bdd354dda2c58efc4861daf, but should have SHA256 hash 8535fd83b62622bd4aa9833e2691aa12c65e3baebbf00f018092fb4498891b12.
/etc/spwd.db has SHA256 hash b97d48eebe549442695c40431e9728065606e31cafa87efbe9e655423ca11fff, but should have SHA256 hash ed987aebc759f2aef299909834d82caa8e2ff373bd762a82eeb89b43eafc4b59.

Paso 3: creación de una nueva mazmorra de FreeBSD 12 desde la mazmorra cojín

Muy correctamente, nuestra mazmorra cojín para una implementación rápida está registro. Podemos clonar la mazmorra cojín para crear una nueva mazmorra:
# zfs snapshot zroot/jails/[email protected]
# List snapshots:
# zfs list -t snapshot

Finalmente, cree una nueva mazmorra llamamiento ‘demojail’ a partir de la instantánea de zfs que creamos eariler:
# zfs send -R zroot/jails/[email protected] | zfs receive zroot/jails/demojail
Igualmente podemos hacer un clon en empleo de destinar / percibir. Un clon es un pandeo de escritura o sistema de archivos cuyo contenido original es el mismo que el del conjunto de datos a partir del cual se creó. Al igual que con las instantáneas, la creación de un clon es casi instantáneo e inicialmente no consume espacio adicional en el disco. Encima, puede tomar una instantánea de un clon. Por ejemplo:
# zfs clone zroot/jails/[email protected] zroot/jails/demojail
Ahora podemos crear fácilmente múltiples cárceles como mail, www, db, etc.
# zfs send -R zroot/jails/[email protected] | zfs receive zroot/jails/mail
# zfs send -R zroot/jails/[email protected] | zfs receive zroot/jails/www
# zfs send -R zroot/jails/[email protected] | zfs receive zroot/jails/db
## CLONE ##
# zfs clone zroot/jails/[email protected] zroot/jails/vpn

Paso 4: configurar cosas básicas de la mazmorra

Necesitamos asegurarnos de que nuestra mazmorra tenga la zona horaria correcta, la configuración de dns, un nombre de host, dirección IP y otras cosas en rc.conf. Tenga en cuenta que debe estar en el directorio / jails / demojail /. Asegúrese de ajustar las rutas de acuerdo con su configuración de BSD:
# cd /jails/demojail
Configure un dns creando un archivo llamado etc / resolv.conf adentro de / jails / demojail /:
# vi etc/resolv.conf
Actualice / edite / agregue lo posterior (configure el servidor de nombres dns según su configuración):
nameserver 192.168.2.254
Guarde y obstrucción el archivo en el editor de texto vim / vi. Configure la zona horaria para su mazmorra de FreeBSD usando el comando ln (estoy configurando para IST):
# ln -v usr/share/zoneinfo/Asia/Kolkata etc/localtime
A continuación, debe configurar rc.conf adentro de / jails / demojail /:
# vi etc/rc.conf
Mi configuración:

# jail hostname #
host_hostname="demojail"
 
# IP address and routing #
# e0b_demojail #
ifconfig_e0b_demojail="inet 192.168.2.250 netmask 255.255.255.0"
defaultrouter="192.168.2.254"
 
# Start or stop services #
cron_flags="$cron_flags -J 15"
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
syslogd_flags="-c -ss"
ipv6_activate_all_interfaces="NO"
sshd_enable="NO"

Guarde y obstrucción el archivo. Cree o actualice el archivo etc / periodic.conf adentro de / jails / demojail / igualmente:
# vi etc/periodic.conf

## Disable the predefined scheduled jobs which are not required for my jails ##
daily_show_success="NO"
weekly_show_success="NO"
monthly_show_success="NO"
security_show_success="NO"
 
daily_output="/var/log/daily.log"
daily_status_security_output="/var/log/daily.log"
weekly_output="/var/log/weekly.log"
weekly_status_security_output="/var/log/weekly.log"
monthly_output="/var/log/monthly.log"
monthly_status_security_output="/var/log/monthly.log"
 
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_mailq_enable="NO"
daily_queuerun_enable="NO"
 
daily_status_disks_enable="NO"
daily_status_zfs_zpool_list_enable="NO"
daily_status_network_enable="NO"
daily_status_uptime_enable="NO"
daily_ntpd_leapfile_enable="NO"
weekly_locate_enable="NO"
weekly_whatis_enable="NO"
security_status_chksetuid_enable="NO"
security_status_neggrpperm_enable="NO"
security_status_chkuid0_enable="NO"
security_status_ipfwdenied_enable="NO"
security_status_ipfdenied_enable="NO"
security_status_ipfwlimit_enable="NO"
security_status_ipf6denied_enable="NO"
security_status_tcpwrap_enable="NO"

Consulte /etc/defaults/periodic.conf y la página de manual para obtener más información sobre esas configuraciones:
man 5 periodic.conf

Paso 5: configuración de la mazmorra a través de jail.conf en el host

Edite o cree el /etc/jail.conf de la posterior guisa:
# vi /etc/jail.conf
Configuración de muestra:

demojail {
        host.hostname = "demojail";   # hostname
        path = "/jails/demojail";     # root directory
        exec.clean;
        exec.system_user = "root";
        exec.jail_user = "root";
        # ##########################################################################
        # netgraph/vnet config info
        # e0b is my vnet
        # em0 is my physical network interface connected to the LAN (use ifconfig)
        # jib is located in /usr/circunscrito/sbin
        # demojail is my jail name
        # ##########################################################################
        vnet;
        vnet.interface = "e0b_demojail";               # vnet interface(s)
        exec.prestart += "jib addm demojail em0";
        exec.poststop += "jib destroy demojail";
 
        # Standard stuff
        exec.start += "/bin/sh /etc/rc";
        exec.stop = "/bin/sh /etc/rc.shutdown";
        exec.consolelog = "/var/log/jail_demojail_console.log";
        mount.devfs;          #mount devfs
        allow.raw_sockets;    #allow ping-pong
        devfs_ruleset="5";    #devfs ruleset for this jail
        allow.set_hostname = 1;
}

Paso 6 – Turing en FreeBSD 12 jail service

Ejecute el comando sysrc:
# sysrc jail_enable=YES
Renovar / editar /etc/devfs.rules para la mazmorra de demostración:

Cree /etc/devfs.rules

# vi /etc/devfs.rules
Agregue o edite el archivo de la posterior guisa para permitir el comunicación de / dev / tun adentro de la mazmorra (consulte /etc/defaults/devfs.rules):
[devfsrules_jail_demojail=5] add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'tun*' unhide
add path 'bpf*' unhide
add path zfs unhide

Guarde y obstrucción el archivo.

Paso 7: iniciar el servicio carcelario

Asegúrese de copiar los scripts auxiliares usando el comando cp:
# cp -v /usr/share/examples/jails/{jib,jng} /usr/circunscrito/sbin/
Scripts instalados:

/usr/share/examples/jails/jib -> /usr/circunscrito/sbin/jib
/usr/share/examples/jails/jng -> /usr/circunscrito/sbin/jng

Usamos el comando de servicio de la posterior guisa para iniciar / detener u obtener el estado del servicio de la mazmorra:
# service jail start
# service jail stop
# service jail restart
# service jail status

Paso 8- Prueba

Primero enumere todas las cárceles en ejecución, escriba:
# jls
Use jid o jailname de la posterior guisa
# jexec 1 sh
# jexec demojail tcsh

Agregue un nuevo usufructuario usando el comando pw:
# pw useradd -n vivek -G wheel -s /bin/tcsh -m -d /home/vivek
# passwd vivek

Renovar o instalar paquetes
# pkg update && pkg upgrade
# pkg install most

Corroborar la red:
# ifconfig
# sockstat -4
# ping -c 2 cyberciti.biz


Tenga en cuenta que e0b_demojail es la interfaz de red de mi mazmorra.

Conclusión

Y eso es todo por ahora. Aprendió a configurar una mazmorra de FreeBSD 12 con VNET conexo con ZFS. Le sugiero que lea esta página para obtener más información y páginas man escribiendo el posterior comando man:
$ man jail
$ man devfs.conf



Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba