reglas sudo basadas en el host con sesión ssh interactiva

reglas sudo basadas en el host con sesión ssh interactiva

Estoy intentando configurarlo sudode tal manera que no tenga que ingresar mi contraseña cuando me conecto desde un rango de IP específico. Intenté esto con la siguiente línea en mi /etc/sudoersarchivo:

%wheel  10.1.2.0/24 = (ALL)   NOPASSWD: ALL

visudoNo da error cuando lo cierro, por lo que la sintaxis es válida. Pero cuando inicio sesión desde un servidor en el 10.1.2.0/24rango de IP con un usuario que está en el grupo Wheel, todavía necesito proporcionar la contraseña de la cuenta:

[cybertinus@server ~]$ id
uid=500(cybertinus) gid=500(cybertinus) groups=500(cybertinus),10(wheel),48(apache)
[cybertinus@server ~]$ who
cybertinus     pts/0        2015-09-30 09:57 (10.1.2.3)
cybertinus     pts/1        2015-09-30 13:03 (10.1.2.3)
[cybertinus@server ~]$ sudo -i
[sudo] password for cybertinus:

Sin embargo, lo que sí noté es que se agrega la siguiente línea a mi /var/log/securecuando ingreso una contraseña incorrecta en este mensaje:

Sep 30 13:04:31 server sudo: pam_unix(sudo-i:auth): authentication failure; logname=cybertinus uid=500 euid=0 tty=/dev/pts/1 ruser=cybertinus rhost=  user=cybertinus

rhost=esta vacio. Entonces, mi teoría es que sudo no transfiere el host remoto desde la sesión ssh. ¿Hay alguna manera de saber desde qué host se está ejecutando esta sesión sudointeractiva ?ssh

Sé que esto es un riesgo para la seguridad. Pero el rango de IP en cuestión es el rango de IP que uso en mi red VPN. En otras palabras: no está conectado a Internet directamente. Si un hacker entra en mi red VPN, tengo otro problema ;).

Para que pueda obtener una imagen completa, este es mi /etc/sudoersarchivo completo:

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
##
## This file must be edited with the 'visudo' command.

## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2

## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem


## Command Aliases
## These are groups of related commands...

## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##  user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)   ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  10.1.2.3=(ALL)   NOPASSWD: ALL
%wheel  ALL=(ALL)   ALL

## Same thing without a password
# %wheel    ALL=(ALL)   NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

Verás una referencia al /etc/sudoers.dfinal. Este es el contenido de ese directorio:

[root@server ~]# ls /etc/sudoers.d | wc -l
0

En otras palabras: /etc/sudoers.dno hay nada que pueda anular el /etc/sudoersarchivo normal.

Respuesta1

La función de lista de hosts sudoverifica/coincide con los nombres de host, direcciones IP, números de red y grupos de red del host en el que sudose ejecuta, no los de un host remoto.

La idea es que un único archivo universal sudoersse pueda distribuir a una gran cantidad de servidores/estaciones de trabajo y ciertos privilegios solo se otorguen a los usuarios en un subconjunto de sistemas.

Consulte la sección EJEMPLOS en la parte inferior delmanual

# /etc/sudoers
# Runas alias specification
Runas_Alias OP = root, operator

# Host alias specification
Host_Alias  SPARC = bigtime, eclipse, moet, anchor :\
        SGI = grolsch, dandelion, black :\
        ALPHA = widget, thalamus, foobar :\
        HPPA = boa, nag, python
Host_Alias  CUNETS = 128.138.0.0/255.255.0.0
Host_Alias  CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias  SERVERS = master, mail, www, ns

# example users
jack        CSNETS = ALL
jen         ALL, !SERVERS = ALL 
bob         SPARC = (OP) ALL : SGI = (OP) ALL

El conector de usuario puede ejecutar cualquier comando en las máquinas en el alias CSNETS (las redes 128.138.243.0, 128.138.204.0 y 128.138.242.0). De esas redes, sólo 128.138.204.0 tiene una máscara de red explícita (en notación CIDR) que indica que es una red de clase C. Para las otras redes en CSNETS, se utilizará la máscara de red de la máquina local durante la comparación.

El usuario bob puede ejecutar cualquier cosa en las máquinas SPARC y SGI como cualquier usuario enumerado en OP Runas_Alias ​​(raíz y operador).

El usuario jen podrá ejecutar cualquier comando en cualquier máquina excepto en los SERVIDORES Host_Alias ​​(master, mail, www y ns).

información relacionada