Roaming Laptop acceder a CentOS LAMP Box – Preocupaciones de security!

Permítanme preámbulo esta pregunta con cierta información – soy un desarrollador que trabaja para un pequeño arranque. La compañía no puede permitirse el lujo de contratar un sysadmin * nix correcto en este momento; Posteriormente, se me ha encargado la configuration de un server LAMP que ejecuta CentOS que será administrado remotamente por nuestro desarrollador principal. Dicho desarrollador se encuentra en diferentes zonas horarias cada semana. La security es muy alta en mi agenda.

El server se utilizará para la testing beta de una nueva versión de nuestro producto estrella. El server será accesado por los beta-testers (consumidores, no el personal de QA) a través de puerto estándar 80 http, así como SSL. Será accesado por nuestro desarrollador a través de SSH – así como el acceso ssl a Subversion para el control de código fuente y el puerto 21 para FTP.

Esto es lo que he implementado hasta ahora …

Computadora portátil que viaja:

  1. El file de database de la aplicación de gestión de passwords "Keepass" se respalda remotamente a mozy. La contraseña maestra es 198bit key. El file de database reside en un dongle encryption de hardware "IronKey".
  2. El inicio de session de Windows es key de 132 bits. La estación de trabajo se bloquea después de 5 minutos de inactividad.
  3. Todo el código, los documentos y la configuration de la aplicación se almacenan en una unidad cifrada con hardware.

CentOS LAMP Servidor:

  1. El acceso root a través de SSH está deshabilitado. SU – para raíz.
  2. Seguido este tutorial (cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html) para bloquear OpenSSH.
  3. El siguiente es un informe de análisis nmap para puertos abiertos:

Inicio de Nmap 4.11 ( http://www.insecure.org/nmap/ ) al 2009-08-31 10:56 EDT
Puertos interesantes en localhost.localdomain (127.0.0.1):
No se muestra: 1668 puertos cerrados
SERVICIO PORT STATE
21 / tcp ftp abierto
22 / tcp abierto ssh
25 / tcp abierto smtp
80 / tcp abrir http
110 / tcp abrir pop3
143 / tcp open imap
225 / tcp abierto desconocido
443 / tcp https abierto
631 / tcp open ipp
993 / tcp open imaps
995 / tcp abrir pop3s
3306 / tcp abrir mysql

Así que ahí lo tienes – Sé que esto no es muy seguro en su estado actual. He estado investigando esto por días y antes de implementar o cambiar cualquier otra cosa con esta configuration me gustaría algunos comentarios de los profesionales. Esperemos que nuestra economía rebote y este trabajo de security estresante será manejado por alguien más calificado que un desarrollador de baja c #.

¡Gracias por adelantado!

Hay algunas cosas que yo sugeriría:

  • Empezaría desactivando todos los services no utilizados (como pop3 e imap). Esto networkingucirá su superficie de ataque de manera bastante dramática. Si debe dejar algún service activado, bloqueelo por el firewall para get cualquier fuente externa.
  • Además, pre-llene la huella digital de la key del server SSH o, de alguna manera, dársela al líder. Asegúrese de que él / ella no se conecte a la máquina a less que la huella digital realmente coincide, de lo contrario hay potencial ataque de hombre en el medio que se puede hacer.
  • Considere el uso de sudo en lugar de su viejo y simple y restringir lo que el líder de dev puede hacer. Sólo relajar la política de security si hay una razón legítima para el acceso.

Bajo TODAS las incumplimientos, evite FTP. SSH ha construido en el apoyo a la transferencia de files, por lo que no utilice FTP en absoluto. Envía tanto cnetworkingenciales (nombre de usuario / contraseña) como files en text sin cifrar, por lo que cualquier usuario de la misma networking puede interceptar todos los datos.

Considere esto como punto de partida en su viaje divertido:).

También considere las Guías proporcionadas por la Agencia de Seguridad Nacional, la gente responsable de cosas como Security Enhanced Linux. Cubren RedHat (y CentOS) 5.3, Mac, Windows, Solaris. Utilice la guía en: http://www.nsa.gov/ia/_files/ . (Sea paranoico: escriba la url en su browser en lugar de seguir los enlaces.)

Algo no cubierto en la guía es el uso de lists de control de acceso. Encuentra eso en. Google "networking hat acl. Esto mejora radicalmente el control de acceso basado en nix que le da mucha más flexibilidad en permitir o no permitir el acceso. Esto toma un poco de acostumbrarse a, pero vale la pena.

"Puertos no utilizados" Su publicación no indicó si necesitaba esas aplicaciones. Sin embargo, a less que sea absolutamente necesario (como en, no hay otra manera de hacerlo) deshabilitaría el acceso a todo. Suena como si necesitaras http, y ssh, pero todo lo demás debería tener una solución si de hecho lo necesitas. (es decir, se puede acceder a mysql a través de la command-line después de sshing en la máquina.Si necesita algo más se puede utilizar SSH puerto de reenvío, etc)

Otras Consideraciones:

  • No sé acerca de la subversión, pero GIT (distribución de control de fuente) utiliza SSH.
  • Hay varias forms de utilizar una transferencia de files más segura en comparación con ftp.
  • Basándose en estudios, es prácticamente garantizado que la máquina Windows está comprometida, por lo que nunca confíe totalmente en la máquina o el usuario.
  • Si tiene los resources de hardware (por ejemplo, suficiente CPU y RAM, utilice máquinas virtuales para particionar services adicionales (y luego ejecute SELinux en esos hosts).
  • La guía NSA recomienda modificaciones de cortafuegos que bloquean los puertos. Otras opciones son funciones propias (es decir, basadas en la guía de enmascaramiento del Proyecto de Documentación de Linux).

Si alguna vez hay alguna cuestión de security física del sistema o las unidades, considere el uso de la opción de encryption de LUKS fácil de usar durante la installation. Luego hay security de copy de security. Disfruta el viaje.

Eric Chowanski

Considere la posibilidad de utilizar una herramienta de endurecimiento como Bastilla . CentOS es esencialmente un RedHat rebranded, y como tal binary compatible, por lo que en su mayor parte las instrucciones para el mismo número de versión de RHEL debería funcionar para CentOS.

Otro buen recurso específico de CentOS es la página wiki de Protección del SO .

El análisis más profundo sería seguir el punto de reference de la CIS .