Next: Actualizaciones no-atendidas, Previous: Networking Setup, Up: Servicios [Contents][Index]
The (gnu services networking)
module discussed in the previous
section provides services for more advanced setups: providing a DHCP service
for others to use, filtering packets with iptables or nftables, running a
WiFi access point with hostapd
, running the inetd
“superdaemon”, and more. This section describes those.
Este tipo define un servicio que ejecuta el daemon DHCP. Para crear un
servicio de este tipo debe proporcionar un objeto
<dhcpd-configuration>
. Por ejemplo:
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "mi-dhcpd.conf"))
(interfaces '("enp0s25"))))
package
(predeterminado: isc-dhcp
)The package that provides the DHCP daemon. This package is expected to provide the daemon at sbin/dhcpd relative to its output directory. The default package is the ISC’s DHCP server.
config-file
(predeterminado: #f
)El archivo de configuración usado. Esta opción es necesaria. Se le
proporcionará a dhcpd
a través de su opción -cf
. Puede ser
cualquier objeto “tipo-archivo” (see objetos
“tipo-archivo”). Véase man dhcpd.conf
para detalles sobre la
sintaxis del archivo de configuración.
version
(predeterminada: "4"
)La versión DHCP usada. El servidor DHCP de ISC permite los valores “4”,
“6” y “4o6”. Corresponden con las opciones -4
, -6
y
-4o6
del programa dhcpd
. Véase man dhcpd
para más
detalles.
run-directory
(predeterminado: "/run/dhcpd"
)El directorio de ejecución usado. Durante la activación del servicio se creará en caso de no existir.
pid-file
(predeterminado: "/run/dhcpd/dhcpd.pid"
)El archivo de PID usado. Corresponde con la opción -pf
de
dhcpd
. Véase man dhcpd
para más detalles.
interfaces
(predeterminadas: '()
)Los nombres de las interfaces de red en las que dhcpd debería esperar
retransmisiones. Si la lista no está vacía, entonces sus elementos (que
deben ser cadenas) se añadirá a la invocación de dhcpd
cuando se
inicie el daemon. Puede no ser necesaria la especificación explícita aquí de
ninguna interfaz; véase man dhcpd
para más detalles.
Este es el tipo de servicio que ejecuta el daemon
hostapd para configurar puntos de acceso WiFi
(IEEE 802.11) y servidores de identificación. Su valor debe ser un registro
hostapd-configuration
como en este ejemplo:
;; Use wlan1 para ejecutar el punto de acceso para "Mi red". (service hostapd-service-type (hostapd-configuration (interface "wlan1") (ssid "Mi red") (channel 12)))
Este tipo de datos representa la configuración del servicio hostapd, y tiene los siguientes campos:
package
(predeterminado: hostapd
)El paquete hostapd usado.
interface
(predeterminado: "wlan0"
)La interfaz de red en la que se establece el punto de acceso WiFi.
ssid
El SSID (identificador del servicio, del inglés “service set identifier”), una cadena que identifica esta red.
broadcast-ssid?
(predeterminado: #t
)Determina si se emite este SSID.
channel
(predeterminado: 1
)El canal WiFi usado.
driver
(predeterminado: "nl80211"
)El tipo de controlador de la interfaz. "nl80211"
se usa con todos
los controladores de mac80211 de Linux. Use "none"
si está
construyendo hostapd como un servidor RADIUS independiente que no controla
ningún controlador de red cableada o inalámbrica.
extra-settings
(predeterminado: ""
)Configuración adicional que se añade literalmente al archivo de configuración de hostapd. Véase https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf para la referencia del archivo de configuración.
Tipo de servicio que simula una red inalámbrica (“WiFi”), lo que puede ser
útil en máquinas virtuales para realizar pruebas. El servicio carga el
módulo mac80211_hwsim
del núcleo Linux e inicia hostapd para crear
una red inalámbrica virtual que puede verse en wlan0
, de manera
predeterminada.
El valor de este servicio es un registro hostapd-configuration
.
Este es el tipo de servicio para la aplicación de configuración de iptables. iptables es un entorno de trabajo para el filtrado de paquetes implementado por el núcleo Linux. Este servicio permite la configuración de iptables tanto para IPv4 como IPv6. Un ejemplo simple de cómo rechazar todas las conexiones entrantes excepto aquellas al puerto 22 de ssh se muestra a continuación.
(service iptables-service-type
(iptables-configuration
(ipv4-rules (plain-file "iptables.rules" "*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
"))
(ipv6-rules (plain-file "ip6tables.rules" "*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
COMMIT
"))))
El tipo de datos que representa la configuración de iptables.
iptables
(predeterminado: iptables
)El paquete iptables que proporciona iptables-restore
y
ip6tables-restore
.
ipv4-rules
(predeterminado: %iptables-accept-all-rules
)Las reglas de iptables usadas. Se le proporcionarán a
iptables-restore
. Puede ser cualquier objeto “tipo-archivo”
(see objetos “tipo-archivo”).
ipv6-rules
(predeterminadas: %iptables-accept-all-rules
)Las reglas de ip6tables usadas. Se le proporcionarán a
ip6tables-restore
. Puede ser cualquier objeto “tipo-archivo”
(see objetos “tipo-archivo”).
This is the service type to set up a nftables configuration. nftables is a
netfilter project that aims to replace the existing iptables, ip6tables,
arptables and ebtables framework. It provides a new packet filtering
framework, a new user-space utility nft
, and a compatibility layer
for iptables. This service comes with a default ruleset
%default-nftables-ruleset
that rejecting all incoming connections
except those to the ssh port 22. To use it, simply write:
El tipo de datos que representa la configuración de nftables.
package
(predeterminado: nftables
)El paquete nftables que proporciona nft
.
ruleset
(predeterminados: %default-nftables-ruleset
)El conjunto de reglas de nftables usado. Puede ser cualquier objeto “tipo-archivo” (see objetos “tipo-archivo”).
Este es el tipo del servicio que ejecuta el daemon del
protocolo de tiempo en red (NTP),
ntpd
. El daemon mantendrá el reloj del sistema sincronizado con el
de los servidores NTP especificados.
El valor de este servicio es un objeto ntpd-configuration
, como se
describe a continuación.
Este es el tipo de datos para la configuración del servicio NTP.
servers
(predeterminados: %ntp-servers
)La lista de servidores (registros <ntp-server>
) con los que la
herramienta ntpd
se sincronizará. Véase la información sobre el
tipo de datos ntp-server
a continuación.
allow-large-adjustment?
(predeterminado: #t
)Esto determina si se le permite a ntpd
realizar un ajuste inicial
de más de 1000 segundos.
ntp
(predeterminado: ntp
)El paquete NTP usado.
Lista de nombres de máquinas usadas como servidores NTP predeterminados. Son servidores del NTP Pool Project.
Tipo de datos que representa la configuración de un servidor NTP.
type
(predeterminado: 'server
)The type of the NTP server, given as a symbol. One of 'pool
,
'server
, 'peer
, 'broadcast
or 'manycastclient
.
address
La dirección del servidor, como una cadena.
options
NTPD options to use with that specific server, given as a list of option names and/or of option names and values tuples. The following example define a server to use with the options iburst and prefer, as well as version 3 and a maxpoll time of 16 seconds.
(ntp-server (type 'server) (address "miservidor.ntp.server.org") (options `(iburst (version 3) (maxpoll 16) prefer))))
Ejecuta ntpd
, el daemon del protocolo de tiempo en red (NTP),
implementado por OpenNTPD. El daemon
mantendrá el reloj del sistema sincronizado con el de los servidores
proporcionados.
(service
openntpd-service-type
(openntpd-configuration
(listen-on '("127.0.0.1" "::1"))
(sensor '("udcf0 correction 70000"))
(constraint-from '("www.gnu.org"))
(constraints-from '("https://www.google.com/"))))
Esta variable es una lista de las direcciones de servidores definidos en
%ntp-servers
.
openntpd
(predeterminado: (file-append openntpd "/sbin/ntpd")
)El ejecutable openntpd usado.
listen-on
(predeterminadas: '("127.0.0.1" "::1")
)Una lista de direcciones IP o nombres de máquina en los que el daemon ntpd debe escuchar conexiones.
query-from
(predeterminadas: '()
)Una lista de direcciones IP locales que el daemon ntpd debe usar para consultas salientes.
sensor
(predeterminados: '()
)Especifica una lista de dispositivos de sensores de tiempo de ntpd debería
usar. ntpd
escuchará cada sensor que realmente exista e ignora los
que no. Véase la documentación de
las desarrolladoras originales para más información.
server
(predeterminado: '()
)Especifica una lista de direcciones IP o nombres de máquina de servidores NTP con los que sincronizarse.
servers
(predeterminada: %openntp-servers
)Una lista de direcciones IP o nombres de máquina con los que el daemon ntpd se debe sincronizar.
constraint-from
(predeterminado: '()
)ntpd
puede configurarse para que solicite la fecha a través del campo
“Date” de servidores HTTPS en los que se confíe a través de TLS. Esta
información de tiempo no se usa por precisión pero actúa como una condición
verificada, por tanto reduciendo el impacto de ataques mediante la
intervención del tráfico con servidores NTP no verificados. Especifica una
lista de URL, direcciones IP o nombres de máquina de servidores HTTPS que
proporcionarán la condición.
constraints-from
(predeterminadas: '()
)Como en constraint-from, proporciona una lista de URL, direcciones IP
o nombres de máquina de servidores HTTP para proporcionar la condición. En
caso de que el nombre de máquina resuelva en múltiples direcciones IP,
ntpd
calculará la condición mediana de todas ellas.
Este servicio ejecuta el daemon inetd
(see inetd invocation in GNU Inetutils). inetd
escucha conexiones en sockets de
internet, e inicia bajo demanda el programa servidor cuando se realiza una
conexión en uno de esos sockets.
El valor de este servicio es un objeto inetd-configuration
. El
ejemplo siguiente configura el daemon inetd
para proporcionar el
servicio echo
implementado por él mismo, así como un servicio smtp
que reenvía el tráfico smtp por ssh a un servidor servidor-smtp
tras
la pasarela máquina
:
(service
inetd-service-type
(inetd-configuration
(entries (list
(inetd-entry
(name "echo")
(socket-type 'stream)
(protocol "tcp")
(wait? #f)
(user "root"))
(inetd-entry
(node "127.0.0.1")
(name "smtp")
(socket-type 'stream)
(protocol "tcp")
(wait? #f)
(user "root")
(program (file-append openssh "/bin/ssh"))
(arguments
'("ssh" "-qT" "-i" "/ruta/de/la/clave_ssh"
"-W" "servidor-smtp:25" "usuaria@maquina")))))))
A continuación se proporcionan más detalles acerca de
inetd-configuration
.
Tipo de datos que representa la configuración de inetd
.
program
(predeterminado: (file-append inetutils "/libexec/inetd")
)El ejecutable inetd
usado.
entries
(predeterminadas: '()
)Una lista de entradas de servicio de inetd
. Cada entrada debe
crearse con el constructor inted-entry
.
Tipo de datos que representa una entrada en la configuración de
inetd
. Cada entrada corresponde a un socket en el que
inetd
escuchará a la espera de peticiones.
node
(predeterminado: #f
)Cadena opcional, una lista separada por comas de direcciones locales que
inetd
debería usar cuando se escuche para este
servicio. See Configuration file in GNU Inetutils para una
descripción completa de todas las opciones.
name
Una cadena, el nombre debe corresponder con una entrada en
/etc/services
.
socket-type
Puede ser 'stream
, 'dgram
, 'raw
, 'rdm
o
'seqpacket
.
protocol
Una cadena, debe corresponder con una entrada en /etc/protocols
.
wait?
(predeterminado: #t
)Si inetd
debe esperar la salida del servidor antes de reiniciar la
escucha de nuevas peticiones de servicio.
user
Una cadena que contiene el nombre (y, opcionalmente, el grupo) de la usuaria
como la que se deberá ejecutar el servidor. El nombe de grupo se puede
especificar en un sufijo, separado por dos puntos o un punto normal, es
decir "usuaria"
, "usuaria:grupo"
o "usuaria.grupo"
.
program
(predeterminado: "internal"
)El programa servidor que recibirá las peticiones, o "internal"
si
inetd
debería usar un servicio implementado internamente.
arguments
(predeterminados: '()
)Una lista de cadenas u objetos “tipo-archivo”, que serán los parámetros
del programa servidor, empezando con el parámetro 0, es decir, el nombre del
programa en sí mismo. Para los servicios internos de inetd
, esta
entrada debe ser '()
o '("internal")
.
See Configuration file in GNU Inetutils, para una información más detallada sobre cada campo de la configuración.
This is the type of the service running a OpenDHT node, dhtnode
. The daemon can be used to host your own
proxy service to the distributed hash table (DHT), for example to connect to
with Jami, among other applications.
Importante: When using the OpenDHT proxy server, the IP addresses it “sees” from the clients should be addresses reachable from other peers. In practice this means that a publicly reachable address is best suited for a proxy server, outside of your private network. For example, hosting the proxy server on a IPv4 private local network and exposing it via port forwarding could work for external peers, but peers local to the proxy would have their private addresses shared with the external peers, leading to connectivity problems.
The value of this service is a opendht-configuration
object, as
described below.
Available opendht-configuration
fields are:
opendht
(default: opendht
) (type: file-like)The opendht
package to use.
peer-discovery?
(default: #f
) (type: boolean)Whether to enable the multicast local peer discovery mechanism.
enable-logging?
(default: #f
) (type: boolean)Whether to enable logging messages to syslog. It is disabled by default as it is rather verbose.
debug?
(default: #f
) (type: boolean)Whether to enable debug-level logging messages. This has no effect if logging is disabled.
bootstrap-host
(default: "bootstrap.jami.net:4222"
) (type: maybe-string)The node host name that is used to make the first connection to the
network. A specific port value can be provided by appending the
:PORT
suffix. By default, it uses the Jami bootstrap nodes, but any
host can be specified here. It’s also possible to disable bootstrapping by
explicitly setting this field to the %unset-value
value.
port
(default: 4222
) (type: maybe-number)The UDP port to bind to. When left unspecified, an available port is automatically selected.
proxy-server-port
(type: maybe-number)Spawn a proxy server listening on the specified port.
proxy-server-port-tls
(type: maybe-number)Spawn a proxy server listening to TLS connections on the specified port.
Este es el tipo para un servicio que ejecuta el daemon de red anónima
Tor. El servicio se configura mediante un
registro <tor-configuration>
. De manera predeterminada, el daemon Tor
se ejecuta como la usuaria sin privilegios tor
, que es miembro del
grupo tor
.
tor
(predeterminado: tor
)El paquete que proporciona el daemon Tor. Se espera que este paquete proporcione el daemon en bin/tor de manera relativa al directorio de su salida. El paquete predeterminado es la implementación del Proyecto Tor.
config-file
(predeterminado: (plain-file "empty" "")
)El archivo de configuración usado. Se agregará al final del archivo de
configuración predeterminado, y se proporcionará el archivo de configuración
resultante a tor
a través de su opción -f
. Puede ser cualquier
objeto “tipo-archivo” (see objetos
“tipo-archivo”). Véase man tor
para detalles sobre la sintaxis del
archivo de configuración.
hidden-services
(predeterminados: '()
)La lista de registros de servicios ocultos <hidden-service>
usados. Para cada servicio oculto que añada en esta lista, se activará la
configuración apropiada para su activación en el archivo de configuración
predeterminado. Puede crear registros <hidden-service>
de manera
conveniente mediante el uso del procedimiento tor-hidden-service
descrito a continuación.
socks-socket-type
(predeterminado: 'tcp
)El tipo socket predeterminado que Tor debe usar para su socket SOCKS. Debe
ser 'tcp
i 'unix
. Si es 'tcp
, Tor escuchará en el
puerto TCP 9050 de la interfaz local (es decir, localhost) de manera
predeterminada. Si es 'unix
, tor escuchará en el socket de dominio de
UNIX /var/run/tor/socks-sock, que tendrá permisos de escritura para
miembros del grupo tor
.
Si desea personalizar el socket SOCKS de manera más detallada, mantenga
socks-socket-type
con su valor predeterminado de 'tcp
y use
config-file
para modificar el valor predeterminado proporcionando su
propia opción SocksPort
.
control-socket?
(default: #f
)Whether or not to provide a “control socket” by which Tor can be
controlled to, for instance, dynamically instantiate tor onion services. If
#t
, Tor will listen for control commands on the UNIX domain socket
/var/run/tor/control-sock, which will be made writable by members of
the tor
group.
Define un servicio oculto Tor llamado nombre y que implementa la relación. relación es una lista de tuplas puerto/máquina, como:
'((22 "127.0.0.1:22") (80 "127.0.0.1:8080"))
En este ejemplo, el puerto 22 del servicio oculto se asocia con el puerto 22 local, y el puerto 80 se asocia con el puerto 8080 local.
Esto crea un directorio /var/lib/tor/hidden-services/nombre,
donde el archivo hostname contiene el nombre de máquina .onion
para el servicio oculto.
Véase la documentación del proyecto Tor para más información.
El módulo (gnu services rsync)
proporciona los siguientes servicios:
Puede ser que desee un daemon rsync si tiene archivos que desee tener disponibles de modo que cualquiera (o simplemente usted) pueda descargar archivos existentes o subir nuevos archivos.
Este es el tipo de servicio para el daemon rsync. El valor tipo de servicio es un registro
rsync-configuration
como en este ejemplo.
;; Export two directories over rsync. By default rsync listens on ;; all the network interfaces. (service rsync-service-type (rsync-configuration (modules (list (rsync-module (name "music") (file-name "/srv/zik") (read-only? #f)) (rsync-module (name "movies") (file-name "/home/charlie/movies"))))))
Véase a continuación para detalles sobre rsync-configuration
.
Tipo de datos que representa la configuración para rsync-service
.
package
(predeterminado: rsync)Paquete rsync
usado.
address
(predeterminada: #f
)IP address on which rsync
listens for incoming connections. If
unspecified, it defaults to listening on all available addresses.
port-number
(predeterminado: 873
)Puerto TCP en el que rsync
escucha conexiones entrantes. Si el
puerto es menor a 1024
, rsync
necesita iniciarse como
root
, tanto usuaria como grupo.
pid-file
(predeterminado: "/var/run/rsyncd/rsyncd.pid"
)Nombre del archivo donde rsync
escribe su PID.
lock-file
(predeterminado: "/var/run/rsyncd/rsyncd.lock"
)Nombre del archivo donde rsync
escribe su archivo de bloqueo.
log-file
(predeterminado: "/var/log/rsyncd.log"
)Nombre del archivo donde rsync
escribe su archivo de registros.
user
(predeterminada: "root"
)Propietaria del proceso rsync
.
group
(default: "root"
)Grupo del proceso rsync
.
uid
(default: "rsyncd"
)Nombre o ID de usuaria bajo la cual se efectúan las transferencias desde y
hacia el módulo cuando el daemon se ejecuta como root
.
gid
(default: "rsyncd"
)Nombre o ID de grupo que se usa cuando se accede al módulo.
modules
(predeterminados: %default-modules
)List of “modules”—i.e., directories exported over rsync. Each element
must be a rsync-module
record, as described below.
This is the data type for rsync “modules”. A module is a directory exported over the rsync protocol. The available fields are as follows:
name
The module name. This is the name that shows up in URLs. For example, if
the module is called music
, the corresponding URL will be
rsync://host.example.org/music
.
file-name
Name of the directory being exported.
comment
(predeterminado: ""
)Comment associated with the module. Client user interfaces may display it when they obtain the list of available modules.
read-only?
(default: #t
)Whether or not client will be able to upload files. If this is false, the uploads will be authorized if permissions on the daemon side permit it.
chroot?
(default: #t
)When this is true, the rsync daemon changes root to the module’s directory before starting file transfers with the client. This improves security, but requires rsync to run as root.
timeout
(predeterminado: 300
)Idle time in seconds after which the daemon closes a connection with the client.
The (gnu services syncthing)
module provides the following services:
You might want a syncthing daemon if you have files between two or more computers and want to sync them in real time, safely protected from prying eyes.
This is the service type for the syncthing
daemon, The value for this service type is a
syncthing-configuration
record as in this example:
(service syncthing-service-type
(syncthing-configuration (user "alice")))
See below for details about syncthing-configuration
.
Data type representing the configuration for syncthing-service-type
.
syncthing
(default: syncthing)syncthing
package to use.
arguments
(default: ’())List of command-line arguments passing to syncthing
binary.
logflags
(default: 0)Sum of logging flags, see Syncthing documentation logflags.
user
(default: #f)The user as which the Syncthing service is to be run. This assumes that the specified user exists.
group
(default: "users")The group as which the Syncthing service is to be run. This assumes that the specified group exists.
home
(default: #f)Common configuration and data directory. The default configuration
directory is $HOME of the specified Syncthing user
.
Es más, (gnu services ssh)
proporciona los siguientes servicios.
Ejecuta el programa lshd
de lsh para escuchar en el puerto
port-number. host-key debe designar a un archivo que contiene la
clave de la máquina, y que sea legible únicamente por root.
Cuando daemonic? es verdadero, lshd
se desligará del
terminal de control y registrará su salida con syslogd, a menos que se
establezca syslog-output? a falso. Obviamente, esto hace que
lsh-dependa de la existencia de un servicio syslogd. Cuando pid-file?
es verdadero, lshd
escribe su PID al archivo llamado
pid-file.
Cuando initialize? es verdadero, crea automáticamente una semilla una clave de máquina una vez se active el servicio si no existen todavía. Puede tomar un tiempo prolongado y necesita interacción.
Cuando initialize? es falso, es cuestión de la usuaria la inicialización del generador aleatorio (see lsh-make-seed in LSH Manual), la creación de un par de claves y el almacenamiento de la clave privada en el archivo host-key (see lshd basics in LSH Manual).
Cuando interfaces está vacío, lshd escucha conexiones en todas las interfaces de red; en otro caso, interfaces debe ser una lista de nombres de máquina o direcciones.
allow-empty-passwords? especifica si se aceptará el ingreso al sistema con una contraseña vacía y root-login? especifica si se acepta el ingreso al sistema como root.
El resto de opciones deberían ser autodescriptivas.
Este es el tipo para el daemon de shell seguro OpenSSH, sshd
. Su valor debe ser un registro
openssh-configuration
como en este ejemplo:
(service openssh-service-type
(openssh-configuration
(x11-forwarding? #t)
(permit-root-login 'prohibit-password)
(authorized-keys
`(("alice" ,(local-file "alice.pub"))
("bob" ,(local-file "bob.pub"))))))
Véase a continuación detalles sobre openssh-configuration
.
Este servicio se puede extender con claves autorizadas adicionales, como en este ejemplo:
(service-extension openssh-service-type
(const `(("carlos"
,(local-file "carlos.pub")))))
Este es el registro de configuración para sshd
de OpenSSH.
openssh
(predeterminado: openssh)The OpenSSH package to use.
pid-file
(predeterminado: "/var/run/sshd.pid"
)Nombre del archivo donde sshd
escribe su PID.
port-number
(predeterminado: 22
)Puerto TCP en el que sshd
espera conexiones entrantes.
max-connections
(default: 200
)Hard limit on the maximum number of simultaneous client connections,
enforced by the inetd-style Shepherd service (see make-inetd-constructor
in The GNU Shepherd
Manual).
permit-root-login
(predeterminado: #f
)This field determines whether and when to allow logins as root. If
#f
, root logins are disallowed; if #t
, they are allowed. If
it’s the symbol 'prohibit-password
, then root logins are permitted
but not with password-based authentication.
allow-empty-passwords?
(predeterminado: #f
)Cuando es verdadero, las usuarias con contraseñas vacías pueden ingresar en el sistema. Cuando es falso, no pueden.
password-authentication?
(predeterminado: #t
)Cuando es verdadero, las usuarias pueden ingresar al sistema con su contraseña. En caso falso, tienen otros métodos de identificación.
public-key-authentication?
(predeterminado: #t
)Cuando es verdadero, las usuarias pueden ingresar en el sistema mediante el uso de clave publica para su identificación. Cuando es falso, las usuarias tienen que usar otros métodos de identificación.
Las claves públicas autorizadas se almacenan en ~/.ssh/authorized_keys. Se usa únicamente por la versión 2 del protocolo.
x11-forwarding?
(predeterminado: #f
)Cuando verdadero, la retransmisión de conexiones del cliente gráfico X11
está desactivada—en otras palabras, las opciones -X y -Y
de ssh
funcionarán.
allow-agent-forwarding?
(predeterminado: #t
)Si se permite la retransmisión del agente de claves.
allow-tcp-forwarding?
(predeterminado: #t
)Si se permite la retransmisión TCP.
gateway-ports?
(predeterminado: #f
)Si se permiten los puertos pasarela.
challenge-response-authentication?
(predeterminado: #f
)Especifica si la identificación mediante respuesta de desafío está permitida (por ejemplo, a través de PAM).
use-pam?
(predeterminado: #t
)Permite el uso de la interfaz de módulos de identificación conectables
(PAM). Si es #t
se activará la identificación PAM mediante el uso de
challenge-response-authentication?
y password-authentication?
,
además del procesado de los módulos de cuenta usuaria y de sesión de PAM en
todos los tipos de identificación.
Debido a que la identificación mediante respuesta de desafío de PAM tiene un
rol equivalente a la identificación por contraseña habitualmente, debería
desactivar challenge-response-authentication?
o
password-authentication?
.
print-last-log?
(predeterminado: #t
)Especifica si sshd
debe imprimir la fecha y hora del último
ingreso al sistema de la usuaria cuando una usuaria ingresa
interactivamente.
subsystems
(predeterminados: '(("sftp" "internal-sftp"))
)Configura subsistemas externos (por ejemplo, el daemon de transmisión de archivos).
Esta es una lista de listas de dos elementos, cada una de las cuales que contienen el nombre del subsistema y una orden (con parámetros opcionales) para ejecutar tras petición del subsistema.
La orden internal-sftp
implementa un servidor SFTP dentro del
mismo proceso. De manera alternativa, se puede especificar la orden
sftp-server
:
(service openssh-service-type
(openssh-configuration
(subsystems
`(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
accepted-environment
(predeterminado: '()
)Una lista de cadenas que describe qué variables de entorno pueden ser exportadas.
Cada cadena obtiene su propia línea. Véase la opción AcceptEnv
en
man sshd_config
.
Este ejemplo permite a clientes ssh exportar la variable COLORTERM
. La
establecen emuladores de terminal que implementan colores. Puede usarla en
su archivo de recursos del shell para permitir colores en la línea de
órdenes y las propias ordenes si esta variable está definida.
(service openssh-service-type
(openssh-configuration
(accepted-environment '("COLORTERM"))))
authorized-keys
(predeterminadas: '()
) ¶Esta es la lista de claves autorizadas. Cada elemento de la lista es un nombre de usuaria seguido de uno o más objetos “tipo-archivo” que representan claves públicas SSH. Por ejemplo:
(openssh-configuration
(authorized-keys
`(("rekado" ,(local-file "rekado.pub"))
("chris" ,(local-file "chris.pub"))
("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))
registra las claves públicas especificadas para las cuentas rekado
,
chris
y root
.
Se pueden especificar claves autorizadas adicionales a través de
service-extension
.
Tenga en cuenta que esto no interfiere con el uso de ~/.ssh/authorized_keys.
generate-host-keys?
(default: #t
)Whether to generate host key pairs with ssh-keygen -A
under
/etc/ssh if there are none.
Generating key pairs takes a few seconds when enough entropy is available and is only done once. You might want to turn it off for instance in a virtual machine that does not need it because host keys are provided in some other way, and where the extra boot time is a problem.
log-level
(predeterminado: 'info
)Es un símbolo que especifica el nivel de detalle en los registros:
quiet
, fatal
, error
, info
, verbose
,
debug
, etc. Véase la página del manual de sshd_config para la
lista completa de los nombres de nivel.
extra-content
(predeterminado: ""
)Este campo puede usarse para agregar un texto arbitrario al archivo de configuración. Es especialmente útil para configuraciones elaboradas que no se puedan expresar de otro modo. Esta configuración, por ejemplo, generalmente desactivaría el ingreso al sistema como root, pero lo permite para una dirección IP específica:
(openssh-configuration
(extra-content "\
Match Address 192.168.0.1
PermitRootLogin yes"))
Ejecuta el daemon
Dropbear SSH con la configuración proporcionada, un objeto
<dropbear-configuration>
.
Por ejemplo, para especificar un servicio Dropbear que escuche en el puerto
1234, añada esta llama al campo services
de su sistema operativo:
(dropbear-service (dropbear-configuration
(port-number 1234)))
Este tipo de datos representa la configuración del daemon Dropbear SSH.
dropbear
(predeterminado: dropbear)El paquete de Dropbear usado.
port-number
(predeterminado: 22)Puerto TCP donde el daemon espera conexiones entrantes.
syslog-output?
(predeterminado: #t
)Determina si se envía la salida a syslog.
pid-file
(predeterminado: "/var/run/dropbear.pid"
)El nombre de archivo del archivo de PID del daemon.
root-login?
(predeterminado: #f
)Si se permite el ingreso al sistema como root
.
allow-empty-passwords?
(predeterminado: #f
)Si se permiten las contraseñas vacías.
password-authentication?
(predeterminado: #t
)Determina si se usará identificación basada en contraseña.
Tipo del servicio para el programa
AutoSSH que ejecuta una copia de
ssh
y la monitoriza, reiniciando la conexión en caso de que se
rompa la conexión o deje de transmitir datos. AutoSSH puede ejecutarse
manualmente en la línea de órdenes proporcionando los parámetros al binario
autossh
del paquete autossh
, pero también se puede ejecutar
como un servicio de Guix. Este último caso de uso se encuentra documentado
aquí.
AutoSSH se puede usar para retransmitir tráfico local a una máquina remota usando un túnel SSH, y respeta el archivo de configuración ~/.ssh/config de la cuenta bajo la que se ejecute.
Por ejemplo, para especificar un servicio que ejecute autossh con la cuenta
pino
y retransmita todas las conexiones locales al puerto 8081
hacia remote:8081
usando un túnel SSH, añada esta llamada al campo
services
del sistema operativo:
(service autossh-service-type
(autossh-configuration
(user "pino")
(ssh-options (list "-T" "-N" "-L" "8081:localhost:8081" "remote.net"))))
Este tipo de datos representa la configuración del servicio AutoSSH.
user
(predeterminado: "autossh"
)La cuenta de usuaria con la cual se ejecuta el servicio AutoSSH. Se asume que existe dicha cuenta.
poll
(predeterminado: 600
)Especifica el tiempo de comprobación de la conexión en segundos.
first-poll
(predeterminado: #f
)Especifica cuantos segundos espera AutoSSH antes de la primera prueba de
conexión. Tras esta primera prueba las comprobaciones se realizan con la
frecuencia definida en poll
. Cuando se proporciona el valor #f
la primera comprobación no se trata de manera especial y también usará el
valor especificado en poll
.
gate-time
(predeterminado: 30
)Especifica cuantos segundos debe estar activa una conexión SSH antes de que se considere satisfactoria.
log-level
(predeterminado: 1
)El nivel de registro, corresponde con los niveles usados por—por lo que
0
es el más silencioso y 7
el que contiene más información.
max-start
(predeterminado: #f
)El número de veces máximo que puede lanzarse (o reiniciarse) SSH antes de
que AutoSSH termine. Cuando se proporciona #f
, no existe un máximo
por lo que AutoSSH puede reiniciar la conexión indefinidamente.
message
(predeterminado: ""
)El mensaje que se añade al mensaje de eco que se envía cuando se prueban las conexiones.
port
(predeterminado: "0"
)Los puertos usados para la monitorización de la conexión. Cuando se
proporciona "0"
, se desactiva la monitorización. Cuando se
proporciona "n"
donde n es un entero positivo, los
puertos n y n+1 se usan para monitorizar la conexión, de tal
modo que el puerto n es el puerto base de monitorización y n+1
es el puerto de eco. Cuando se proporciona "n:m"
donde
n y m son enteros positivos, los puertos n y m se
usan para monitorizar la conexión, de tal modo que n es el puerto base
de monitorización y m es el puerto de eco.
ssh-options
(predeterminados: '()
)Lista de parámetros de línea de órdenes proporcionados a ssh
cuando se ejecuta. Las opciones -f y -M están reservadas
para AutoSSH y pueden causar un comportamiento indefinido.
Tipo para el programa WebSSH que
ejecuta un cliente SSH web. WebSSH puede ejecutarse manualmente en la línea
de órdenes proporcionando los parámetros al binario wssh
del
paquete webssh
, pero también se puede ejecutar como un servicio de
Guix. Este último caso de uso se encuentra documentado aquí.
Por ejemplo, para especificar un servicio que ejecute WebSSH en la interfaz
de red local sobre el puerto 8888
con una política de rechazo
predeterminado con una lista de máquinas a las que se les permite
explícitamente la conexión, y NGINX como pasarela inversa de este servicio a
la escucha de conexiones HTTPS, añada esta llamada al campo services
de su declaración de sistema operativo:
(service webssh-service-type (webssh-configuration (address "127.0.0.1") (port 8888) (policy 'reject) (known-hosts '("localhost ecdsa-sha2-nistp256 AAAA…" "127.0.0.1 ecdsa-sha2-nistp256 AAAA…")))) (service nginx-service-type (nginx-configuration (server-blocks (list (nginx-server-configuration (inherit %webssh-configuration-nginx) (server-name '("webssh.example.com")) (listen '("443 ssl")) (ssl-certificate (letsencrypt-certificate "webssh.example.com")) (ssl-certificate-key (letsencrypt-key "webssh.example.com")) (locations (cons (nginx-location-configuration (uri "/.well-known") (body '("root /var/www;"))) (nginx-server-configuration-locations %webssh-configuration-nginx))))))))
Tipo de datos que representa la configuración para webssh-service
.
package
(predeterminado: webssh)Paquete webssh
usado.
user-name
(predeterminado: "webssh")Nombre o ID de usuaria bajo la cual se efectúan las transferencias desde y hacia el módulo.
group-name
(predeterminado: "webssh")Nombre o ID de grupo que se usa cuando se accede al módulo.
address
(predeterminada: #f)Dirección IP en la que webssh
espera conexiones entrantes.
port
(predeterminado: 8888)Puerto TCP en el que webssh
espera conexiones entrantes.
policy
(predeterminada: #f)Política de conexión. La política reject necesita que se especifique un valor en known-hosts.
known-hosts
(predeterminada: ’())Lista de máquinas a las que se permite realizar conexiones SSH desde
webssh
.
log-file
(predeterminado: "/var/log/webssh.log")Name of the file where webssh
writes its log file.
log-level
(predeterminado: #f)Nivel de registro.
Esta variable contiene una cadena para su uso en /etc/hosts
(see Host Names in The GNU C Library Reference Manual). Cada línea
contiene una entrada que asocia un nombre de servidor conocido del servicio
en línea Facebook—por ejemplo, www.facebook.com
—a la máquina
local—127.0.0.1
o su equivalente IPv6, ::1
.
Esta variable habitualmente se usa en el campo hosts-file
de una
declaración operating-system
(see /etc/hosts):
(use-modules (gnu) (guix)) (operating-system (host-name "micompu") ;; ... (hosts-file ;; Crea un archivo /etc/hosts file con alias para "localhost" ;; y "micompu", así como los servidores de facebook. (plain-file "hosts" (string-append (local-host-aliases host-name) %facebook-host-aliases))))
Este mecanismo puede impedir a los programas que se ejecutan localmente, como navegadores Web, el acceso a Facebook.
El módulo (gnu services avahi)
proporciona la siguiente definición.
Es el servicio que ejecuta avahi-daemon
, un servidor mDNS/DNS-SD a
nivel del sistema que permite el descubrimiento de servicios y la búsqueda
de nombres de máquina “sin configuración” (“zero-configuration”, véase
https://avahi.org/). Su valor debe ser un registro
avahi-configuration
—véase a continuación.
Este servicio extiende el daemon de la caché del servicio de nombres (nscd)
de manera que pueda resolver nombres de máquina .local
mediante el
uso de nss-mds. See Selector de servicios de nombres, para información sobre la resolución
de nombres de máquina.
De manera adicional, añade el paquete avahi al perfil del sistema de
manera que ordenes como avahi-browse
estén disponibles de manera
directa.
Tipo de datos que representa la configuración de Avahi.
host-name
(predeterminado: #f
)Si es diferente de #f
, se usa como el nombre de máquina a publicar
para esta máquina; en otro caso, usa el nombre actual de la máquina.
publish?
(predeterminado: #t
)Cuando es verdadero, permite la publicación (retransmisión) de nombres de máquina y servicios a través de la red.
publish-workstation?
(predeterminado: #t
)Cuando es verdadero, avahi-daemon
publica el nombre de máquina y
la dirección IP a través de mDNS en la red local. Para ver los nombres de
máquina publicados en su red local, puede ejecutar:
avahi-browse _workstation._tcp
wide-area?
(predeterminado: #f
)Cuando es verdadero, se permite DNS-SD sobre DNS unicast.
ipv4?
(predeterminado: #t
)ipv6?
(predeterminado: #t
)Estos campos determinan si usar sockets IPv4/IPv6.
domains-to-browse
(predeterminado: '()
)Esta es la lista de dominios a explorar.
Este es el tipo del servicio Open
vSwitch, cuyo valor debe ser un objeto openvswitch-configuration
.
Tipo de datos que representa la configuración de Open vSwitch, un switch virtual multicapa que está diseñado para permitir una automatización masiva en la red a través de extensión programática.
package
(predeterminado: openvswitch)El objeto paquete de Open vSwitch.
El tipo de servicio para el servicio PageKite,
una solución de encaminado para hacer servidores de la red local visibles
públicamente, incluso detrás de cortafuegos restrictivos o NAT sin
redirección de puertos. El valor para este servicio es un registro
pagekite-configuration
.
Este es un ejemplo que expone los daemon HTTP y SSH locales:
(service pagekite-service-type
(pagekite-configuration
(kites '("http:@kitename:localhost:80:@kitesecret"
"raw/22:@kitename:localhost:22:@kitesecret"))
(extra-file "/etc/pagekite.rc")))
Tipo de datos que representa la configuración de PageKite.
package
(predeterminado: pagekite)El objeto paquete de PageKite.
kitename
(predeterminado: #f
)Nombre de PageKite para la identificación con el servidor de fachada.
kitesecret
(predeterminado: #f
)Secreto compartido para la comunicación con el servidor. Probablemente
debería almacenarlo dentro extra-file
en vez de aquí.
frontend
(predeterminado: #f
)Conecta al servidor de fachada de PageKite con este nombre en vez de al servicio de pagekite.net.
kites
(predeterminados: '("http:@kitename:localhost:80:@kitesecret")
)List of service kites to use. Exposes HTTP on port 80 by default. The
format is proto:kitename:host:port:secret
.
extra-file
(predeterminado: #f
)Archivo adicional de configuración que debe leerse, el cual se espera que sea creado de forma manual. Úselo para añadir opciones adicionales y gestionar secretos compartidos fuera de banda.
The service type for connecting to the Yggdrasil network, an early-stage implementation of a fully end-to-end encrypted IPv6 network.
Yggdrasil provides name-independent routing with cryptographically generated addresses. Static addressing means you can keep the same address as long as you want, even if you move to a new location, or generate a new address (by generating new keys) whenever you want. https://yggdrasil-network.github.io/2018/07/28/addressing.html
Pass it a value of yggdrasil-configuration
to connect it to public
peers and/or local peers.
Here is an example using public peers and a static address. The static
signing and encryption keys are defined in
/etc/yggdrasil-private.conf (the default value for
config-file
).
;; part of the operating-system declaration (service yggdrasil-service-type (yggdrasil-configuration (autoconf? #f) ;; use only the public peers (json-config ;; choose one from ;; https://github.com/yggdrasil-network/public-peers '((peers . #("tcp://1.2.3.4:1337")))) ;; /etc/yggdrasil-private.conf is the default value for config-file ))
# sample content for /etc/yggdrasil-private.conf { # Your public key. Your peers may ask you for this to put # into their AllowedPublicKeys configuration. PublicKey: 64277... # Your private key. DO NOT share this with anyone! PrivateKey: 5c750... }
Data type representing the configuration of Yggdrasil.
package
(default: yggdrasil
)Package object of Yggdrasil.
json-config
(default: '()
)Contents of /etc/yggdrasil.conf. Will be merged with
/etc/yggdrasil-private.conf. Note that these settings are stored in
the Guix store, which is readable to all users. Do not store your
private keys in it. See the output of yggdrasil -genconf
for a
quick overview of valid keys and their default values.
autoconf?
(default: #f
)Whether to use automatic mode. Enabling it makes Yggdrasil use adynamic IP and peer with IPv6 neighbors.
log-level
(predeterminado: 'info
)How much detail to include in logs. Use 'debug
for more detail.
log-to
(default: 'stdout
)Where to send logs. By default, the service logs standard output to
/var/log/yggdrasil.log. The alternative is 'syslog
, which
sends output to the running syslog service.
config-file
(default: "/etc/yggdrasil-private.conf"
)What HJSON file to load sensitive data from. This is where private keys
should be stored, which are necessary to specify if you don’t want a
randomized address after each restart. Use #f
to disable. Options
defined in this file take precedence over json-config
. Use the
output of yggdrasil -genconf
as a starting point. To configure a
static address, delete everything except these options:
EncryptionPublicKey
EncryptionPrivateKey
SigningPublicKey
SigningPrivateKey
The service type for connecting to the IPFS network,
a global, versioned, peer-to-peer file system. Pass it a
ipfs-configuration
to change the ports used for the gateway and API.
Here’s an example configuration, using some non-standard ports:
(service ipfs-service-type
(ipfs-configuration
(gateway "/ip4/127.0.0.1/tcp/8880")
(api "/ip4/127.0.0.1/tcp/8881")))
Data type representing the configuration of IPFS.
package
(default: go-ipfs
)Package object of IPFS.
gateway
(default: "/ip4/127.0.0.1/tcp/8082"
)Address of the gateway, in ‘multiaddress’ format.
api
(default: "/ip4/127.0.0.1/tcp/5001"
)Address of the API endpoint, in ‘multiaddress’ format.
This is the type for the Keepalived
routing software, keepalived
. Its value must be an
keepalived-configuration
record as in this example for master
machine:
(service keepalived-service-type
(keepalived-configuration
(config-file (local-file "keepalived-master.conf"))))
where keepalived-master.conf:
vrrp_instance my-group { state MASTER interface enp9s0 virtual_router_id 100 priority 100 unicast_peer { 10.0.0.2 } virtual_ipaddress { 10.0.0.4/24 } }
and for backup machine:
(service keepalived-service-type
(keepalived-configuration
(config-file (local-file "keepalived-backup.conf"))))
where keepalived-backup.conf:
vrrp_instance my-group { state BACKUP interface enp9s0 virtual_router_id 100 priority 99 unicast_peer { 10.0.0.3 } virtual_ipaddress { 10.0.0.4/24 } }
Next: Actualizaciones no-atendidas, Previous: Networking Setup, Up: Servicios [Contents][Index]