Diferencia entre revisiones de «Recomendaciones de Seguridad»

De MoodleDocs
m (tidy up)
(update as English Docs)
 
(No se muestran 21 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
{{Pendiente de traducir}}
{{Seguridad}}
{{Seguridad}}


Todo el ''software'' de aplicación web es altamente complejo, y en todas las aplicaciones se encuentran ocasionalmente aspectos relacionados con la seguridad, que por lo general implican alguna combinación de entrada que los programadores no anticiparon. Desde el proyecto Moodle tomamos en serio la seguridad, y estamos continuamente mejorando el programa para cerrar cada agujero tan pronto como lo encontramos.
Todo el ''software'' de aplicación web es altamente complejo, y en todas las aplicaciones se encuentran ocasionalmente aspectos relacionados con la seguridad, que por lo general implican alguna combinación de entrada (escritura de datos)  que los programadores no anticiparon. En el proyecto Moodle tomamos en serio la seguridad, y estamos continuamente mejorando Moodle para cerrar cada agujero tan pronto como lo encontramos.


==Introducción==
==Introducción==
*Usted encontrará en este artículo importantes medidas de seguridad para su instalación de Moodle.
*Esta página contiene importantes medidas de seguridad para su instalación de Moodle.
*Usted debería informar sobre problemas de seguridad directamente a http://security.moodle.org - dado que en cualquier otro lugar los desarrolladores podrían pasarlos por alto. Por otra parte, con el fin de prevenir ataques, los desarrolladores no deberían hacer públicos los problemas hasta que estuvieran resueltos.
*Usted debería informar sobre problemas de seguridad directamente a http://security.moodle.org - dado que en cualquier otro lugar los desarrolladores podrían pasarlos por alto. Por otra parte, con el fin de prevenir ataques, los desarrolladores no deberían hacer públicos los problemas hasta que estuvieran resueltos.
*Por idénticas razones, usted no debería publicar los ''exploits'' (i.e., códigos escritos con el fin de aprovechar un error de programación para obtener privilegios) ni en el rastreador de errores (''bugs'') ni en los foros.
*Por idénticas razones, usted no debería publicar los ''exploits'' (i.e., códigos escritos con el fin de aprovechar un error de programación para obtener privilegios) ni en el rastreador de errores (''bugs'') ni en los foros.


==Medidas de seguridad simples==
==Medidas de seguridad simples==
*¡La mejor estrategia de seguridad es una buena copia de seguridad ([[Respaldo]])! Pero su copia de seguridad no será buena a menos que pueda restaurarla. ¡Compruebe sus procedimientos de [[Restauración]]!
*¡La mejor estrategia de seguridad es una buena copia de seguridad ([[Respaldo]]) ! Pero su copia de seguridad no será buena a menos que pueda restaurarla. ¡Compruebe sus procedimientos de [[Restauración]] !
*Cargue únicamente el software o los servicios que vaya a usar.
*Cargue únicamente el software o los servicios que vaya a usar.
*[[Actualización| Actualícese]] con regularidad.
*[[Actualización| Actualícese]] con regularidad.
*Diseñe su seguridad en diferentes capas (exterior, intermedia e interior como mínimo) como se abrigaría un día frío de invierno superponiendo diferentes prendas de ropa.
*Diseñe su seguridad en diferentes capas (exterior, intermedia e interior como mínimo) como se abrigaría en un día frío de invierno, superponiendo diferentes prendas de ropa.


==Recomendaciones básicas==
==Recomendaciones básicas==
*[[Actualización de moodle| Actualice]] Moodle regularmente en cada lanzamiento/versión.
*[[Actualización de moodle| Actualice]] Moodle regularmente en cada lanzamiento/versión.
:Los agujeros de seguridad publicados atraen la atención de los ''crakers'' después del lanzamiento. Cuanto más antigua sea la versión, tanto más probable es que sea vulnerable.
:Los agujeros de seguridad publicados atraen la atención de los ''crakers'' después del lanzamiento. Cuanto más antigua sea la versión, tanto más probable es que tenga vulnerabilidades.
*'''Desactive Register globals (Registros globales).'''
*'''Desactive''' ''[[admin/environment/custom check/php_check_register_globals | Register globals]]'' (Registros globales).  
:Esto ayudará a prevenir contra posibles problemas XSS en ''scripts'' de terceras partes.
:Esto ayudará a prevenir contra posibles problemas XSS en ''scripts'' de terceros.
*Use [[Políticas del sitio#Política_de_contraseñas| Contraseñas]] complejas para el administrador y los profesores.
*Use [[Políticas del sitio#Política_de_contraseñas| Contraseñas]] complejas seguras para el administrador y los profesores.
:Elegir contraseñas "difíciles" es una práctica de seguridad básica para proteger contra el ''cracking'' por "fuerza bruta" de las cuentas.
:Elegir contraseñas "difíciles" es una práctica de seguridad básica para proteger contra el ''cracking'' por "fuerza bruta" de las cuentas.
*Abra cuentas de profesor únicamente a usuarios dignos de confianza. Evite crear cajas de arena (''sandboxes'') públicas con cuentas gratuitas de profesor en servidores de producción.
*Proporcione cuentas de profesor únicamente a usuarios dignos de confianza. Evite crear cajas de arena (''sandboxes'') públicas con cuentas gratuitas de profesor en servidores de producción.
:Las cuentas de profesor tienen permisos mucho más libres y es más fácil crear situaciones donde es posible abusar de los datos o robarlos.
:Las cuentas de profesor tienen permisos mucho más libres y es más fácil crear situaciones donde sea posible abusar de los datos o robarlos.
*Separe sus sistemas todo lo que le sea posible
*Separe sus sistemas todo lo que le sea posible
:Otra técnica básica de seguridad es usar diferentes contraseñas en diferentes sistemas, usar diversas máquinas para diversos servicios, etc.  Esto impedirá que el daño se extienda incluso si una cuenta o un servidor son atacados.
:Otra técnica básica de seguridad es usar diferentes contraseñas en diferentes sistemas, usar diversas máquinas para diversos servicios, etc.  Esto impedirá que el daño se extienda, incluso si una cuenta o un servidor son atacados.


==Ejecute [[Actualización_de_moodle|actualizaciones]] regulares==
==Ejecute [[Actualización_de_moodle|actualizaciones]] regulares==
Línea 31: Línea 30:
*Windows Update  
*Windows Update  
*Linux: up2date, yum, apt-get
*Linux: up2date, yum, apt-get
:Considere automatizar las actualizaciones mediante un ''scritp'' programado vía ''cron''
:Considere automatizar las actualizaciones mediante un ''scritp'' programado vía ''[[Cron|cron]]''
*Sistema de actualización Mac OSX
*Sistema de actualización Mac OSX
*Manténgase al día en php, apache y moodle
*Manténgase actualizado en php, apache y moodle


==Utilice listas de correo para mantenerse actualizado==
==Utilice listas de correo para mantenerse actualizado==
Línea 40: Línea 39:
*MySQL - http://lists.mysql.com - suscríbase a ''MySQL Announcements''
*MySQL - http://lists.mysql.com - suscríbase a ''MySQL Announcements''


==Cortafuegos==
==Cortafuegos (''firewall'')==
*Los expertos en seguridad recomiendan un cortafuegos dual
*Los expertos en seguridad recomiendan un [https://es.wikipedia.org/wiki/Cortafuegos_(inform%C3%A1tica) cortafuegos (''firewall'')]] dual
:Existen diferentes combinaciones ''hardware/software''
:Existen diferentes combinaciones ''hardware/software''
*Desactivar servicios no usados es a menudo tan efectivo como un cortafuegos
*El desactivar servicios no usados es a menudo tan efectivo como un cortafuegos
:Use netstat -a para revisar puertos de red abiertos
:Use netstat -a para revisar puertos de red abiertos
*No es una garantía de protección
*No es una garantía de protección
Línea 49: Línea 48:
:80, 443(ssl), y 9111 (para el chat),  
:80, 443(ssl), y 9111 (para el chat),  
:Admin remoto: ssh 22, o rpd 3389
:Admin remoto: ssh 22, o rpd 3389
==[[Políticas_del_sitio#Política_de_contraseñas | Política de contraseñas]]==
Se puede configurar una política para contraseñas en '' Configuraciones > Administración del sitio > Seguridad > [[Políticas del sitio]]''.
Hay una casilla seleccionable para determinar si debe hacerse obligatoria la complejidad de las contraseñas; la opción para configurar la longitud mínima de la contraseña, el número mínimo de dígitos, el número mínimo de letras minúsculas y MAYÚSCULAS y el número mínimo de caracteres especiales no-alfa-numéricos (como $, %, &, ...).
Si un usuario escribe una contraseña que no reune estos requisitos, les aparece un mensaje de error que les indica la naturaleza del problema con la contraseña que escribieron.
El hacer obligatorias las contraseñas complejas, junto con exigirles a los usuarios que cambien su contraseña inicial, ayuda mucho para asegurarse de que en realidad los usuarios elijan y usen "buenas contraseñas".
Sin embargo, si se les piden contraseñas demasiado complicadas, lo que resulta es que las escriben en un papelito, por lo que hay que ser realista.
{{Nota|Una opción interesante es mostrarle a los usuarios cómo construir contraseñas fáciles de recordar; del estilo, por ejemplo, de '''Los3Cochinito$''', que tiene un dígito, dos mayúsculas y un caracter especial ($).}}


==Esté preparado para lo peor==
==Esté preparado para lo peor==
*Tenga copias de seguridad disponibles  
*Tenga copias de seguridad disponibles  
*Practique con antelación procedimientos de recuperación
*Practique con antelación procedimientos de [[Recuperación_de_un_sitio_hackeado |recuperación]]
*Utilice regularmente un detector ''rootkit''
*Utilice regularmente un detector ''rootkit''
**Linux/MacOSX - http://www.chkrootkit.org/  
**Linux/MacOSX - http://www.chkrootkit.org/  
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx


==Alertas de seguridad de Moodle==
==Alertas de seguridad de Moodle==
*Registre su sitio en Moodle.org
*[[Registro_del_sitio| Registre]] su sitio en Moodle.org
:Los usuarios registrados recibirán alertas por correo electrónico
:Los usuarios registrados recibirán alertas por correo electrónico
*Las alertas de seguridad se pondrán también en línea
*Las alertas de seguridad se pondrán también en línea
Línea 66: Línea 81:
==Otras consideraciones==
==Otras consideraciones==
He aquí algunas otras otras consideraciones que favorecen su seguridad general:
He aquí algunas otras otras consideraciones que favorecen su seguridad general:
*Desactive ''opentogoogle'', especialmente en sitios K12
* Use la configuración de formularios (formatos) seguros (''secure forms'')
*Utilice SSL, httpslogins=yes
* Siempre configure una contraseña para el usuario '''root''' en [[MySQL]]
*Desactive el acceso de invitados
* Desactive el acceso por red a [[MySQL]]
*Incluya claves de matriculación en todos los cursos
* Utilice SSL, httpslogins=yes
*Utilice buenas contraseñas
*Utilice buenas [[Políticas_del_sitio#Política_de_contraseñas | contraseñas]]; Configure una [[Políticas_del_sitio#Política_de_contraseñas | Política de contraseñas]] en '' Configuraciones > Administración del sitio > Seguridad > [[Políticas del sitio]]''.
*Utilice el ajuste de formularios seguros
* Desactive ''opentogoogle'', especialmente en sitios K12, en '' Configuraciones > Administración del sitio > Seguridad > [[Políticas del sitio]]''.
*Ajuste la contraseña de usuario ''root'' en mysql
* Desactive el acceso de [[Invitado | invitados]]
*Desactive el acceso de red mysql
* Incluya clave de matriculación ([[Clave de inscripción]]) en todos los cursos, o configure todos los cursos a No Matriculables (No Inscribibles)
* Asegúrese de que esté deshabilitada la [[Clave_de_inscripci%C3%B3n#Darle_a_los_usuarios_una_pista_de_la_clave_de_inscripci.C3.B3n| pista para la clave]] de matriculación (inscripción), lo que debería de estar así por defecto, en '' Administración > Políticas del sitio > Plugins > Inscripción > Auto inscripción ''.
 
==Permisos de archivo más seguros/paranoides==


==Permisos de archivo más seguros/''paranoides''==
'''Nota''': <u>La información siguiente aplica solamente para instalaciones basadas en Linux/Unix, ya que el sistema de permisos en MS Windows es bastante diferente</u>.
Suponiendo que ejecute el programa en un servidor sellado (i.e., en la máquina no se permiten entradas a usuarios) y que el ''root'' cuida de las modificaciones tanto del código de Moodle como de la configuración de Moodle (config.php), los siguientes son los permisos más restrictivos en los que podemos pensar:
 
Dependiendo de la configuración de su servidor, hay dos diferentes escenarios:
# Usted está corriendo Moodle en su propio servidor dedicado.
# Usted está corriendo Moodle en un ambiente de alojamiento compartido.
 
En la sección inferior, a Usted se le pedirá que use la cuenta y grupo para usuario de servicio web para configurar los permisos, por lo que necesitará saberlos. Esto puede variar bastante de un servidor a otro, pero si esta característica no ha sido deshabilitada en su servidor, Usted puede ir a http://your.moodle.site/admin/phpinfo.php (ingresando como administrador), y entonces buscar la línea que diga 'User/Group', dentro de la tabla 'apache'. Por ejemplo, yo tengo  'www-data' para la cuenta de usuario y 'www-data' también para el grupo.
 
===Corriendo Moodle en un servidor dedicado===
Suponiendo que ejecute el programa en un servidor sellado (por ejemplo, en la máquina no se permiten entradas a usuarios) y que el ''root'' cuida de las modificaciones tanto del código de Moodle como de la configuración de Moodle (config.php), los siguientes son los permisos más restrictivos en los que podemos pensar:


1. directorio moodledata y todo su contenido (y subdirectorios, incluyendo sesiones):
1. directorio moodledata y todo su contenido (y subdirectorios, incluyendo sesiones):
  owner: apache user (apache, httpd, www-data, whatever)
  owner: apache user (apache, httpd, www-data, lo_que_sea)
  group: apache group (apache, httpd, www-data, whatever)
  group: apache group (apache, httpd, www-data, lo_que_sea)
  perms: 700 en directorios, 600 en archivos
  perms: 700 en directorios, 600 en archivos


Línea 93: Línea 119:
  perms: 750 en directorios, 640 en archivos
  perms: 750 en directorios, 640 en archivos


Considere estos permisos como los más ''paranoides''. Debería tener suficiente seguridad con permisos menos restrictivos, tanto el directorio de moodle como en el de moodledata (junto con todos sus subdirectorios).
Considere estos permisos como los más paranoides. Debería estar suficientemente seguro con permisos menos restrictivos, tanto en el directorio de moodle como en el de moodledata (junto con todos sus subdirectorios).
 
==Vea también==
* Foro de discusión ''Using Moodle'' [http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
* [https://docs.moodle.org/24/en/Why_porn_spam_has_been_appearing_in_Moodle_sites https://docs.moodle.org/24/en/Why_porn_spam_has_been_appearing_in_Moodle_sites]
 
 
{{Moodle 2.x}}
==Original en inglés para traducir==
All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.
 
 
==Introduction==
*This page contains important security measures for your Moodle installation.
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).
 
==Simple security measures==
*The best security strategy is a good backup! But you don't have a good backup unless you are able to restore it. Test your restoration procedures!
*Load only software or services you will use
*Perform regular updates
*Model your security after the layers of clothing you wear on a cold winter day
 
==Basic recommendations==
*Update Moodle regularly on each release
:Published security holes draw crackers attention after release. The older the version, the more vulnerabilities it is likely to contain.
*Register globals '''MUST''' be disabled!
:This will help prevent against possible XSS problems in third-party scripts.
*Use strong passwords for admin and teachers
:Choosing "difficult" passwords is a basic security practice to protect against "brute force" cracking of accounts.
*Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.
:Teacher accounts have much freer permissions and it is easier to create situations where data can be abused or stolen.
*Separate your systems as much as possible
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.
 
==Run regular updates==
*Use auto update systems
*Windows Update
*Linux: up2date, yum, apt-get
:Consider automating updates with a script scheduled via cron
*Mac OSX update system
*Stay current with php, apache, and moodle
 
==Use mailing lists to stay updated==
*CERT - http://www.us-cert.gov/cas/signup.html
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements
 
==Firewalls==
*Security experts recommend a dual firewall
:Differing hardware/software combinations
*Disabling unused services is often as effective as a firewall
:Use netstat -a to review open network ports
*Not a guarantee of protection
*Allow ports
:80, 443(ssl), and 9111 (for chat),
:Remote admin: ssh 22, or rdp 3389
 
==Password policy==
 
A password policy may be set up in ''Settings > Site administration > Security > [[Políticas del sitio]]''.
 
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.
 
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.
 
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using "good passwords".
 
However, making the check too onerous just results in them writing it down so be realistic.
 
==Password salting==
 
User passwords are stored as MD5 hashes in the database. It is relatively easy to derive original simple password from simple hash, this can be prevented by setting up password salt. See [[Password salting]] for more details.
 
==Be prepared for the worst==
*Have backups ready
*Practice recovery procedures ahead of time
*Use a rootkit detector on a regular basis
**Linux/MacOSX - http://www.chkrootkit.org/
**Windows - http://www.sysinternals.com/Utilities/RootkitRevealer.html


==Moodle security alerts==
=== Corriendo Moodle en un ambiente de alojamiento compartido ===
*Register your site with Moodle.org
Si Usted está corriendo Moodle en un ambiente de alojamiento compartido ('' shared hosting environment ''), entonces los permisos arriba descritos probablemente estén mal. Si Usted configura 700 como el permiso para los directorios, y 600 para los archivos, Usted probablemente le esté negando al usuario de la cuenta de servicio web  el acceso a sus directorios y archivos.
:Registered users receive email alerts
*Security alerts also posted online
*Web - http://moodle.org/security
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml


==Miscellaneous considerations==
Si Usted quiere aligerar sus permisos tanto como sea posible, Usted necesitará saber:
These are all things you might consider that impact your overall security:
*Use the secure forms setting
*Always set a mysql root user password
*Turn off mysql network access
*Use SSL, httpslogins=yes
*Use good passwords - set up a password policy in ''Settings > Site administration > Security > [[Políticas del sitio]]''
*Do not enable the ''opentogoogle'' setting (in ''Settings > Site administration > Security > [[Políticas del sitio]]'')
*Disable guest access
*Place enrollment keys on all courses or set Course Enrollable = No for all courses
*Ensure the enrolment key hint is disabled (which it is by default) in ''Settings>Site Administration>Plugins>Enrolments>Self enrolment.''


# la cuenta de usuario y el grupo en donde está corriendo el servicio web (vea debajo).
# el propietario de los directorios/archivos, tanto de moodledata como del directorio moodle (esto normalmente sería la cuenta de usuario de su cliente), y el grupo de los directorios/archivos. Usted generalmente puede obtener esta información del gestor de archivos de su panel de control de su servicio de alojamiento (''hosting''). Vaya a la carpeta moodle y elija cualquier directorio o archivo y trate de ver/cambiar los permisos, el propietario y el grupo de dicho archivo. Esto normalmente mostraría los permisos actuales, el propietario y el grupo. Haga lo mismo para el directorio moodledata.


==Most secure/paranoid file permissions==
Entonces, dependiendo de los siguientes escenarios, Usted debería de usar un conjunto diferente de permisos (enlistados en orden del más seguro al menos seguro) para su directorio moodledata:


'''Note''': <u>The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different</u>.
# si la cuenta del servicio web y el propietario de los directorios/archivos es el mismo, Usted debería de usar 700 para directorios y 600 para archivos.
# si no es alguno de los arriba descritos, Usted necesitará usar 777 para directorios y 666 para archivos, lo que es menos seguro pero es su única opción. 707 y 606 serían más seguros, pero podrían o no trabajar, dependiendo de su configuración particular.


Depending on your server setup there are two different scenarios:
De hecho, Usted solamente necesita configurar en moodledata los permisos arriba especificados, dado que todos los directorios y archivos adentro son creados por el servicio web mismo, y tendrán los permisos correctos.
# You are running Moodle on your own dedicated server.
# You are running Moodle on a shared hosting environment.


In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to http://your.moodle.site/admin/phpinfo.php (logging in as admin), and then search for the line that reads 'User/Group', inside the 'apache' table. For example, I get 'www-data' for the user account and 'www-data' for the group too.
Con respecto al directorio moodle, en tanto que la cuenta del usuario del servicio web pueda leer los archivos y además leer y ejecutar los directorios, eso debería de ser suficiente. No hay necesidad de otorgar permisos de escritura a la cuenta/grupo de servicio web en cualquiera de los archivos o subdirectorios. La única desventaja de esto es que Usted necesitará crear el archivo config.php a mano durante el proceso de instalación, dado que Moodle no podrá crearlo. Pero esto no debería de ser un gran problema.
 
=== Running Moodle on a dedicated server ===
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:
 
1. moodledata directory and all of its contents (and subdirectories, includes sessions):
owner: apache user (apache, httpd, www-data, whatever; see above)
group: apache group (apache, httpd, www-data, whatever; see above)
permissions: 700 on directories, 600 on files
 
2. moodle directory and all of its contents and subdirectories (including config.php):
owner: root
group: root
permissions: 755 on directories, 644 on files.
 
If you allow local logins for regular users, then 2. should be:
owner: root
group: apache group (apache, httpd, www-data, whatever; see above)
permissions: 750 on directories, 640 on files.
 
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).
 
=== Running Moodle on a shared hosting environment ===
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.
 
If you want to tighten your permissions as much as possible, you will need to know:
 
# the user account and the group the web service is running under (see above).
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.
 
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:
 
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.
 
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.
 
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.


==Vea también==
==Vea también==


*[https://docs.moodle.org/24/en/Security_FAQ Security FAQ]
*[[Seguridad FAQ]]
*[https://moodle.com/news/top-security-tips-for-moodle-administrators/ Top security tips for Moodle administrators article]
Using Moodle forum discussions:
Using Moodle forum discussions:
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery
* [https://docs.moodle.org/24/en/Why_porn_spam_has_been_appearing_in_Moodle_sites https://docs.moodle.org/24/en/Why_porn_spam_has_been_appearing_in_Moodle_sites]


[[en:Security recommendations]]
[[en:Security recommendations]]
[[fr:Sécurité]]
[[fr:Sécurité]]

Revisión actual - 23:11 20 may 2021


Todo el software de aplicación web es altamente complejo, y en todas las aplicaciones se encuentran ocasionalmente aspectos relacionados con la seguridad, que por lo general implican alguna combinación de entrada (escritura de datos) que los programadores no anticiparon. En el proyecto Moodle tomamos en serio la seguridad, y estamos continuamente mejorando Moodle para cerrar cada agujero tan pronto como lo encontramos.

Introducción

  • Esta página contiene importantes medidas de seguridad para su instalación de Moodle.
  • Usted debería informar sobre problemas de seguridad directamente a http://security.moodle.org - dado que en cualquier otro lugar los desarrolladores podrían pasarlos por alto. Por otra parte, con el fin de prevenir ataques, los desarrolladores no deberían hacer públicos los problemas hasta que estuvieran resueltos.
  • Por idénticas razones, usted no debería publicar los exploits (i.e., códigos escritos con el fin de aprovechar un error de programación para obtener privilegios) ni en el rastreador de errores (bugs) ni en los foros.

Medidas de seguridad simples

  • ¡La mejor estrategia de seguridad es una buena copia de seguridad (Respaldo) ! Pero su copia de seguridad no será buena a menos que pueda restaurarla. ¡Compruebe sus procedimientos de Restauración !
  • Cargue únicamente el software o los servicios que vaya a usar.
  • Actualícese con regularidad.
  • Diseñe su seguridad en diferentes capas (exterior, intermedia e interior como mínimo) como se abrigaría en un día frío de invierno, superponiendo diferentes prendas de ropa.

Recomendaciones básicas

  • Actualice Moodle regularmente en cada lanzamiento/versión.
Los agujeros de seguridad publicados atraen la atención de los crakers después del lanzamiento. Cuanto más antigua sea la versión, tanto más probable es que tenga vulnerabilidades.
Esto ayudará a prevenir contra posibles problemas XSS en scripts de terceros.
  • Use Contraseñas complejas seguras para el administrador y los profesores.
Elegir contraseñas "difíciles" es una práctica de seguridad básica para proteger contra el cracking por "fuerza bruta" de las cuentas.
  • Proporcione cuentas de profesor únicamente a usuarios dignos de confianza. Evite crear cajas de arena (sandboxes) públicas con cuentas gratuitas de profesor en servidores de producción.
Las cuentas de profesor tienen permisos mucho más libres y es más fácil crear situaciones donde sea posible abusar de los datos o robarlos.
  • Separe sus sistemas todo lo que le sea posible
Otra técnica básica de seguridad es usar diferentes contraseñas en diferentes sistemas, usar diversas máquinas para diversos servicios, etc. Esto impedirá que el daño se extienda, incluso si una cuenta o un servidor son atacados.

Ejecute actualizaciones regulares

  • Utilice sistemas de actualización automática
  • Windows Update
  • Linux: up2date, yum, apt-get
Considere automatizar las actualizaciones mediante un scritp programado vía cron
  • Sistema de actualización Mac OSX
  • Manténgase actualizado en php, apache y moodle

Utilice listas de correo para mantenerse actualizado

Cortafuegos (firewall)

Existen diferentes combinaciones hardware/software
  • El desactivar servicios no usados es a menudo tan efectivo como un cortafuegos
Use netstat -a para revisar puertos de red abiertos
  • No es una garantía de protección
  • Permita los puertos
80, 443(ssl), y 9111 (para el chat),
Admin remoto: ssh 22, o rpd 3389


Política de contraseñas

Se puede configurar una política para contraseñas en Configuraciones > Administración del sitio > Seguridad > Políticas del sitio.

Hay una casilla seleccionable para determinar si debe hacerse obligatoria la complejidad de las contraseñas; la opción para configurar la longitud mínima de la contraseña, el número mínimo de dígitos, el número mínimo de letras minúsculas y MAYÚSCULAS y el número mínimo de caracteres especiales no-alfa-numéricos (como $, %, &, ...).

Si un usuario escribe una contraseña que no reune estos requisitos, les aparece un mensaje de error que les indica la naturaleza del problema con la contraseña que escribieron.

El hacer obligatorias las contraseñas complejas, junto con exigirles a los usuarios que cambien su contraseña inicial, ayuda mucho para asegurarse de que en realidad los usuarios elijan y usen "buenas contraseñas".

Sin embargo, si se les piden contraseñas demasiado complicadas, lo que resulta es que las escriben en un papelito, por lo que hay que ser realista.

Nota: Una opción interesante es mostrarle a los usuarios cómo construir contraseñas fáciles de recordar; del estilo, por ejemplo, de Los3Cochinito$, que tiene un dígito, dos mayúsculas y un caracter especial ($).


Esté preparado para lo peor

Alertas de seguridad de Moodle

Los usuarios registrados recibirán alertas por correo electrónico

Otras consideraciones

He aquí algunas otras otras consideraciones que favorecen su seguridad general:

  • Use la configuración de formularios (formatos) seguros (secure forms)
  • Siempre configure una contraseña para el usuario root en MySQL
  • Desactive el acceso por red a MySQL
  • Utilice SSL, httpslogins=yes
  • Utilice buenas contraseñas; Configure una Política de contraseñas en Configuraciones > Administración del sitio > Seguridad > Políticas del sitio.
  • Desactive opentogoogle, especialmente en sitios K12, en Configuraciones > Administración del sitio > Seguridad > Políticas del sitio.
  • Desactive el acceso de invitados
  • Incluya clave de matriculación (Clave de inscripción) en todos los cursos, o configure todos los cursos a No Matriculables (No Inscribibles)
  • Asegúrese de que esté deshabilitada la pista para la clave de matriculación (inscripción), lo que debería de estar así por defecto, en Administración > Políticas del sitio > Plugins > Inscripción > Auto inscripción .

Permisos de archivo más seguros/paranoides

Nota: La información siguiente aplica solamente para instalaciones basadas en Linux/Unix, ya que el sistema de permisos en MS Windows es bastante diferente.

Dependiendo de la configuración de su servidor, hay dos diferentes escenarios:

  1. Usted está corriendo Moodle en su propio servidor dedicado.
  2. Usted está corriendo Moodle en un ambiente de alojamiento compartido.

En la sección inferior, a Usted se le pedirá que use la cuenta y grupo para usuario de servicio web para configurar los permisos, por lo que necesitará saberlos. Esto puede variar bastante de un servidor a otro, pero si esta característica no ha sido deshabilitada en su servidor, Usted puede ir a http://your.moodle.site/admin/phpinfo.php (ingresando como administrador), y entonces buscar la línea que diga 'User/Group', dentro de la tabla 'apache'. Por ejemplo, yo tengo 'www-data' para la cuenta de usuario y 'www-data' también para el grupo.

Corriendo Moodle en un servidor dedicado

Suponiendo que ejecute el programa en un servidor sellado (por ejemplo, en la máquina no se permiten entradas a usuarios) y que el root cuida de las modificaciones tanto del código de Moodle como de la configuración de Moodle (config.php), los siguientes son los permisos más restrictivos en los que podemos pensar:

1. directorio moodledata y todo su contenido (y subdirectorios, incluyendo sesiones):

owner: apache user (apache, httpd, www-data, lo_que_sea)
group: apache group (apache, httpd, www-data, lo_que_sea)
perms: 700 en directorios, 600 en archivos

2. directorio moodle y todo su contenido y subdirectorios (incluyendo config.php):

owner: root
group: root
perms: 755 en directorios, 644 en archivos.

Si usted permite entradas (logins) locales, entonces 2. debería ser:

owner: root
group: apache group
perms: 750 en directorios, 640 en archivos

Considere estos permisos como los más paranoides. Debería estar suficientemente seguro con permisos menos restrictivos, tanto en el directorio de moodle como en el de moodledata (junto con todos sus subdirectorios).

Corriendo Moodle en un ambiente de alojamiento compartido

Si Usted está corriendo Moodle en un ambiente de alojamiento compartido ( shared hosting environment ), entonces los permisos arriba descritos probablemente estén mal. Si Usted configura 700 como el permiso para los directorios, y 600 para los archivos, Usted probablemente le esté negando al usuario de la cuenta de servicio web el acceso a sus directorios y archivos.

Si Usted quiere aligerar sus permisos tanto como sea posible, Usted necesitará saber:

  1. la cuenta de usuario y el grupo en donde está corriendo el servicio web (vea debajo).
  2. el propietario de los directorios/archivos, tanto de moodledata como del directorio moodle (esto normalmente sería la cuenta de usuario de su cliente), y el grupo de los directorios/archivos. Usted generalmente puede obtener esta información del gestor de archivos de su panel de control de su servicio de alojamiento (hosting). Vaya a la carpeta moodle y elija cualquier directorio o archivo y trate de ver/cambiar los permisos, el propietario y el grupo de dicho archivo. Esto normalmente mostraría los permisos actuales, el propietario y el grupo. Haga lo mismo para el directorio moodledata.

Entonces, dependiendo de los siguientes escenarios, Usted debería de usar un conjunto diferente de permisos (enlistados en orden del más seguro al menos seguro) para su directorio moodledata:

  1. si la cuenta del servicio web y el propietario de los directorios/archivos es el mismo, Usted debería de usar 700 para directorios y 600 para archivos.
  2. si no es alguno de los arriba descritos, Usted necesitará usar 777 para directorios y 666 para archivos, lo que es menos seguro pero es su única opción. 707 y 606 serían más seguros, pero podrían o no trabajar, dependiendo de su configuración particular.

De hecho, Usted solamente necesita configurar en moodledata los permisos arriba especificados, dado que todos los directorios y archivos adentro son creados por el servicio web mismo, y tendrán los permisos correctos.

Con respecto al directorio moodle, en tanto que la cuenta del usuario del servicio web pueda leer los archivos y además leer y ejecutar los directorios, eso debería de ser suficiente. No hay necesidad de otorgar permisos de escritura a la cuenta/grupo de servicio web en cualquiera de los archivos o subdirectorios. La única desventaja de esto es que Usted necesitará crear el archivo config.php a mano durante el proceso de instalación, dado que Moodle no podrá crearlo. Pero esto no debería de ser un gran problema.

Vea también

Using Moodle forum discussions: