Permitir el inicio de sesión raíz solo desde una dirección IP


14

Tengo centos5.

¿Hay alguna manera de que pueda iniciar sesión en mi servidor vps con un usuario root solo desde una dirección IP particular?

He leído que puedo usar la clave privada para iniciar sesión en sshd. Pero el problema es que estoy usando SFTP para todos mis sitios web y no quiero que los usuarios que no son de TI utilicen las claves para iniciar sesión con SFTP.

O ¿hay alguna manera de que solo el root pueda usar las claves para iniciar sesión en el shell, pero para otros su contraseña normal

centos  root  ssh 

Respuestas:


15

Una mejor manera ahora es usar la palabra clave Match:

Match Host myworkstation
        PermitRootLogin yes

o

Match Address 192.168.1.100
        PermitRootLogin yes

De esa manera, puede dejar PermitRootLogin establecido en 'no', pero aún puede iniciar sesión como root desde su estación de trabajo.

Esto también se puede utilizar, por ejemplo, para permitir que los datos raíz se sincronicen entre dos hosts.


su ejemplo de rsync es exactamente el caso de uso para el que busqué en Google esta pregunta. ¡Gracias! ;)
Jan

Tenga en cuenta que esto solo funciona utilizando el DNS inverso de la dirección IP de origen. (al menos para mí era la única forma)
mveroone

9

En general, es una mejor práctica iniciar sesión como usuario no privilegiado y luego usar 'su -' o 'sudo' para obtener privilegios de root, pero ...

Siempre puede poner la restricción de IP en su clave en ~ root / .ssh / certified_keys:

from="192.168.1.100" ssh-rsa AAAAh9uif...auwehuf== yourkey@yourhost.com

Esto permitiría que ssh use la clave yourkey@yourhost.com solo desde 192.168.1.100.


De acuerdo, aunque eso es más complicado de hacer para cosas como sftp, rsync, sshfs ...
mveroone

3

Utilizar:

PermitRootLogin sin contraseña

En / etc / ssh / sshd_config. Todos los usuarios que excluyan la raíz podrán usar inicios de sesión con contraseña. Root necesita usar las teclas para iniciar sesión.


¿Funcionará esta slution? ¿Has intentado esto

Uso esa configuración en todos los servidores que mantengo. Previene los ataques de fuerza bruta / dict raíz. unixhelp.ed.ac.uk/CGI/man-cgi?sshd_config+5
rubiojr

Sin git pullembargo, esto parece romperse : / etc / ssh / ssh_config: línea 68: opción de configuración incorrecta: permitrootlogin
geoidesic

También PermitRootLogin no aparece enman ssh_config
geoidesic

También se reemplaza fácilmente conssh -o PreferredAuthentications=password
geodésico

2

Edite sshd_config(generalmente en /etc/ssh) y agregue o cambie las siguientes directivas

  PermitRootLogin yes
  AllowUsers root@thehosttoallow

Luego reinicia el demonio

  service ssh restart

Creo que, si el OP quisiera usarlo AllowUsers, necesitaría especificar a todos los usuarios a los que desea tener acceso. Su ejemplo solo permitiría que root se autentique a través de ssh.
EEAA

1
Sí, esto es a propósito. Para permitir que cualquier usuario, de *@thehosttoallowhecho , deje entrar a cualquier usuario.
Ring Ø

También se puede anular fácilmente conssh -o PreferredAuthentications=password
geoidesic

0

Primero, ¿por qué querría evitar que los usuarios usen la autenticación de clave? Eso no tiene sentido.

En segundo lugar, no permita el inicio de sesión raíz a través de ssh. Simplemente no lo hagas, no hay una buena razón para necesitar hacerlo. Va en contra de todas las mejores prácticas, y por una buena razón. Si necesita otorgar permisos para leer / escribir ciertos archivos, debería poder hacerlo a través de los permisos estándar del sistema de archivos de Linux. Si necesita un control de acceso más detallado, busque en el sistema ACL de Linux.


¿Qué sucede si deshabilito el inicio de sesión raíz y ninguno de los usuarios tiene acceso a algún archivo de configuración principal? Entonces estoy bloqueado ya que no puedo iniciar sesión a través de la raíz

1
Cuando deshabilita el inicio de sesión de root a través de ssh, el root aún podrá iniciar sesión a través de la consola. Además, siempre tiene la opción de otorgar a un usuario normal permisos de root-esque a través de sudo. Esto no funcionará para sftp, pero como recuperación en caso de que necesite arreglar las cosas, funcionaría bien y es la forma preferida de otorgar permisos.
EEAA

1
@ErikA Permitir rootdesde un host único no es inseguro. Hubo una tendencia en contra del rootacceso a través de telnetunos años atrás (besore sshera común), pero permitiendo roota través sshde solamente un host no se ve tan insegura.
Anillo Ø

Claro, tal vez sea "seguro", pero aún argumentaré que es una mala idea. Digo esto principalmente debido al hecho de que, cuando se les da a las personas una forma fácil de obtener acceso a la raíz, lo usarán, en lugar de usar una forma más segura y adecuada para obtener acceso (sudo).
EEAA

2
Teniendo en cuenta la pregunta del autor, se puede suponer que quiere realizar tareas administrativas a través del rootusuario. Permitir el rootacceso directo desde un solo host en este caso es una alternativa razonable.
Anillo Ø
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.