-
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