Transcript
  • Pgina 1

    Pgina 2 Network Security Hacks

    Andrew Lockhart

    EditorBrian Sawyer

    Copyright 2009 O'Reilly Media, Inc.

    O'Reilly Media

    Pgina 3Oferta especial: este ebook con O'Reilly

    Haga clic aqu para ms informacin sobre esta oferta!Tenga en cuenta que las ofertas de actualizacin no estn disponibles a partir del contenido de la muestra.

  • Pgina 4Derechos de autor

    Copyright 2007, 2004 O'Reilly Media, Inc. Todos los derechos reserved.Printed en los Estados Unidos deAmrica.Publicado por O'Reilly Media, Inc., 1005 Gravenstein Highway Norte, Sebastopol, CA 95472.Libros de O'Reilly pueden ser adquiridos para uso educacional, comercial, o uso promocional. Ediciones en lneaTambin estn disponibles para la mayora de los ttulos (safari.oreilly.com). Para obtener ms informacin, pngase en contacto con nuestrodepartamento corporativo / institucional ventas: (800) 998-9938 o [email protected]: Brian SawyerEditor de Produccin: Philip Aros y AretesCopyeditor: Rachel WheelerIndexador: Ellen Troutman-ZaigCover Designer: Karen Montgomery

  • Diseador de Interiores: David FutatoIlustradores: Robert Romano y Jessamyn LeerHistorial de impresin:Abril de 2004: Primera edicin.Noviembre de 2006: Segunda edicin.Nutshell Handbook, el logotipo de Nutshell Handbook y el logotipo de O'Reilly son marcas registradas deO'Reilly Media, Inc. Las denominaciones de la serie Hacks, Network Security Hacks, la imagen de pasalambre, y la imagen comercial son marcas registradas de O'Reilly Media, Inc.Muchas de las denominaciones utilizadas por los fabricantes y vendedores para distinguir sus productos son reclamadoscomo marcas. Cuando esas designaciones aparecen en este libro, y O'Reilly Media, Inc. fue consciente de unademanda sobre la marca, las designaciones se han impreso en maysculas o maysculas iniciales.Si bien todas las precauciones se han tomado en la preparacin de este libro, el editor y el autorno asume ninguna responsabilidad por errores u omisiones, ni por perjuicios resultantes del uso de lainformacin aqu contenida.Pequea impresin: Las tecnologas tratadas en esta publicacin, las limitaciones en estas tecnologas quepropietarios de la tecnologa y de contenidos tratan de imponer, y las leyes en realidad la limitacin del uso de estostecnologas estn cambiando constantemente. Por lo tanto, algunos de los hacks describen en esta publicacin no puedetrabajo, puede causar dao involuntario a los sistemas en los que se utilizan, o pueden no ser compatibles conacuerdos de usuario aplicable. La utilizacin de estos hacks es bajo su propio riesgo, y O'Reilly Media, Inc.renuncia a la responsabilidad por los daos o gastos derivados de su uso. En cualquier caso, usted debetener cuidado de que el uso de estos hacks no viola cualquier ley aplicable, incluidas las leyes de derechos de autor.ISBN 10: 0-596-52763-2

    Pgina 5Crditos

    Sobre el autor

    Andrew Lockhart es originario de Carolina del Sur, pero actualmente reside en el norte de Colorado, dondel pasa su tiempo tratando de aprender el arte negro de auditora desmontado binarios y tratando de mantenerde la congelacin a la muerte. l tiene una licenciatura en ciencias de la computacin de la Universidad Estatal de Colorado y tieneconsultora de seguridad hecho por pequeas empresas de la zona. Cuando no est escribiendo libros, l es una persona mayoranalista de seguridad con la Red de Qumica, un proveedor lder de soluciones de seguridad inalmbrica. Andrew esTambin es miembro de las vulnerabilidades inalmbricas y Exploits proyecto ( http://www.wirelessve.org )consejo editorial y regularmente contribuye a su columna de la seguridad inalmbrica en NetworkWorld(http://www.networkworld.com/topics/wireless-security.html ). En su tiempo libre, trabaja en Snort-Wireless ( http://snort-wireless.org ), Un proyecto destinado a aadir la deteccin de intrusiones inalmbricas a lapopular de cdigo abierto Snort IDS.

  • Pgina 6Colaboradores

    Las siguientes personas contribuyeron hacks, la escritura, y la inspiracin para este libro:Oktay Altunergil es el fundador del Proyecto Free CD de Linux ( http://www.freelinuxcd.org ) Yuno de los mantenedores de Turk-PHP.com (un portal PHP turco). Tambin trabaja a tiempo completo como Unixadministrador de sistemas y programador PHP.Michael D. (Mick) Bauer ( http://mick.wiremonkeys.org ) Escribe Linux Journal 's "ParanoidColumna de la seguridad del pingino ". Durante el da, trabaja para mantener a los extranjeros fuera de las redes informticas de los bancos.Schuyler Erle ( http://nocat.net ) Es un desarrollador de Software Libre y activista. Sus intereses incluyencartografa de colaboracin, las redes inalmbricas, software para el cambio social y poltico, y laWeb Semntica. Schuyler es el desarrollador principal de NoCatAuth, la telefona mvil lder de cdigo abiertoportal cautivo.Bob Fleck ( http://www.securesoftware.com ) Es director de los servicios de seguridad en el software Secure.Es consultor en las reas de desarrollo seguro y de seguridad inalmbrica y es coautor delLibro 802.11 Seguridad de O'Reilly. Los resultados de sus investigaciones ms recientes en Bluetoothde seguridad se puede encontrar enhttp://bluetooth.shmoo.com .Rob Flickenger ( http://nocat.net ) Es un escritor y editor de la serie Hacks de O'Reilly. Actualmentepasa su tiempo de hacking en varios proyectos y promover la creacin de redes inalmbricas comunitarias.Preston Gralla es el autor de ms de 30 libros sobre las computadoras y la Internet, que tienenha traducido a 15 idiomas, incluyendo Windows XP Hacks (O'Reilly), Internet Molestias(O'Reilly), y Windows XP Poder Hound (Pogue Press). l ha estado escribiendo sobre tecnologadesde los albores de la era de la PC, y ha sido editor y columnista para muchos nacionalesperidicos, revistas y sitios web. Fue el editor fundador de la Semana de la PC; editor fundador,entonces editor, entonces director editorial de PC / Informtica; y editor ejecutivo de ZDNet / CNet. Prestonha escrito acerca de la tecnologa para numerosas revistas y peridicos, entre ellos la revista PC Magazine,Computerworld, CIO Magazine, Computer Shopper, el diario Los Angeles Times, EE.UU. Hoy en da, el DallasNoticias de la maana (donde era un columnista de tecnologa), y muchos otros. Ha sido columnistapara ZDNet / CNet y actualmente es columnista de TechTarget.com. Sus comentarios acerca deLa tecnologa ha sido presentado en la radio pblica de la Nacin "All Things Considered", y tienegan el premio a la Mejor Pelcula en una publicacin de la Computacin de la Computer PressAsociacin. Bajo su direccin editorial, PC / Computing fue finalista en la categora de generalExcelencia de los National Magazine Awards. Preston es tambin el editor de O'ReillyWindowsDevCenter.com sitio. l vive en Cambridge, MA, con su esposa y sus dos hijos-aunque su hija ha huido recientemente del nido para la universidad. Entre la escritura de libros, artculos ycolumnas, l nada, juega tenis, va a la pera, y contempla el crneo de carnero que cuelga enla pared de su oficina.

  • Michael Lucas ( http://www.blackhelicopters.org/mwlucas/ ) Vive en una casa encantada en Detroit,Michigan, con su esposa Liz, roedores variados, y una multitud de peces. l ha sido un wrangler mascota, unbibliotecario, y un consultor de seguridad, y ahora trabaja como ingeniero de redes y sistemasadministrador con la de los Grandes Lagos Technologies Group. Michael es el autor del Absoluto BSD,OpenBSD Absoluto y routers Cisco para los desesperados (todos de No Starch Press), y l esActualmente prepara un libro sobre NetBSD.Matt Messier ( http://www.securesoftware.com ) Es el Director de Ingeniera de Software Seguro yuna autoridad de seguridad que ha estado programando desde hace casi dos dcadas. Adems de la coautora

    Pgina 7el libros de O'Reilly Programacin Segura Cookbook para C y C + + y Network Security conOpenSSL, Matt coautor del C Biblioteca Permite String (SafeStr), XXL, ratas y EGADS.Ivan Ristic ( http://www.modsecurity.org ) Es un especialista en seguridad web y el autor demod_security , Una fuente abierta de deteccin de intrusos y el motor de la prevencin para las aplicaciones web. l esun miembro del Comit Tcnico de OASIS Web Application Security, donde trabaja en laestndar para la proteccin de aplicaciones web.Hans Schefske es columnista en myITforum.com ( http://www.myitforum.com ) Y cuenta con ms de ochoaos de experiencia en ingeniera y diseo de la arquitectura e implementacin de Microsoftcliente / servidor basado en soluciones de red. Consultora y direccin de proyectos en la industria de TI, que tieneproporcionado los conocimientos tcnicos en las reas de diseo e implementacin de infraestructuras para grandesempresas de nivel empresarial tales como Nabisco, Prudential, AIG, Simpson, Thatcher y Bartlett,Novartis y Hoffman LaRoche farmacia. En 2003, Hans fue galardonado con un Microsoft MostValuable Professional (MVP) Premio por SMS por sus habilidades tcnicas pendientes y la voluntadpara compartir conocimientos con sus compaeros. Como autor tcnico en myITforum.com, que brinda asistencia tcnicainformacin, herramientas, scripts y utilidades para profesionales de TI y administradores para ayudar mejor a losen la gestin de sus soluciones basadas en Microsoft. Hans es actualmente un Active Directory y SMS Superiorconsultor en una gran empresa de telecomunicaciones con sede en Atlanta, GA.De Rod Trent, gerente de myITforum.com ( http://www.myitforum.com ), Es el principal experto enMicrosoft Systems Management Server (SMS). l tiene ms de 18 aos de experiencia en TI, 8 de los cualesse han dedicado a los SMS. Es autor de libros como Microsoft SMS Installer, Admin911:SMS, y Windows 2000 IIS 5.0: Gua de un principiante (todos de McGraw-Hill) y ha escritomiles de artculos sobre temas de tecnologa. myITforum.com es la ubicacin central para tercerosSMS de apoyo y un lugar de reunin en lnea bien conocida por los profesionales de TI y de la comunidad de TI.Vara habla por lo menos tres veces al ao en varias conferencias y es un director al NetImpress, Inc.(http://www.netimpress.com ).Mitch Tulloch ( http://www.mtit.com ) Es Presidente de MTIT Enterprises, un desarrollo de contenidos de TIcon sede en Winnipeg, Canad compaa. Antes de iniciar su propia empresa en 1998, trabaj como MitchMicrosoft Certified Trainer para la Productividad Point International. Mitch es un ampliamente reconocidoexperto en la administracin de Windows, redes y seguridad y ha sido galardonado Ms ValiosoProfessional (MVP) de estado por parte de Microsoft por sus destacadas contribuciones en apoyo a los usuarios queimplementar las plataformas de Microsoft, productos y soluciones. Mitch tambin es actualmente profesor en JonesUniversidad Internacional (DCI), donde imparte cursos de posgrado en Seguridad de la InformacinGestin que l co-desarrollado con su esposa, Ingrid Tulloch, para el programa de MBA de la DCI. Mitch esel autor de 14 libros, incluyendo Windows Server Hacks (O'Reilly), Windows Server 2003 en unNutshell (O'Reilly), el Microsoft Encyclopedia of Networking (Microsoft Press), el MicrosoftEnciclopedia de la seguridad (Microsoft Press), y Administracin de IIS 6 (Osborne / McGraw-Hill).Mitch tambin ha escrito artculos de fondo para revistas del sector, como NetworkWorld y MicrosoftCertified Professional Magazine, y contribuye regularmente artculos a O'ReillyWindowsDevCenter.com, ITWorld.com, y WindowsNetworking.com. Artculos de Mitch han sidoampliamente sindicado en otros sitios de TI, tales como Computerworld.com, Smallbusiness.com, e inclusoCNN.com.John Viega ( http://www.securesoftware.com ) Es director de tecnologa y fundador de SecureSoftware. l es tambin el co-autor de varios libros sobre la seguridad del software, incluyendo SecureProgramacin Cookbook para C y C + + (O'Reilly) y Construccin de Software seguro (Addison-Wesley). John es responsable de numerosas herramientas de software de seguridad, y l es el autor original de

    Pgina 8Mailman, el gestor de listas de correo de GNU.

  • Pgina 8

    Pgina 9Agradecimientos

    Una vez ms tengo que agradecer a Karen (aka DJ Jackalope para los asistentes Defcon) por su constante apoyoy aliento, y por soportar las muchas horas pasadas en el trabajo.Tambin, agradecimiento a Brian Sawyer por su paciencia a lo largo de todo este proceso, y para toda laotras personas maravillosas en O'Reilly que trabajaron duro para hacer que este libro sea una realidad tangible. Tambin me gustaradar las gracias a John Hoopes para proporcionar la revisin tcnica para esta edicin. El consejo de Juan erainstrumental en hacer de este un libro mejor.Por ltimo, me gustara dar las gracias a mis padres por su constante aliento.

  • Pgina 10Prefacio

    En ninguna parte es el trmino hacker ms errada interpretacin que en el campo de la seguridad de la red. Escomprensible porque las mismas herramientas que los profesionales de seguridad de red utilizan para sondear larobustez de sus propias redes tambin se puede utilizar para lanzar ataques contra cualquier mquina en Internet.La diferencia entre los administradores de sistemas legtimamente a prueba sus propias mquinas y el sistemacrackers intentan obtener acceso no autorizado no es tanto una cuestin de tcnicas o herramientas, sino unacuestin de intencin. Despus de todo, como con cualquier pieza de gran alcance de la tecnologa, una herramienta de seguridad no es intrnsecamentebueno o malo-esta determinacin depende totalmente de cmo se utiliza. El mismo martillo se puede utilizar paraya sea para construir una pared o derribarla.La diferencia entre el "sombrero blanco" y los piratas "sombrero negro" no radica en las herramientas o tcnicas que utilizan(O incluso el color de su sombrero), pero en sus intenciones. La diferencia es sutil pero importante. Blancohackers de sombrero encuentran que la construccin de sistemas seguros presenta un desafo interesante, y la seguridad detales sistemas pueden ser verdaderamente probados slo a travs de un conocimiento profundo de cmo subvertir ellos. Sombrero negrohackers (ms apropiadamente llamados crackers) persiguen precisamente el mismo conocimiento, pero sin tener en cuentapara la gente que construy los sistemas o los servidores que atacan. Ellos usan sus conocimientos para subvertirestos sistemas para su propio beneficio personal, a menudo en detrimento de los sistemas que se infiltran.Por supuesto, los cuentos de atrevidos tecno-robos internacionales y negro-revestido, hbito de fumar cigarrillos, laptop-armados con intelectuales malos tienden a vender mejor que cuentos simples de los ingenieros que construyen fuertesredes, por lo que el trmino piratera se ha ganado una mala reputacin en la prensa popular. Lo usan para referirse apersonas que irrumpen en los sistemas o que causan estragos uso de computadoras como su arma. Entrepersonas que resuelven problemas, sin embargo, el trmino se refiere a hackear una solucin "rpida y sucia" a un problema,o una forma inteligente de hacer algo. Y el trmino hacker se toma en gran medida como un cumplido,

  • referirse a alguien como ser creativo, es decir, con las chuletas de tcnicas para hacer las cosas. Los Hacksserie es un intento de recuperar esta palabra, documentar las formas en que realizando cambios (en el buen sentido), ypasar la tica hacker de participacin creativa a los no iniciados. Al ver cmo se acercan a los demssistemas y problemas es a menudo la forma ms rpida de aprender sobre una nueva tecnologa. Slo por abiertamentediscusiones sobre las fallas de seguridad e implementaciones podemos esperar construir sistemas fuertes.

    Por qu la Red de Seguridad Hacks?

    Esta segunda edicin de Network Security Hacks es un grimorio de 125 tcnicas de seguridad de gran alcance. Estevolumen muestra los mtodos eficaces para la defensa de sus servidores y las redes de una variedad deataques arteros y sutiles. Dentro de este libro son ejemplos de cmo detectar la presencia (y la pistacada golpe de teclado) de intrusos de la red, los mtodos para la proteccin de su red y sus datos usando una fuerteencriptacin, e incluso tcnicas para la colocacin de trampas para los potenciales crackers de sistemas. Muchos importantesse presentan herramientas de seguridad, as como los mtodos inteligentes para el uso de ellos para revelar real, tilinformacin acerca de lo que est sucediendo en su red.

    Pgina 11Cmo est organizado este libro

    Aunque cada truco est diseada para sostenerse por s mismo, este libro hace un uso extensivo de la cruz-referencia entre los hacks. Si encuentra una referencia a algo que le interesa, mientras que la lectura de unparticular, hack, sintase libre para saltar alrededor y seguirlo (tanto como es posible que durante la navegacin por la web).El libro en s se divide en varios captulos, organizados por tema:

    Captulo 1, Unix Host SeguridadComo dice el viejo refrn, Unix fue diseado para compartir la informacin, no para protegerlo. Este viejo dicho esya no es as con los sistemas operativos modernos, donde la seguridad es un componente integral de cualquierservidor. Muchos nuevos programas y caractersticas del ncleo se han desarrollado que proporciona una mucho mayorgrado de control sobre lo que los sistemas operativos de tipo Unix pueden hacer. Captulo 1 demuestra avanzadatcnicas para el endurecimiento de su Linux, FreeBSD, OpenBSD o servidor.

    Captulo 2, Windows Seguridad de hostMicrosoft Windows se utiliza como plataforma de servidor en muchas organizaciones. Como la plataforma de Windowses un objetivo comn para los diversos ataques, la administracin de estos sistemas puede ser un reto. Estecaptulo abarca muchos pasos importantes que los administradores de Windows a menudo pasan por alto, incluyendoapretando los permisos, auditar toda la actividad del sistema, y la eliminacin de los agujeros de seguridad que sonpresentar en la instalacin por defecto de Windows.

    Captulo 3, privacidad y anonimatoEn estos das, el control de la pista de la informacin dada en lnea es ms importante que nunca. Como ms denuestras vidas se llevan a cabo en lnea, nuestra informacin es ms fcil de acceder por amigos y enemigos.Este captulo discute varias maneras de protegerse en lnea, ofreciendo soluciones para el cifradocorreo electrnico, de manera annima, y la gestin de contraseas para los sitios web.

    Captulo 4, CortafuegosLos cortafuegos son una tecnologa clave en el mbito de la seguridad de la red. Sin ellos, el mundo de laseguridad de la red sera muy diferente. En este captulo se muestra cmo configurar los servidores de seguridad bajovarios sistemas operativos, como Linux, OpenBSD, FreeBSD y Windows. Filtrado Diferentey tcnicas de prueba de firewall tambin estn cubiertos en este captulo.

    Captulo 5, Cifrado y Proteccin de serviciosLimitar cmo los servicios pueden afectar al sistema en el que se estn ejecutando es un aspecto clave del servidorseguridad. Tambin es vital que el trfico entre el servicio y los clientes que se conectan a l permanecen

  • confidencial con el fin de proteger los datos y las credenciales de autenticacin de los usuarios. Este captulo muestra cmohacerlo por varios servicios populares, como SMTP, IMAP, POP3, Apache y MySQL.

    Captulo 6, Seguridad de redesIndependientemente del sistema operativo de los servidores utilizan, si la red est conectada a Internet,utiliza TCP / IP para las comunicaciones. Protocolos de red pueden ser subvertidos en una serie de gran alcancey de manera sorprendente, que conduce a los ataques que pueden ir desde la simple negacin de servicio aacceso no autorizado con todos los privilegios. Este captulo muestra algunas herramientas y tcnicasutilizado para atacar a servidores utilizando la propia red, as como los mtodos para la prevencin de estos ataques.

    Captulo 7, Seguridad WirelessLas redes inalmbricas se han convertido en una vista comn en el paisaje red domstica y continuarganar traccin en las redes empresariales. Sin embargo, la guardia de usuarios no autorizados y los atacantes poses

    Pgina 12un desafo mayor en una red inalmbrica. Si bien este captulo incluye slo un puado de hacks,lo que se puede aprender de ellos tiene un valor incalculable. Si usted quiere compartir su red con otros(Pero an as mantener una apariencia de seguridad) o bloquear su red inalmbrica con grano finoautenticacin, este captulo tiene algo para ti.

    Captulo 8, TalaLos administradores de seguridad de red viven y mueren por la calidad de sus registros. Si es demasiado poca informacinseguimiento, intrusiones pueden deslizarse desapercibidas. Si es demasiado amigable, los ataques se pueden perder en el diluvio deinformacin irrelevante. Este captulo le muestra cmo equilibrar la necesidad de informacin con elnecesario por razones de brevedad recogiendo de forma automtica, el procesamiento y la proteccin de sus registros del sistema.

    Captulo 9, Vigilancia y TendenciasTan til como registros del sistema y anlisis de red pueden ser, representan slo un nico punto de datos deinformacin, relevantes slo para el instante en que se registraron los acontecimientos. Sin un historial dela actividad en su red, no tienes manera de establecer una lnea de base para lo que es "normal", ni ningunacamino real para determinar si algo raro est pasando. En este captulo se presenta una serie de herramientas ymtodos para la observacin de la red y los servicios en el tiempo, lo que permite reconocer tendencias queayudar en la planificacin futura y le permiten saber a primera vista cuando algo no est bien.

    Captulo 10, tneles segurosCmo es posible mantener comunicaciones seguras a travs de redes como no fiable como laInternet? La respuesta casi siempre implica el cifrado de gran alcance y las tcnicas de autenticacin.Captulo 10 le muestra cmo implementar tecnologas VPN potentes, incluyendo IPSec, PPTP, yOpenVPN. Tambin encontrar tcnicas para la proteccin de los servicios mediante SSL, SSH, y otra fuerteherramientas de cifrado.

    Captulo 11, deteccin de intrusos en redesCmo sabe cuando su red est bajo ataque? Mientras que los registros y las estadsticas histricas puedemostrar si algo est fuera de tipo, hay herramientas diseadas para que le notifique (o de lo contrario tomaaccin) inmediatamente cuando se detecten ataques comunes. Este captulo se centra en la tremendamenteherramienta popular NIDS Snort y presenta muchas tcnicas y los complementos que desencadenan esta poderosatodo el potencial de la herramienta. Tambin se presentan mtodos para la creacin de su propia red de "honeypot" paraatraer y confundir a los posibles crackers de sistemas.

    Captulo 12, Recuperacin y RespuestaIncluso el administrador de la red ms competente y cuidadoso con el tiempo tendr que hacer frente aincidentes de seguridad de xito. Este captulo contiene sugerencias sobre cmo verificar su sistema deintegridad, preservar las pruebas para su posterior anlisis, y localizar a la persona humana en el otro extremo de lael trfico de red no deseado.

  • Pgina 13Convenciones utilizadas en este libro

    Los siguientes convenios tipogrficos se utilizan en este libro:

    Itlico

    Indica los nuevos trminos, URLs, direcciones de correo electrnico, nombres de archivos y extensiones de archivo, nombres de las rutas, directorios,demonios, programas y utilidades Unix

    Anchura constanteIndica los comandos, las opciones, los conmutadores, las variables, atributos, llaves, funciones, tipos, clases,espacios de nombres, mtodos, mdulos, propiedades, parmetros, valores, objetos, eventos, controladores de eventos,Las etiquetas XML, etiquetas HTML, macros, el contenido de archivos, y la salida de los comandos

    Negrita de ancho constanteMuestra los comandos u otro texto que debe escribirse literalmente por el usuario

    Cursiva ancho constanteMuestra el texto que se debe sustituir con los valores suministrados por el usuario

    Tipo de GraySe utiliza para indicar una referencia dentro del texto

    Se debe prestar especial atencin a las notas que figuran aparte del texto con los siguientes iconos:

    TIPEste es un consejo, sugerencia, o una nota general. Contiene informacin adicional til sobre el tema que nos ocupa.

    ADVERTENCIAEsta es una advertencia o una nota de cautela, a menudo lo que indica que la bolsa o la vida privada podran estar en riesgo.

    Los iconos del termmetro, que se encuentra al lado de cada truco, indican la relativa complejidad del hack:

    Pgina 14Safari Activado

    Cuando vea un icono de Safari Habilitado en la portada de tu libro favorito de la tecnologa, que significa lalibro est disponible en lnea a travs de la Red de O'Reilly Safari Biblioteca.Safari ofrece una solucin que es mejor que los libros electrnicos. Es una biblioteca virtual que te permite buscar fcilmentemiles de los mejores libros de tecnologa, cortados y ejemplos de cdigo pasta, captulos de descarga, y encontrar respuestas rpidascuando se necesita la informacin actual y ms exacta. Prubelo gratuitamente en http://safari.oreilly.com .

  • Pgina 15Utilizando ejemplos de cdigo del

    Este libro est aqu para ayudarle a conseguir su trabajo hecho. En general, usted puede usar el cdigo de este libro en suprogramas y documentacin. No es necesario ponerse en contacto con nosotros para obtener permiso, a menos que ests reproduciendouna porcin significativa del cdigo. Por ejemplo, escribir un programa que utiliza varios trozos de cdigode este libro no requiere permiso. La venta o distribucin de un CD-ROM de ejemplos deLibros de O'Reilly s requiere permiso. Respondiendo a una pregunta de la que cita este libro y citandoejemplo de cdigo no requiere autorizacin. La incorporacin de una cantidad significativa de ejemplo de cdigo deeste libro en la documentacin de su producto requiere permiso.Apreciamos, pero no lo necesitamos, la atribucin. Una atribucin suele incluir el ttulo, el autor,editor, e ISBN. Por ejemplo: "Network Security Hacks, segunda edicin, por Andrew Lockhart.Copyright 2007 O'Reilly Media, Inc., 978-0-596-52763-1. "Si usted sospecha que su uso de los ejemplos de cdigo se encuentra fuera de uso justo o el permiso dado aqu, no dude enponerse en contacto con nosotros [email protected] .

  • Pgina 16Cmo comunicarse con nosotros

    Por favor dirigirse a los comentarios y preguntas en relacin con este libro a la editora:

    O'Reilly Media, Inc.1005 Gravenstein Highway NorteSebastopol, CA 95472800-998-9938 (en los Estados Unidos o Canad)707-829-0515 (internacional o local)707-829-0104 (fax)

    Tenemos una pgina web de este libro, en el que lista de erratas, ejemplos, y cualquier informacin adicional.Puede acceder a esta pgina en:

    http://www.oreilly.com/catalog/netsechacks2/

    Para dejar un comentario hacer preguntas tcnicas acerca de este libro, enve un correo a:

    [email protected]

    Para obtener ms informacin acerca de nuestros libros, conferencias, centros de recursos, y la Red de O'Reilly, consultenuestro sitio web en:

    http://www.oreilly.com

  • Pgina 17Tienes un Hack?

    Para explorar los libros Hacks lnea o contribuir un hack para futuros ttulos, visite:

    http://hacks.oreilly.com

  • Pgina 18Captulo 1. Unix Host Seguridad

    Networking es conectar ordenadores entre s, por lo que se deduce que una red informtica hayms seguro que las mquinas que conecta. Un nico host insegura puede hacer un montn de problemas paratoda la red, ya que puede actuar como una herramienta para reconocimiento o una base fuerte de ataque si esbajo el control de un adversario. Los cortafuegos, mecanismos de deteccin de intrusos, y otra avanzadalas medidas de seguridad son intiles si los servidores ofrecen servicios fcilmente comprometidos. Antes de ahondar enla parte de red de seguridad de la red, primero debe asegurarse de que las mquinas que son responsablespara son lo ms segura posible.Este captulo ofrece muchos mtodos para reducir los riesgos asociados a la oferta de servicios en el basado en Unix, unsistema. A pesar de que cada uno de estos hacks puede sostenerse por s mismo, vale la pena leer a travs de todo estecaptulo. Si implementa un solo tipo de medida de seguridad, se corre el riesgo de que toda tu preparacinsiendo totalmente negada una vez que un atacante se da cuenta de la manera de eludir l. As como Fort Knox no est protegidopor una puerta regular con un cerrojo comn, ningn elemento de seguridad nico puede proteger en ltima instancia suservidores. Y las medidas de seguridad que pueda necesitar para tener aumento en proporcin al valor de lo queque est protegiendo.Como dice el viejo refrn, la seguridad no es un sustantivo, es un verbo. Es decir, la seguridad es un proceso activo que debeser constantemente seguido y renovada. Corto de desenchufarlo, no hay una sola accin que puede tomar paraasegurar su mquina. Con esto en mente, considere estas tcnicas como un punto de partida para la construccin de unaServidor Seguro que satisfaga sus necesidades particulares.

    Hack # 1. Asegure puntos de montaje

    Utilice las opciones de montaje para ayudar a prevenir que los intrusos escalada, adems, un compromiso.La principal manera de interactuar con una mquina Unix es a travs de su sistema de archivos. Por lo tanto, cuando un intrusoha tenido acceso a un sistema, es conveniente limitar lo que puede hacer con los archivos disponibles para l.Una forma de lograr esto es con el uso de opciones de montaje restrictivas.Una opcin de montaje es una bandera que controla cmo se puede acceder al sistema de archivos. Se pasa a la operacincdigo de kernel del sistema cuando el sistema de archivos se pone en lnea. Opciones de montaje se pueden utilizar para prevenirlos archivos se interpreta como nodos de dispositivos, para no permitir los binarios de ser ejecutado, y para no permitirel bit SUID entre en vigor (mediante el uso de la nodev , noexec , Y nosuid banderas). Los sistemas de archivos tambin se puedeser montado de slo lectura con la ro opcin.Estas opciones se especifican desde la lnea de comandos ejecutando monte con el -O bandera. Por ejemplo, sique tener una particin separada para / tmp que se encuentra en la tercera particin de tu primer disco duro IDE, puedemontar con el nodev , noexec , Y nosuid banderas, que se habilitan mediante la ejecucin del siguiente comando:

    # Mount-o nodev, noexec, nosuid / dev/hda3 / tmp

    Una entrada equivalente en su / etc / fstab sera algo como esto:/ Dev/hda3 / Tmp ext3 incumplimientos, nodev, noexec, nosuid 1 2

    Al considerar cuidadosamente sus necesidades y dividir el almacenamiento en mltiples sistemas de ficheros,usted puede utilizar estas opciones de montaje para aumentar el trabajo que un atacante tendr que hacer paracomprometer an ms su sistema. Una forma rpida de hacer esto es clasificar primero de su rbol de directorios enreas que necesitan acceso de escritura para que el sistema funcione y los que no lo hacen. Usted debe considerar el uso deel indicador de slo lectura en cualquier parte del sistema de archivos donde los contenidos no cambian con regularidad. Una buenacandidato para esto podra ser / usr, dependiendo de la frecuencia se realizan las actualizaciones al software del sistema.

    Pgina 19Obviamente, tendr que ser montado como lectura / escritura de muchos directorios (como el / home). Sin embargo, espoco probable que los usuarios de un sistema medio multiusuario debern ejecutar binarios SUID o crear el dispositivoarchivos en sus directorios de inicio. Por lo tanto, un sistema de ficheros por separado, montado con la nodev ynosuid opciones, se podran crear para albergar a los directorios personales de los usuarios. Si ha determinado que sulos usuarios no tendrn que ejecutar programas almacenados en sus directorios de inicio, puede utilizar el noexec monteopcin tambin. Una solucin similar podra ser usado para / tmp y / var, donde es muy poco probable que cualquierproceso legtimamente necesite ejecutar SUID o no SUID binarios o archivos de dispositivo de acceso. Este

  • estrategia ayudara a prevenir la posibilidad de que un atacante dejando un caballo de Troya en un comndirectorio como / tmp o directorio de inicio del usuario. El atacante puede ser capaz de instalar el programa, perono ser capaz de ejecutar, con o sin los bits chmod adecuados.

    TIPServicios que se ejecutan en un entorno de espacio aislado [Hack # 10] se puede romper si no se especifica nodev en el sistema de archivos que se ejecutan en elcaja de arena. Esto se debe a los nodos de dispositivos como / dev / log y / dev / null deben estar disponibles en el (medio ambiente) chroot.

    Hay un nmero de maneras en que un atacante puede eludir estas restricciones de montaje. Por ejemplo, lanoexec opcin en Linux puede ser evitado mediante el uso de / lib / ld-linux.so ejecutar binarios residen en unsistema de archivos montado con esta opcin. A primera vista, se podra pensar que este problema podra solucionarsehaciendo ld-linux.so no ejecutable, pero esto hara que todos los binarios enlazados dinmicamenteno ejecutable.As que, a menos que todos los programas que se basan en estticamente ligado (es probable que no lo son), la noexecopcin es de poco uso en Linux. Adems, un atacante que ya se ha ganado privilegios de root no lo harobstaculizada de manera significativa por los sistemas de ficheros montados con opciones especiales, ya que a menudo pueden servuelto a montar con la -O remount opcin. Pero mediante el uso de banderas de montaje, puede limitar fcilmente la posibleataques disponibles para un usuario hostil antes de que gana privilegios de root.

    Pgina 20Hack # 2. Analizar en busca de programas SUID y SGID

    Compruebe rpidamente a los programas y puertas traseras root explotables potenciales.Una forma potencial de un usuario a escalar sus privilegios en un sistema es explotar una vulnerabilidad en unSUID o SGID programa. SUID y SGID estn legtimamente usados cuando los programas tienen especialPermisos ms all de los que estn disponibles para el usuario que los ejecuta. Uno de talesprograma es passwd. Permitiendo al mismo tiempo un usuario cambiar su contrasea mientras que no permite ningnusuario modifique el fichero de contraseas del sistema significa que el programa passwd debe ejecutarse con la razprivilegios. De este modo, el programa tiene su bit SUID, lo que provoca que se ejecute con los privilegiosdel dueo del archivo del programa. Del mismo modo, cuando se establece el bit SGID, el programa se ejecuta con elprivilegios del propietario del grupo del archivo.Correr ls-l en un binario que tiene su bit SUID debera tener este aspecto:

    -rs - x - x 1 root raz 16336 13 de febrero 2003 / usr / bin / passwdTenga en cuenta que en lugar de un bit de ejecucin (x ) Para los bits de propietario, tiene una s . Esto significa un archivo SUID.Por desgracia, una SUID o SGID binaria mal escrito puede ser usado para escalar rpidamente y fcilmente unalos privilegios del usuario. Adems, un atacante que ya ha obtenido acceso root podra ocultar binarios SUIDa travs de su sistema con el fin de dejar una puerta trasera para acceder en el futuro. Esto nos lleva a la necesidad de

  • sistemas de escaneo para SUID y SGID binarios. Este es un proceso sencillo y se puede hacer con lasiguiente comando:

    # Find / \ (-perm -4000-o-perm -2000 \)-type-f ejecutivo ls-la {} \;

    Una cosa importante a considerar es si un programa SUID es en realidad un script de shell en lugar de unaejecutable, ya que es trivial para alguien cambie un script inocua en una puerta trasera.La mayora de los sistemas operativos ignoran cualquier bit SUID o SGID en un script de shell, pero si usted quiere encontrar todoSUID o SGID secuencias de comandos en un sistema, cambie el argumento de la -Exec opcin en el ltimo comando yaadir una tubera para que el comando se lee:

    # find / \ (-perm -4000-o-perm -2000 \)-type f \-Exec archivo {} \; | Grep-v ELF

    Ahora, se encuentra cada vez que un archivo SUID o SGID, la expedientecomando se ejecutar y determinar qutipo de archivo est siendo examinado. Si se trata de un archivo ejecutable,grep filtrar hacia fuera; de lo contrario, ser impresoa la pantalla con un poco de informacin acerca de qu tipo de archivo se trata.La mayora de los sistemas operativos utilizan los ejecutables ELF-formato, pero si se est ejecutando un sistema operativo queno (versiones antiguas de Linux utilizan a.out , y los usos de AIX XCOFF), Usted tendr que reemplazar el ELF en elanterior grep comando con el formato binario utilizado por el sistema operativo y arquitectura. Sino est seguro de lo que debe buscar, ejecute el expedientecomando en un binario ejecutable, y se informarla cadena que est buscando.Por ejemplo, aqu hay un ejemplo de funcionamiento expedienteen un binario de Mac OS X:

    $ file / bin / sh/ Bin / sh: Mach-O ppc ejecutable

    Para ir un paso ms all, incluso se podra hacer cola el comando para ejecutar una vez al da utilizando cron y lo hanredirigir la salida a un archivo. Por ejemplo, esta entrada crontab sera buscar los archivos que tengan la extensinSUID o SGID, comparar la lista actual a la del da anterior, y luego enviar eldiferencias con el propietario del crontab (asegurarse de que esto es todo en una lnea):

    Pgina 210 4 *** find / \ (-perm -4000-o-perm -2000 \)-type f \> / Var / log / sidlog.new && \diferencias / var / log / sidlog.new / var / log / sidlog && \mv / var / log / sidlog.new / var / log / sidlog

    Este ejemplo tambin dejar una lista actualizada de los archivos SUID y SGID en / var / log / sidlog .

  • Pgina 22Hack # 3. Analizar en busca de World-y en grupo-grabables Directorios

    Analiza rpidamente para directorios con permisos sueltos.Y World-directorios del grupo grabable presentan un problema: si los usuarios de un sistema no han puesto suumask s correctamente, ellos inadvertidamente crear archivos inseguros, sin darse cuenta de las implicaciones.Con esto en mente, parece que sera bueno para buscar directorios con permisos sueltos. Al igual que en"Buscar SUID y SGID Programas" [Hack # 2] , Esto se puede lograr con un encontrarcomando:

    # find-type / d \ (-perm-g + w-o-perm-o + w \)-exec ls-lad {} \;

    Cualquier directorio que se enumeran en la salida deben tener el bit pegajoso, que se denota por un t enbits de permisos del directorio. Activando el bit adherente en un directorio con permisos de escritura asegura que inclusoaunque cualquiera puede crear archivos en el directorio, es posible que no eliminar o modificar archivos de otro usuario.Si usted ve un directorio en la salida que no contenga un poco pegajosa, considere si realmente necesitaque el mundo pueda escribir o si el uso de grupos o ACL [Hack # 4] va a funcionar mejor para susituacin. Si usted realmente no necesita el directorio que posean permisos de escritura, establecer el bit sticky en l mediante chmod+ T.Para obtener una lista de directorios que no tienen su bit pegajoso, ejecute este comando:

    # find-type / d \ (-perm-g + w-o-perm-o + w \) \-No-perm-a + t-exec ls-lad {} \;

    Si est utilizando un sistema que crea un grupo nico para cada usuario (por ejemplo, se crea un usuario andrew ,que a su vez crea un grupo de andrew como grupo primario), es posible que desee modificar los comandos paraNo analizar los directorios del grupo de escritura. (De lo contrario, usted recibir una gran cantidad de la produccin que realmente no espertinente.) Para ello, ejecute el comando sin la -Perm-g + w porcin.

  • Pgina 23Hack # 4. Crear Permisos Flexibles Jerarquas con POSIX

    ACL

    Cuando los permisos basados en el modo de Unix no son suficientes, usar una ACL.La mayor parte del tiempo, el sistema tradicional de los permisos de archivos de Unix se ajuste el proyecto de ley muy bien. Pero en una altamenteentorno de colaboracin con varias personas que necesitan acceso a los archivos, este sistema puede llegar a serdifcil de manejar. listas de control de acceso , tambin conocido como ACL (que se pronuncia para rimar con "pelos de punta"), son unrelativamente nueva caracterstica de los sistemas de cdigo abierto de Unix que funcionan, pero que han estado disponibles en sucontrapartes comerciales durante algn tiempo. Mientras que las ACL no aaden inherentemente "ms seguridad" a unsistema, que hacen reducir la complejidad de la gestin de los permisos. ACL proporcionan nuevas formas de aplicar el archivoy permisos de directorio sin tener que recurrir a la creacin de grupos innecesarios.ACL se almacenan como atributos extendidos dentro de los metadatos del sistema de ficheros. Como el nombre implica, sepermiten definir listas que, o bien conceder o denegar el acceso a un archivo o directorio determinado en base a lacriterios suministrados por el usuario. Sin embargo, las ACL no abandonan el sistema de permisos tradicionales por completo.Las ACL se pueden especificar para los usuarios y grupos y todava se separan en los reinos de la lectura, escritura,y acceso de ejecucin. Adems, una lista de control se puede definir para cualquier usuario o grupo que no hacecorresponden a ninguna de las otras ACL de usuario o grupo, al igual que los "otros" modo de bits de un archivo.Listas de control de acceso tambin tienen lo que se llama una mscara de ACL , que acta como una mscara de permisos para todosACL que mencionan especficamente un usuario y un grupo. Esto es similar a una umask , Pero no exactamente lo mismo.Por ejemplo, si establece la mscara de ACL para R - , Cualquier ACL que pertenecen a un usuario o grupo especfico y sonms flojo en los permisos (por ejemplo,rw- ) Llegar a ser efectiva R - . Los directorios tambin pueden contener un defectoACL, que especifica las ACL iniciales de los archivos y subdirectorios creados dentro de ellos.

    Habilitacin de las ACL

    La mayora de los sistemas de archivos de uso comn hoy en da bajo Linux (Ext2 / 3, ReiserFS, JFS, XFS y) son capaces deel apoyo a las ACL. Si ests usando Linux, asegrese de una de las siguientes opciones de configuracin del kernelse establece que corresponde al tipo de sistema de archivos que est utilizando:

    CONFIG_EXT2_FS_POSIX_ACL = yCONFIG_EXT3_FS_POSIX_ACL = yCONFIG_REISERFS_FS_POSIX_ACL = yCONFIG_JFS_POSIX_ACL = yCONFIG_FS_POSIX_ACL = yCONFIG_XFS_POSIX_ACL = y

    Para habilitar las ACL en FreeBSD, montar cualquier sistema de ficheros que desee utilizar en la ACL monteopcin:

    # mount-o ACL-u / usr# mount/ Dev/ad0s1a en / (ufs, local)devfs en / dev (devfs, local)/ Dev/ad0s1e en / tmp (ufs, y suaves-updates locales)/ Dev/ad0s1f en / usr (ufs, locales, soft-updates, ACL)/ Dev/ad0s1d en / var (ufs, y suaves-updates locales)

    La -U opcin actualiza el monte, que le permite cambiar las opciones de montaje para una montada en la actualidadsistema de archivos. Si desea deshacer esto, puede desactivar ACLs utilizando el noacls opcin en lugar. Aactivar las ACL de forma automtica en el arranque de un sistema de archivos, modificar el sistema de ficheros de / etc / fstab entrada para mirarde esta manera:

    / Dev/ad0s1f / Usr ufs rw, las ACL 2 2

    Pgina 24La gestin de ACL

    Una vez que han sido activadas, las ACL se pueden establecer, modificar y eliminar con el setfacl comando. A

  • crear o modificar una ACL, utilice el -M opcin, seguido por una especificacin de ACL y un nombre de archivo o una lista denombres de archivo. Puede eliminar una ACL utilizando el -X opcin y especificar una ACL o lista de ACL.Existen tres formas generales de una ACL: una para usuarios y otra para grupos, y otro para los dems. Vamos amirarlos aqu:

    # El usuario ACLu: [usuario]: # Grupo ACLg: [grupo]: # Otro ACLo:

    Observe que en las ACL de usuario y grupo, los nombres de usuario y de grupo reales que la ACL se aplica a sonopcional. Si stos se omiten, que significa que la ACL se aplicar a la ACL de base, que se derivade bits de modo del archivo. Por lo tanto, si modifica estos, los bits de modo se pueden modificar, y viceversa.Vea por usted mismo mediante la creacin de un archivo y luego modificar su ACL de base:

    $ mifichero toque$ ls-l myfile-Rw-rw-r - 1 andrew Andrs 0 13 de octubre 15:57 miarchivo$ setfacl-mu :: ---, g :: ---, o: --- mifichero$ ls-l myfile---------- 1 andrew Andrs 0 13 de octubre 15:57 miarchivo

    A partir de este ejemplo, tambin se puede ver que las mltiples ACLs se pueden enumerar separndolas conpor comas.Tambin puede especificar ACLs para un nmero arbitrario de grupos o usuarios:

    $ foo touch$ setfacl-mu: jlope: rwx, g: Vino: rwx, o: --- foo$ foo getfacl# File: foo# El propietario: andrew# Grupo: andrewusuario :: rw-usuario: jlope: rwxgrupo :: ---grupo: Vino: rwxmscara :: rwxotros :: ---

    Ahora bien, si usted cambi la mscara para R - , Las ACLs para jlope y el vino se convertira efectivamente R - comoas:

    $ setfacl mm: r - foo$ foo getfacl# File: foo# El propietario: andrew# Grupo: andrewusuario :: rw-usuario: jlope: rwx # Efectivo: r -grupo :: ---grupo: Vino: rwx # Efectivo: r -enmascarar :: r -otros :: ---

    Pgina 25Como se mencion anteriormente, un directorio puede tener una ACL por defecto que se aplicar automticamente a los archivosque se crean dentro de ese directorio. Para designar una ACL como predeterminado, prefijo una d: :

    $ mkdir mydir$ setfacl-md: u: jlope: rwx mydir$ getfacl midir# File: mydir# El propietario: andrew# Grupo: andrewusuario :: rwxgrupo :: ---otros :: ---por defecto: usuario :: rwxpor defecto: usuario: jlope: rwxdefault: Grupo :: ---por defecto: mscara :: rwxdefault: other :: ---

    $ touch mydir / bar$ getfacl mydir / bar

  • # File: mydir / bar# El propietario: andrew# Grupo: andrewusuario :: rw-usuario: jlope: rwx # Efectivo: rw-grupo :: ---enmascarar :: rw-otros :: ---

    Como te habrs dado cuenta de los ejemplos anteriores, puede enumerar las ACL utilizando el getfaclcomando. Este comando es bastante sencillo y cuenta con slo unas pocas opciones. La ms til es la-R opcin, que le permite listar las ACL de forma recursiva y funciona muy parecido ls-R .

    Pgina 26Hack # 5. Proteja sus Registros de manipulacin

    Usar atributos de archivo para evitar que intrusos puedan quitar los rastros de sus robos.En el curso de una intrusin, el atacante tendr mayores posibilidades de dejar signos reveladores de sus acciones endiversos registros del sistema. Esta es una valiosa pista de auditora que deben ser bien protegido. Sin registros confiables,puede ser muy difcil de averiguar cmo el atacante entr, o cuando el ataque vino de. Esteinformacin es crucial en el anlisis de los hechos y luego responder a ella ponindose en contacto con el adecuadopartes implicadas [Hack # 125] . Sin embargo, si el intento de ingreso tiene xito y las ganancias de intrusosprivilegios de root, lo que es para que dejara de retirar los rastros de su mal comportamiento?Aqu es donde los atributos de archivo vienen a salvar el da (o al menos que sea un poco mejor). Tanto Linux ylos BSD tienen la capacidad para asignar atributos adicionales para archivos y directorios. Esto es diferente de laestndar Unix esquema de permisos en que los atributos establecidos en un archivo de aplicar universalmente a todos los usuarios deel sistema, y afectan a los accesos a ficheros en un nivel mucho ms profundo que los permisos de archivos o ACL [Hack# 4] . En Linux, se puede ver y modificar los atributos que se establecen para un archivo determinado mediante el uso de la lsattry chattr comandos, respectivamente. Bajo los BSD, puede utilizar ls-lo para ver los atributos y utilicechflags modificarlos.Un atributo til para proteger los archivos de registro es append-only. Cuando se establece este atributo, el archivo no puedese eliminan y las escrituras slo se les permite que se anexar al final del archivo.Para establecer el slo para adjuntar bandera bajo Linux, ejecute este comando:

    # chattr + a

    nombre de archivo

    Bajo los BSD, utilice esto:

  • # chflags sappndnombre de archivo

    Ver cmo el + Aatribuir las obras mediante la creacin de un archivo y estableciendo su atributo slo de adicin:# touch / var / log / logfile# echo "de slo anexar no ajuste"> / var / log / logfile# chattr + a / var / log / logfile# echo "de slo anexar ajuste"> / var / log / logfilebash: / var / log / logfile: Operacin no permitida

    El segundo intento de escritura ha fallado, ya que sobrescribir el archivo. Sin embargo, aadiendo al final deel archivo todava est permitido:

    # echo "anexar al archivo" >> / var / log / logfile# cat / var / log / logfileslo para adjuntar no se estableceaadiendo a presentar

    Obviamente, un intruso que ha ganado privilegios de root podra darse cuenta de que se estn utilizando los atributos de archivoy acaba de quitar la bandera slo de adicin de los registros mediante la ejecucin chattr-a . Para evitar esto, usted necesitarpara deshabilitar la capacidad para quitar el atributo slo de adicin. Para lograr esto en Linux, utilice sumecanismo de capacidades. Bajo los BSD, use la facilidad securelevel.El modelo de capacidades de Linux a fraccionar los privilegios otorgados a la cuenta de root todopoderoso y

    Pgina 27le permite desactivar selectivamente. Para evitar que un usuario quitar el atributo de slo de adicindesde un archivo, es necesario eliminar la CAP_LINUX_IMMUTABLEcapacidad. Cuando est presente en la gestinsistema, esta capacidad permite slo para adjuntar el atributo que desea modificar. Para modificar el conjunto decapacidades disponibles en el sistema, use una utilidad llamada sencilla LCAP ( http://snort-wireless.org/other/lcap-0.0.6 . Tar.bz2.Para desempaquetar y compilar la herramienta, ejecute este comando:

    # xvfj tar lcap-0.0.6.tar.bz2 && cd lcap-0.0.6 && make

    Entonces, para no permitir la modificacin de la slo para adjuntar bandera, ejecute:# . / lcap CAP_LINUX_IMMUTABLE# . / lcap CAP_SYS_RAWIO

    El primer comando elimina la capacidad de cambiar la bandera slo de adicin, y el segundo comandoelimina la posibilidad de hacer cruda I / O. Esto es necesario para que los archivos protegidos no pueden ser modificados poracceder al dispositivo de bloques en el que residen. Tambin impide el acceso a / dev / mem y / dev / kmem ,que proporcionara un resquicio para un intruso para restablecer la CAP_LINUX_IMMUTABLEcapacidad.Para eliminar estas capacidades en el arranque, aadir los dos comandos anteriores para las secuencias de comandos de inicio del sistema(Por ejemplo, / etc / rc.local ). Usted debe asegurarse de que se eliminan las capacidades finales de la orden de inicio, para evitarproblemas con otros scripts de inicio. Una vez lcap ha eliminado la capacidad del ncleo, slo se puede restablecerellos reiniciando el sistema.Los sistemas BSD consiguen lo mismo mediante el uso de securelevels . El securelevel es un kernelvariable que se puede configurar para rechazar ciertas funcionalidades. Elevar el securelevel a 1 es funcionalmentela misma como la eliminacin de las dos capacidades de Linux discutidos previamente. Una vez que el securelevel ha sidoestablecido en un valor mayor que 0, no se puede bajar. De forma predeterminada, OpenBSD elevar el securelevel a 1cuando est en modo multiusuario. En FreeBSD, el securelevel es -1 por defecto.Para cambiar este comportamiento, agregue la siguiente lnea a / etc / sysctl.conf :

    kern.securelevel = 1Antes de hacer esto, usted debe ser consciente de que la adicin de slo aadir las banderas de los archivos de registro lo ms probable eshacer que los scripts de rotacin de logs fallen. Sin embargo, hacer esto mejorar en gran medida la seguridad de su auditorasendero, que ser de gran valor en el caso de un incidente.

  • Pgina 28Hack # 6. Delegar funciones administrativas

    Deja que otros hagan el trabajo por usted sin dar a los privilegios de root.El sudo utilidad puede ayudarle a delegar algunas responsabilidades del sistema a otras personas, sin tener queotorgar pleno acceso de root. sudo es un binario setuid root que ejecuta comandos en un usuario autorizado denombre, despus de que ella ha entrado en su contrasea actual.Como root, ejecute / usr / sbin / visudo para editar la lista de usuarios que pueden llamar a sudo . El valor por defecto sudo lista parecealgo como esto:

    root ALL = (ALL) ALLPor desgracia, muchos administradores de sistemas suelen utilizar esta entrada como una plantilla y subvencin sin restriccionesacceso root a todos los dems administradores de manera unilateral:

    root ALL = (ALL) ALLrob ALL = (ALL) ALLjim ALL = (ALL) ALLdavid ALL = (ALL) ALL

    Mientras que esto puede permitir que usted pueda dar a acceso de root sin revelar la contrasea de root, este mtodoes realmente til slo cuando todas las sudo usuarios pueden completamente confiar. Cuando se configura correctamente,el sudo utilidad proporciona una gran flexibilidad para la concesin de acceso a cualquier nmero de comandos, ejecutecomo cualquier ID de usuario arbitrario (UID).La sintaxis de la sudo lnea es:

    mquina de usuario = ( usuario efectivo ) de comandos

    La primera columna especifica el sudo usuario. La siguiente columna define los anfitriones en el que esta sudo entrada estvlida. Esto le permite utilizar fcilmente un solo sudo configuracin a travs de mltiples mquinas.Por ejemplo, suponga que tiene un desarrollador que necesita acceso root en una mquina de desarrollo, pero noen cualquier otro servidor:

    peter beta.oreillynet.com = (ALL) ALLLa siguiente columna (entre parntesis) especifica el usuario efectivo que pueden ejecutar los comandos. Esto es muymuy til para que los usuarios puedan ejecutar cdigo como usuario distinto del root:

    peter lists.oreillynet.com = (cartero) TODOFinalmente, la ltima columna especifica todos los comandos que este usuario puede ejecutar:

    david ns.oreillynet.com = (enlazar) / usr / sbin / rndc, / usr / sbin / namedSi usted se encuentra especificando grandes listas de comandos (o, para el caso, a los usuarios o mquinas), tomarventaja de sudo sintaxis de alias 's. Un alias puede ser utilizado en lugar de su respectiva entrada en cualquier lnea deel sudo de configuracin:

    User_Alias ADMINS = robar, jim, davidUser_Alias WEBMASTERS = peter, nancyRunas_Alias DAEMONS = bind, www, smmsp, ircdHost_Alias servidores web = www.oreillynet.com, www.oreilly.com, www.perl.comCmnd_Alias PROCS = / bin / kill, / bin / killall, / usr / bin / habilidad, / usr / bin / topCmnd_Alias APACHE = / usr / local / apache / bin / apachectlWEBMASTERS servidores web = (www) APACHEADMINS ALL = (DAEMONS) TODO

    Tambin es posible especificar un grupo de sistemas en lugar de un usuario, para permitir que cualquier usuario que pertenezca a ese

    Pgina 29grupo para ejecutar comandos. Justo como prefijo el nombre del grupo con un %, As:

  • % = Wwwadmin servidores web (www) APACHEAhora cualquier usuario que sea parte de la wwwadmin grupo puede ejecutar apachectl como el www de usuario en cualquiera de losmquinas de servidor web.Una caracterstica muy til es la NOPASSWD:bandera. Cuando est presente, el usuario no tendr que introducir una contraseaantes de ejecutar el comando. Por ejemplo, esto permitir que el usuario rob ejecute kill , killall , habilidad ,y la parte superior en cualquier mquina, como cualquier usuario, sin necesidad de introducir una contrasea:

    rob ALL = (ALL) NOPASSWD: PROCSPor ltimo, sudo puede ser una alternativa til para do para ejecutar comandos en el arranque del sistema rcarchivos:

    (Cd / usr / local / mysql,. Sudo-u mysql / bin / safe_mysqld Y)sudo-u www / usr / local / apache / bin / apachectl comienzo locales

    Para que eso funcione en tiempo de arranque, la lnea predeterminadaroot ALL = (ALL) ALL debe estar presente.Utilizar sudo con las habituales advertencias que se aplican a los archivos binarios setuid. En particular, si usted permite que sudo para ejecutarcomandos interactivos (como editores) o cualquier tipo de compilador o intrprete, se debe asumir que se trata deposible que el sudo usuario ser capaz de ejecutar comandos arbitrarios como el usuario efectivo. Sin embargo,en la mayora de los casos esto no es un problema, y es sin duda preferible a regalar indebidael acceso a los privilegios de root.Rob Flickenger

    Pgina 30Hack # 7. Automatice criptogrfico Comprobacin de la firma

    Utilice secuencias de comandos y los servidores de claves para automatizar la tarea de verificar la autenticidad del software.Una de las cosas ms importantes que puede hacer por la seguridad de su sistema es hacer usted mismofamiliarizado con el software que est instalando. Es probable que no tienen el tiempo, el conocimiento, orecursos para ir a travs del cdigo fuente de todo el software que se instala. Sin embargo, la verificacin de queel software est compilando e instalando es lo que los autores tenan la intencin puede ir una manera larga hacia lala prevencin de la amplia distribucin de los troyanos.Recientemente, las versiones con troyanos de varias piezas fundamentales de software (como tcpdump , libpcap , sendmail ,y OpenSSH) se han distribuido. Dado que este es un vector de ataque cada vez ms popular, verificandoel software es de vital importancia.Por qu esta necesidad de ser automatizado? Se necesita poco esfuerzo para verificar el software antes de instalarlo, pero

  • ya sea por pereza o la ignorancia, muchos administradores de sistemas pasan por alto este paso crtico. Este es unejemplo clsico de la pereza "false", ya que probablemente conducir a ms trabajo para el administrador del sistema en el largocorrer.Este problema es difcil de resolver, ya que depende de los programadores y distribuidores para obtener suacta conjuntamente. Luego est el aspecto de la pereza. Los paquetes de software a menudo ni siquiera cuentan con unfirma que se utilizar para la verificacin de la legitimidad de lo que has descargado, e incluso cuando las firmasse proporcionan con el cdigo fuente, para verificar el cdigo que debe buscar a travs del proveedor de software deEl sitio para la clave pblica que se utiliza para crear la firma. Despus de encontrar la clave pblica, que tiene quedescargarlo, compruebe que la clave es genuino, aadir a su llavero, y finalmente comprobar la firma deel cdigo.Aqu es lo que este se vera como en la comprobacin de la firma para la versin 1.3.28 del web Apacheservidor utilizando GnuPG ( http://www.gnupg.org ):

    # claves GPG-importacin# gpg-verificar apache_1.3.28.tar.gz apache_1.3.28.tar.gz.ascgpg: Firma hecho Mi Jul 16 13:42:54 PDT 2003 con la clave DSA ID 08C975E5gpg: Good firma de "Jim Jagielski "gpg: tambin conocido como " Jim Jagielski"gpg: tambin conocido como "Jim Jagielski "gpg: ADVERTENCIA: Esta clave no est certificada con una firma de confianza!gpg: No hay ninguna indicacin de que la firma pertenezca al propietario.Huella digital: 8B39 757B 1D8A 994D F243 3ED5 8B3A 601F 08C9 75E5

    Como puede ver, no es terriblemente difcil de hacer, pero este paso es a menudo pasado por alto cuando las personas se encuentran en unaprisa. Aqu es donde este hack viene al rescate. Vamos a utilizar un poco de secuencias de comandos de shell y cules sonconocido como servidores de claves para reducir el nmero de pasos necesarios para llevar a cabo el proceso de verificacin.Los servidores de claves son una parte de una infraestructura de criptografa de clave pblica que le permite recuperar las clavesde una tercera parte de confianza. Una buena caracterstica de GnuPG es su capacidad de consultar los servidores de claves para una clave de identificacin ypara descargar el resultado en un anillo de claves local. Para averiguar qu tecla ID de pedir, nos basamos en el hecho deque el mensaje de error generado por GnuPG nos dice qu tecla ID que era incapaz de encontrar a nivel local cuandotratando de verificar la firma.En el ejemplo anterior, si la clave GnuPG que estaba buscando no se haba importado antes de lala verificacin de la firma, que habra generado un error como este:

    gpg: Firma hecho Mi Jul 16 13:42:54 PDT 2003 con la clave DSA ID 08C975E5gpg: No se puede comprobar la firma: la clave pblica que no se encuentra

    El siguiente guin se aprovecha de que el error:

    Pgina 31#! / Bin / shVENDOR_KEYRING = vendors.gpgKeyServer = search.keyserver.netKEYID = "0x \ Qgpg - verificar $ 1 $ 2 2> & 1 | grep 'ID tecla' | awk '{print $ NF}' \ Q"gpg - no-default-keyring - llavero $ VENDOR_KEYRING - recv-key \

    - Servidor de claves $ servidor de claves $ KEYIDgpg - llavero $ VENDOR_KEYRING - verify $ 1 $ 2

    La primera lnea de la secuencia de comandos especifica el llavero en el que el resultado de la consulta de servidor clave seralmacenado. Usted podra utilizar pubring.gpg (que es el depsito de claves predeterminado para GnuGP), pero utilizando un archivo separadohar que la gestin de las claves pblicas de proveedores ms fcil. La segunda lnea de la secuencia de comandos especifica qu claveservidor de consulta (el script usa search.keyserver.net ; otra buena es pgp.mit.edu ). La terceraline intenta (y no) para verificar la firma sin consultar previamente al servidor de claves. A continuacin, utiliza laID de clave que vio en el error, anteponiendo un 0x con el fin de consultar el servidor de claves en la lnea siguiente. Finalmente,GnuPG intenta verificar la firma y especifica el archivo de claves en los que el resultado de la consulta se almacena.Esta secuencia de comandos se ha acortado el proceso de verificacin, al eliminar la necesidad de buscar e importar elclave pblica que se utiliza para generar la firma. Volviendo al ejemplo de la verificacin de la Apache1.3.28 cdigo fuente, se puede ver cmo mucho ms cmodo que es ahora verificar el paquete deautenticidad:

    # checksig apache_1.3.28.tar.gz.asc apache_1.3.28.tar.gzgpg: solicitando clave 08C975E5 del servidor de claves HKP search.keyserver.netgpg: clave 08C975E5: clave pblica importadagpg: Cantidad total procesada: 1gpg: importado: 1gpg: Warning: using insecure memory!gpg: consulte http://www.gnupg.org/faq.html para ms informacingpg: Firma hecho Mi Jul 16 13:42:54 PDT 2003 con la clave DSA ID 08C975E5

  • gpg: Good firma de "Jim Jagielski "gpg: tambin conocido como " Jim Jagielski"gpg: tambin conocido como "Jim Jagielski "gpg: comprobando el trustdbgpg: teclas no en ltima instancia, de confianza que se encuentrangpg: ADVERTENCIA: Esta clave no est certificada con una firma de confianza!gpg: No hay ninguna indicacin de que la firma pertenezca al propietario.Huella digital: 8B39 757B 1D8A 994D F243 3ED5 8B3A 601F 08C9 75E5

    Este pequeo, escritura rpida ha reducido tanto el nmero de pasos y la cantidad de tiempo necesario para verificarun paquete fuente. Como con cualquier buen script de shell, debe ayudar a ser perezoso en el buen sentido: al hacerms trabajo correctamente, pero con menor esfuerzo de su parte.

    Pgina 32Hack # 8. Compruebe Escuchar Servicios

    Averiguar si los servicios innecesarios estn escuchando y bsqueda de posibles puertas traseras.Una de las primeras cosas que debe hacer despus de una instalacin nueva del sistema operativo es ver qu servicios estncorriente y remueva cualquier servicio que no sean necesarios en el proceso de inicio del sistema. Se puede usar un puertoescner (como Nmap [Hack # 66] ) Y ejecutarlo contra el anfitrin, pero si uno no vino con elinstalacin del sistema operativo, es probable que tenga que conecte el equipo fresco (y posiblemente inseguro) ala red para descargar uno.Adems, Nmap puede ser engaado si el sistema est usando reglas de firewall. Con reglas de barrera, un serviciopuede ser completamente invisible para Nmap menos ciertos criterios (como la direccin IP de origen) tambin coinciden.Cuando usted tiene acceso shell al servidor mismo, por lo general es ms eficiente para encontrar puertos abiertos utilizandoprogramas que se instalaron con el sistema operativo. Una opcin es netstat , un programa que sevisualizar diversa informacin y estadsticas relacionados con la red.Para obtener una lista de los puertos de escucha y sus procesos que poseen bajo Linux, ejecute este comando:

    # netstat-luntpConexiones a Internet activa (slo servidores)Proto Recv-Q Send-Q Direccin Local Direccin extranjera Estado Nombre del PID / Programatcp 0 0 0.0.0.0:22 0.0.0.0: * ESCUCHAR 1679/sshdudp 0 0 0.0.0.0:68 0.0.0.0: * 1766/dhclient

    Desde la salida, se puede ver que esta mquina es, probablemente, una estacin de trabajo, ya que slo tiene un DHCPcliente que se ejecuta junto con un servidor SSH para acceso remoto. Los puertos en uso se muestran tras los dos puntosen el Direccin Local columna ( 22 para sshd y 68 para dhclient ). La ausencia de cualquier otro escuchaprocesos significa que sta es probablemente una estacin de trabajo, no un servidor de red.Por desgracia, la versin BSD de netstat no nos deja enumeramos los procesos y los ID de proceso (PID)que el propietario del puerto de escucha. Sin embargo, la BSD netstat comando sigue siendo til para la inclusin de lapuertos de escucha en su sistema.Para obtener una lista de los puertos de escucha en FreeBSD, ejecute este comando:

    # netstat-a-n | egrep 'Proto | ESCUCHAR'Proto Recv-Q Send-Q Direccin Local Direccin de Relaciones Exteriores(Estado)tcp4 0 0 * 0.587 *. * ESCUCHARtcp4 0 0 * 0,25 *. * ESCUCHARtcp4 0 0 * 0,22 *. * ESCUCHARtcp4 0 0 * 0.993 *. * ESCUCHARtcp4 0 0 * 0.143 *. * ESCUCHARtcp4 0 0 * 0.53 *. * ESCUCHAR

  • Una vez ms, los puertos en uso se enumeran en la Direccin Local la columna. Muchos administradores de sistemas experimentadoshan aprendido de memoria los nmeros de puerto comunes para los servicios populares y ser capaz de ver a simple vista queeste servidor se est ejecutando servicios sshd, SMTP, DNS, IMAP e IMAP + SSL. Si alguna vez tiene dudassobre los servicios que normalmente se ejecutan en un puerto dado, ya sea eliminan la -N cambiar de la netstatcomando (que dice netstat utilizar nombres, pero puede tomar mucho ms tiempo para correr al buscar DNSdirecciones) o de forma manual grep el / etc / services archivo:

    # 993 / etc / services-grep wimaps 993/udp # Imap4 protocolo sobre TLS / SSLimaps 993/tcp # Imap4 protocolo sobre TLS / SSL

    El / etc / services archivo slo debe usarse como una gua. Si un proceso est escuchando en un puerto situado en elarchivo, no significa necesariamente que el servicio enumerado en / etc / services es lo que provee.Observe tambin que, a diferencia de la produccin de netstat en Linux, con la versin BSD usted no consigue el

    Pgina 33PIDs de los propios demonios. Tambin puede notar que no hay puertos UDP se incluyen en DNS. Estees porque sockets UDP no tienen un ESCUCHAREstado en el mismo sentido que los sockets TCP hacen. Paramostrar sockets UDP, debe agregar udp4 con el argumento de egrep , Por lo que es'Proto | ESCUCHAR | udp4' . Sin embargo, debido a la forma de UDP funciona, no todos los sockets UDP sern necesariamenteasociada a un proceso de demonio.En FreeBSD, hay otro comando que nos dar justo lo que queremos. La sockstatcomando realiza slo un pequeo subconjunto de lo que netstat puede hacer y se limita a enumerar informacin sobreConectores Unix dominio y tomas Inet, pero es ideal para los propsitos de este hack.Para obtener una lista de los puertos de escucha y de sus procesos de titulares con sockstat , Ejecute este comando:

    # sockstat -4-LUSUARIO COMANDO PID FD PROTO DIRECCIN LOCAL Direccin en el extranjeroraz sendmail 1141 4 tcp4 *: 25 *: *raz sendmail 1141 5 tcp4 *: 587 *: *raz sshd 1138 3 tcp4 *: 22 *: *raz inetd 1133 4 tcp4 *: 143 *: *raz inetd 1133 5 tcp4 *: 993 *: *llamado llamado 1127 20 tcp4 *: 53 *: *llamado llamado 1127 21 udp4 *: 53 *: *llamado llamado 1127 22 udp4 *: 1351 *: *

    Una vez ms, se puede ver que SSHD, SMTP, DNS, IMAP e IMAP + SSL servicios se estn ejecutando, peroAhora usted tiene el proceso que posee el zcalo ms su PID. Ahora puede ver que los servicios IMAPestn siendo generado a partir de inetd en vez de demonios independientes, y que sendmail y llamado sonla prestacin de los servicios SMTP y DNS.Para la mayora de los dems sistemas operativos tipo Unix, puede utilizar el lsof utilidad(http://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/lsof/ ). lsof es la abreviatura de "archivos abiertos" de la listay, como su nombre lo indica, le permite listar los archivos que estn abiertos en un sistema, adems de lalos procesos y los PID que tienen abiertas. Al ser las tomas y los archivos funcionan de la misma manera bajo Unix, lsoftambin se puede utilizar para listar sockets abiertos. Esto se hace con la -I opcin de lnea de comandos.Para obtener una lista de los puertos de escucha y los procesos que los poseen usando lsof , ejecute este comando:

    # lsof-i-n | egrep 'COMANDO | ESCUCHAR'COMANDO PID TIPO FD USUARIO DISPOSITIVO DE TAMAO / OFF nombre de nodollamado 1127 llamado 0xeb401dc0 20u IPv4 0T0 TCP *: dominio (ESCUCHAR)inetd 1133 root 4u IPv4 0xeb401ba0 0T0 TCP *: imap (ESCUCHAR)inetd 1133 root 5u IPv4 0xeb401980 0T0 TCP *: imaps (ESCUCHAR)sshd 1138 root 3u IPv4 0xeb401760 0T0 TCP *: ssh (ESCUCHAR)sendmail 1141 root 4u IPv4 0xeb41b7e0 0T0 TCP *: smtp (ESCUCHAR)sendmail 1141 root 5u IPv4 0xeb438fa0 0T0 TCP *: presentacin (ESCUCHAR)

    Una vez ms, usted puede cambiar el argumento de egrep para mostrar sockets UDP. Sin embargo, el uso de este tiempo UDPen lugar de udp4 , Lo que hace que el argumento 'COMANDO | ESCUCHAR | UDP'. Como se mencion anteriormente, no todos UDPsockets necesariamente se asocian con un proceso demonio.

  • Pgina 34Hack # 9. Prevenir Servicios de la unin a una interfaz

    Mantener los servicios de escucha en un puerto en vez de utilizar cortafuegos para ellos.A veces, es posible que desee limitar un servicio para escuchar en slo una interfaz especfica. Por ejemplo,Apache [Hack # 55] puede ser configurado para escuchar en una interfaz especfica en lugar de todos los disponiblesinterfaces. Usted puede hacer esto mediante el uso de laEscuchar en su archivo de configuracin y especificar laDireccin IP de la interfaz:

    Escuchar 192.168.0.23:80Si utiliza VirtualHost entradas, puede especificar las interfaces que se unen a en una base por virtual-host:

    ...

    Puede ser que incluso tienen servicios que estn escuchando en un puerto TCP, pero no necesita serlo. Servidores de bases de datoscomo MySQL se utilizan a menudo en combinacin con Apache y se fijan con frecuencia a coexistir en elmismo servidor cuando se usa de esta manera. Las conexiones que vienen de la misma mquina que MySQL esinstalado en el uso de un socket de dominio en el sistema de archivos para las comunicaciones. Por lo tanto, MySQL no haceque escuchar en un socket TCP. Para evitar que se escucha, se puede utilizar el - Skip-networkingopcin de lnea de comandos al iniciar MySQL o especificarlo en la seccin [mysqld] de su my.cnf archivo:

    [Mysqld]...skip-networking...

    Otro programa que usted encontrar a menudo que escucha en un puerto es el servidor X11, que escucha en TCPel puerto 6000 de forma predeterminada. Este puerto se utiliza tradicionalmente para permitir a clientes remotos conectarse a su X11servidor para que puedan sacar sus ventanas y aceptar el teclado y el ratn de entrada; Sin embargo, con el advenimientode SSH y X11 reenvo, esto realmente no se necesita ms. Con el redireccionamiento X11 activada en ssh ,cualquier cliente que necesite conectarse a su servidor X11 ser un tnel a travs de la conexin SSH ypasar por alto el puerto TCP de escucha cuando se conecta a su servidor X11.Para que su servidor X Windows para dejar de escuchar en este puerto, todo lo que necesita hacer es agregar -Nolisten tcp ael comando que se utiliza para iniciar el servidor. Esto puede ser difcil, sin embargo, averiguar qu archivocontrola cmo se inicia el servidor puede ser una tarea desalentadora. Por lo general, usted puede encontrar lo que ests buscandoen / etc/X11 .Si utilizas gdm , abierto gdm.conf y busque una lnea similar a esta:

    command = / usr/X11R6/bin/XA continuacin, slo tiene que aadir-Nolisten tcp al final de la lnea.Si est utilizando xdm , busque un archivo llamado Xservers y asegrese de que contiene una lnea similar a esta:

    : 0 / tcp nolisten-usr/X11R6/bin/X localesAlternativamente, si usted no est utilizando una pantalla gestionada y en su lugar se utiliza startx o similarcomando para iniciar el servidor X11, puede simplemente aadir -Nolisten tcp hasta el final de su startx comando.Para asegurarse de que se pasa al proceso del servidor X, iniciarlo despus de un juego extra de guiones:

    $ startx --- tcp nolisten

    Una vez que inicie X, el fuego de un terminal y ver lo que est escuchando mediante lsof o netstat [Hack # 8] . Ustedya no debe ver nada enlazado al puerto 6000.

    Pgina 35Hack # 10. Restringir Servicios con espacio aislado Entornos

    Mitigar el dao del sistema, manteniendo los compromisos de servicio contenida.A veces, mantenerse al da con los ltimos parches simplemente no es suficiente para evitar un robo. A menudo, un nuevoexplotar circular en los crculos privados de largo antes de que se public un aviso oficial, durante los cualeslos servidores corren en ataque inesperado. Con esto en mente, es prudente tomar adicionalmedidas preventivas para contener los posibles efectos de un servicio comprometido. Una forma de hacer esto espara ejecutar sus servicios en una caja de arena . Idealmente, esto minimiza los efectos de un compromiso de servicio en lasistema global.

  • La mayora de los sistemas Unix y tipo Unix incluyen algn tipo de llamada de sistema u otro mecanismo para sandboxingque ofrece varios niveles de aislamiento entre el host y el cajn de arena. Lo menos restrictivo yms fcil de configurar es unachroot () medio ambiente, que est disponible en casi todos los Unix y Unix-likesistemas. FreeBSD tambin incluye otro mecanismo llamado crcel () , Que proporciona algunos adicionalrestricciones ms all de los proporcionados por chroot () .

    TIPSi desea configurar un entorno restringido, pero no se siente que se necesita el nivel de seguridad proporcionado por un sistema basado-call-entorno de recinto de seguridad, consulte "Restringir Shell Environments" [Hack # 20] .

    El uso de chroot ()

    chroot () muy simplemente cambia el directorio raz de un proceso y de todos sus hijos. Si bien este es uncaracterstica de gran alcance, hay muchas advertencias a usarlo. Lo ms importante, no debe haber ninguna manera paranada se ejecuta dentro de la caja de arena para cambiar su identificador de usuario efectivo (EUID) a 0, que es el UID de root.Naturalmente, esto implica que usted no desea ejecutar algo como root dentro de la crcel.Hay muchas maneras de salir de un chroot () caja de arena, pero todos ellos se basan en la posibilidad de obtener la razprivilegios en el entorno de espacio aislado. La posesin de UID 0 en el interior de la caja de arena es la de Aquilestaln de chroot () . Si un atacante puede obtener privilegios de root dentro de la caja de arena, todas las apuestas estn apagadas.Mientras que el atacante no podr romper directamente fuera del entorno de espacio aislado, que puede ser capaz depara ejecutar funciones en el interior del espacio de direcciones de los procesos de explotacin "que le permitir sacarlo.Hay algunos servicios que apoyan chroot () entornos llamando a la funcin dentro de laprograma en s, pero muchos servicios no lo hacen. Para ejecutar estos servicios dentro de un entorno de espacio aislado mediantechroot () , Es necesario hacer uso de la chroot comando. La chroot comando llama simplemente chroot ()con el primer argumento de la lnea de comandos y los intentos de ejecutar el programa especificado en la segundaargumento. Si el programa es un binario enlazado estticamente, todo lo que tienes que hacer es copiar el programa paraen algn lugar dentro del entorno de espacio aislado; Sin embargo, si el programa est vinculado dinmicamente,tendr que copiar todos sus libreras de soporte para el medio ambiente tambin.Vea cmo funciona esto mediante la creacin de fiesta en unchroot () medio ambiente. En primer lugar tratar de ejecutarchroot sincopiar cualquiera de las bibliotecas de bash necesita:

    # mkdir-p / chroot_test / bin# cp / bin / bash / chroot_test / bin /# chroot / chroot_test / bin / bashchroot: / bin / bash: No existe el fichero o directorio

    Ahora averiguar qu bibliotecas de bash necesidades mediante el uso de laldd comando. Entonces copia las bibliotecas en suchroot () medio ambiente y el intento de ejecutar chroot nuevo:

    Pgina 36# ldd / bin / bashlibtermcap.so.2 => / lib/libtermcap.so.2 (0x4001a000)libdl.so.2 => / lib/libdl.so.2 (0x4001e000)libc.so.6 => / lib/tls/libc.so.6 (0x42000000)/ Lib/ld-linux.so.2 => / lib/ld-linux.so.2 (0x40000000)# mkdir-p chroot_test / lib / tls && \> (cd / lib; \> cp libtermcap.so.2 libdl.so.2 ld-linux.so.2 / chroot_test / lib; \> tls cd; cp libc.so.6 / chroot_test / lib / tls)# chroot / chroot_test / bin / bashbash-2.05b #bash-2.05b # echo / */ Bin / lib

    La creacin de unchroot () medio ambiente involucra principalmente de ensayo y error para conseguir los permisos derecha yconseguir todas las dependencias de la biblioteca en su lugar. Asegrese de considerar las implicaciones de tener otraprogramas como mknod o montaje disponibles en el chroot () medio ambiente. Si estn disponibles, elatacante puede ser capaz de crear nodos de dispositivos para acceder a la memoria directa o volver a montar los sistemas de archivos, por lo tantoa salir de la caja de arena y hacerse con el control total de todo el sistema.Esta amenaza puede ser mitigado por poner el directorio en un sistema de archivos montado con las opciones queprohibir el uso de archivos de dispositivo [Hack # 1] , Pero eso no siempre es conveniente. Es recomendable hacer comomuchos de los archivos y directorios en el chroot () -Ed directorio posible propiedad del root y escriturapor root, con el fin de hacer imposible que un proceso para modificar los archivos auxiliares (esto incluyearchivos, como bibliotecas y archivos de configuracin). En general, lo mejor es mantener los permisos lo ms restrictivacomo sea posible y para relajarse ellos slo cuando sea necesario (por ejemplo, si los permisos impiden que el

  • daemon funcione correctamente).Los mejores candidatos para un chroot () medio ambiente son los servicios que no necesitan privilegios de root en absoluto. Paraejemplo, MySQL escucha las conexiones remotas en el puerto 3306 de forma predeterminada. Desde este puerto est por encima1024, mysqld puede iniciarse sin privilegios de root y, por tanto, no supone el riesgo de ser utilizado paratener acceso de root. Otros demonios que necesitan privilegios de root pueden incluir una opcin para dejar estoprivilegios despus de completar todas las operaciones para las que necesitan acceso root (por ejemplo, la unin a un puertopor debajo de 1024), pero se debe tener cuidado para asegurar que los programas dejan caer sus privilegios correctamente. Si unusos del programa seteuid () ms bien que setuid () para dejar sus privilegios, el atacante an puede explotar atener acceso de root. Asegrese de leer sobre los avisos de seguridad actuales para los programas que se ejecutarn nicamente conprivilegios de root.Se podra pensar que simplemente no poner compiladores, una concha, o utilidades como mknod en el areneromedio ambiente podra protegerlos en el caso de un compromiso de la raz dentro del entorno restringido.En realidad, los atacantes pueden lograr la misma funcionalidad al cambiar su cdigo de llamardel sistema ("/ bin / sh") para llamar a cualquier otra funcin de biblioteca C o llamada al sistema que desean. Si puedemontar el sistema de archivos de lachroot () -Ed programa va desde el uso de la bandera de slo lectura [Hack # 1] , puedehacen que sea ms difcil para los atacantes para instalar su propio cdigo, pero esto todava no es bastante a prueba de balas.A menos que el demonio tiene que ejecutar en el entorno puede cumplir los criterios expuestos anteriormente,puede ser que desee ver en el uso de un mecanismo de caja de arena ms potente.

    El uso de la crcel de FreeBSD ()

    Uno de estos mecanismos est disponible bajo FreeBSD y se implementa a travs de la crcel () llamada al sistema.crcel () proporciona muchas ms restricciones en el aislamiento del entorno de recinto desde el sistema hosty ofrece caractersticas adicionales, tales como la asignacin de direcciones IP de las interfaces virtuales en el hostsistema. Gracias a esta funcionalidad, puede crear un servidor virtual completo o slo ejecutar un solo servicio dentro

    Pgina 37el entorno de espacio aislado.Al igual que conchroot () , El sistema proporciona una crcel comando que utiliza la crcel () llamada al sistema. He aqula forma bsica de la crcel comando, donde ipaddr es la direccin IP de la mquina en la que la crcelse est ejecutando:

    crcel nuevo comando hostname ipaddr raz

    El nombre de host puede ser diferente del nombre de la mquina principal y la direccin IP puede ser cualquier IPde direcciones que el sistema est configurado para responder a. En realidad se puede dar la apariencia de que todoslos servicios en la crcel se estn ejecutando en un sistema separado utilizando un nombre de host diferente y configurary el uso de una direccin IP adicional.Ahora, intenta ejecutar una shell dentro de una crcel:

    # mkdir-p / jail_test / bin# cp / stand / sh / jail_test / bin / sh# crcel / jail_test jail_test 192.168.0.40 / bin / sh# echo / */ Bin

    Esta vez, no hay bibliotecas necesitan ser copiados, porque los binarios en / stand estn enlazados estticamente.En el lado opuesto del espectro, se puede construir una crcel que puede funcionar como un casi completamente funcionalservidor virtual con su propia direccin IP. Los pasos para hacer esto en esencia, de la construccin de FreeBSDfuente y especificando el directorio de la crcel como el destino de la instalacin. Usted puede hacer esto mediante la ejecucin delsiguientes comandos:

    # mkdir / jail_test# cd / usr / src# make world DESTDIR = / jail_test# cd etc && make distribucin DESTDIR = / jail_test# mount_devfs devfs / jail_test / dev# cd / jail_test && ln-s dev / kernel nula

    Sin embargo, si usted est pensando en ejecutar un solo servicio desde dentro de la crcel, este es sin duda una exageracin.(Tenga en cuenta que en el mundo real es probable que necesite para crear / dev / null y / dev / log nodos de dispositivos en suentorno de recinto para la mayora de los demonios para que funcione correctamente.)Para iniciar sus crceles automticamente en el arranque, se puede modificar / etc / rc.conf , que proporciona varias variables

  • para el control de la configuracin de una crcel dado:jail_enable = "YES"jail_list = "test"ifconfig_lnc0_alias0 = "255.255.255.255 mscara de red 192.168.0.41 inet"jail_test_rootdir = "/ jail_test"jail_test_hostname = "jail_test"jail_test_ip = "192.168.0.41"jail_test_exec_start = "/ bin / sh / etc / rc"jail_test_exec_stop = "/ bin / sh / etc / rc.shutdown"jail_test_devfs_enable = "YES"jail_test_fdescfs_enable = "NO"jail_test_procfs_enable = "NO"jail_test_mount_enable = "NO"jail_test_devfs_ruleset = "devfsrules_jail"

    Ajuste jail_enable a S causar / Etc / rc.d / inicio crcel para ejecutar en el arranque. Esto a su vez leeel resto de la jail_X variables desde rc.conf , por iteracin sobre los valores para jail_list (Varias crcelesse pueden enumerar, separados por espacios) y en busca de sus correspondientes conjuntos de variables. Estos

    Pgina 38variables se utilizan para configurar el directorio raz, el nombre de host, la direccin IP, el inicio de cada individuo la crcely secuencias de cierre, y qu tipos de sistemas de archivos especiales se montan dentro de la crcel.Para la crcel para ser accesible desde la red, tambin tendr que configurar una interfaz de red condireccin IP de la crcel. En el ejemplo anterior, esto se hace con la ifconfig_lnc0_alias0 variable. Paraestablecer los alias IP en una interfaz para su uso con una crcel, esto toma la forma de:

    ifconfig_ _Alias = "inet mscara de red 255.255.255.255"As que, si quieres crear una crcel con la direccin 192.168.0.42 y utilizar la misma interfaz que el anterior,que haba puesto algo como esto en tu rc.conf :

    ifconfig_lnc0_alias1 = "255.255.255.255 mscara de red 192.168.0.42 inet"Una cosa que no es del todo evidente es que usted no est limitado a utilizar una direccin IP diferente para cadala crcel. Puede especificar varias crceles con la misma direccin IP, siempre y cuando no se est ejecutando serviciosdentro de ellos que escuchen en el mismo puerto.A estas alturas ya ha visto cmo las crceles de gran alcance puede ser. Si usted quiere crear servidores virtuales que se puedenfuncionan como sistemas FreeBSD enteras dentro de una crcel o simplemente para compartimentar los servicios crticos, que puedenofrecer otro nivel de seguridad en la proteccin de sus sistemas de intrusos.

  • Pgina 39Hack # 11. Utilice proftpd con MySQL Fuente de autenticacin

    Asegrese de que el sistema operativo de su sistema de base de datos est funcionando tan eficientemente como sea posible con estos ajustes.proftpd es un poderoso demonio FTP con una sintaxis de configuracin muy similar a Apache. Cuenta con una gran cantidadde opciones que no estn disponibles en la mayora de los demonios FTP, incluyendo ratios, hosting virtual, y un modulardiseo que permite a la gente a escribir sus propios mdulos.Uno de estos mdulos es mod_sql , que permite proftpd para utilizar una base de datos SQL como motorfuente de autenticacin. Actualmente, mod_sql soporta MySQL y PostgreSQL. Esta puede ser una buena manerapara ayudar a bloquear el acceso a su servidor, ya que los usuarios entrantes sern autenticarse en la base de datos (ypor lo tanto, no requieren una cuenta shell real en el servidor). En este hack, nos pondremos en contacto proftpdautenticar contra una base de datos MySQL.En primer lugar, descargar y generar la fuente de proftpd y mod_sql :

    $ bzcat proftpd-1.2.6.tar.bz2 | tar xf -/ Proftpd-1.2.6/contrib $ tar zvxf .. / ../mod_sql-4.08.tar.gz/ Proftpd-1.2.6/contrib $ cd. .. / Proftpd-1.2.6 $ / configure - with-mdulos = mod_sql: mod_sql_mysql \

    - With-incluye = / usr / local / mysql / include / \- With-bibliotecas = / usr / local / mysql / lib /

    TIPSustituya la ruta a tu MySQL instalar, si no es en / usr local / mysql / / .

    Ahora, crear el cdigo e instalarlo:rob @ catlin :/ proftpd-1.2.6 $ make && sudo make install

    A continuacin, cree una base de datos para proftpd utilizar (suponiendo que usted ya tiene MySQL en funcionamiento):

    $ mysqladmin create proftpd

    Entonces, permitir acceso de slo lectura a la misma desde proftpd :$ mysql-e "subvencin seleccionar el proftpd. * a proftpd @ localhost \

    identificado por "secreto"; "

    Cree dos tablas en la base de datos, con este esquema:CREATE TABLE users (varchar identificador de usuario (30) NOT NULL DEFAULT'',contrasea varchar (30) NOT NULL DEFAULT'',UID int (11) NULL por defecto,gid int (11) NULL por defecto,varchar homedir (255) NULL por defecto,shell varchar (255) NULL por defecto,UID CLAVE nico (UID),ID de usuario UNIQUE KEY (id de usuario)) TYPE = MyISAM;

    CREAR TABLA (gruposnombregrupo varchar (30) NOT NULL DEFAULT'',gid int (11) NOT NULL DEFAULT '0 ',miembros VARCHAR (255) NULL por defecto) TYPE = MyISAM;

    Pgina 40Una forma rpida de crear las tablas es salvar a este esquema a un archivo llamado proftpd.schema y ejecutar uncomando como mysql proftpd

  • SQLMinUserUID 111La SQLConnectInfo lnea toma la forma contrasea de usuario de base de datos. Tambin puede especificar una base de datos sobreotro host (incluso en otro puerto) con algo como esto:

    SQLConnectInfo proftpd @ dbhost: 5678 alguien somepasswordLa SQLAuthTypes lnea le permite crear usuarios con contraseas almacenadas en el formato estndar de Unix cripta,o de MySQL PASSWORD () funcin. Ten en cuenta que si usted est utilizando mod_sql 's facilidades de registro, elcontrasea puede ser expuesto en texto plano, por lo que mantener los registros privados.La SQLAuthTypes line como se especifica no permitir contraseas en blanco; si usted necesita esa funcionalidad, tambinincluir la vaco palabra clave. La SQLMinUserGID y SQLMinUserUID lneas especifican el grupo mnimoy el ID de usuario que proftpd permitirn al iniciar sesin. Es una buena idea hacer esto ms grande que 0 (Para prohibirconexiones como root), pero debe ser lo ms bajo como sea necesario para permitir que los permisos adecuados en el sistema de archivos. En estosistema, tenemos un usuario y un grupo llamado www , tanto con el ID de usuario (UID) y el ID de grupo (GID)ajustado a111 . Como vamos a querer a los desarrolladores web para poder iniciar la sesin con estos permisos, tendremos que establecerlos valores mnimos a 111 .Por ltimo, usted est listo para crear usuarios en la base de datos. La siguiente lnea crea el usuario jimbo , conderechos de los usuarios efectivos como www / www , y l en los vertederos usr apache / htdocs / / local / directorio al iniciar la sesin:

    mysql-e "insertar en los valores de los usuarios (" jimbo ", contrasea ('shhh'), '111 ', \'111 ',' / Usr / local / apache / htdocs ',' / bin / bash '); "proftpd

    La contrasea para jimbo se cifra con la de MySQL PASSWORD ()funcionar antes de ser almacenado. La/ Bin / bash la lnea se pasa a proftpd pasar proftpd 's RequireValidShell Directiva. No tiene que ver conconceder acceso a una consola real para el usuario jimbo .En este punto, usted debera ser capaz de disparar hasta proftpd e inicie sesin como usuario ji