Archive for Seguridad

Creación de un usuario utilizando la Terminal

Crear usuarios es una tarea fácilmente realizable mediante la interfaz gráfica del sistema, sin embargo, puede resultar útil para un administrador conocer el modo de hacer lo mismo mediante la línea de comandos, ya sea para agregar muchos usuarios de una sola vez o para un proceso de automatización.

El programa a utilizar se llama dscl y he aquí algunos ejemplos de su uso (es necesario ejecutarlos como root):

Para crear un usuario nuevo en el sistema local:
dscl / -create /Users/nuevoUsuario
Asignación de un shell adecuado:
dscl / -create /Users/nuevoUsuario UserShell /bin/bash
Agregar el nombre completo del usuario:
dscl / -create /Users/nuevoUsuario RealName "Nuevo Usuario"
Asignarle un número de id:
dscl / -create /Users/nuevoUsuario UniqueID 99999
Asignarle un id de grupo:
dscl / -create /Users/nuevoUsuario PrimaryGroupID 1000000
Asignarle un directorio base (home folder):
dscl / -create /Users/nuevoUsuario NFSHomeDirectory /Users/nuevoUsuario
Finalmente asignarle una contraseña:
dscl / -passwd /Users/nuevoUsuario PASSWORD
o bien:
passwd nuevoUsuario
Si acaso se desea que el nuevo usuario pueda administrar el equipo:
dscl / -append /Groups/admin GroupMembership nuevoUsuario

Hay ocasiones que el comando tal como aparece no se ejecuta, dando lugar a un mensaje de error; en esos casos se deberá cambiar la sintaxis:

dscl / …

por:

dscl . …

Proximamente: Modificación de la sintaxis del comando para agregar usuarios a un directorio maestro residente en otra computadora.

Comments

Cámara espía de la computadora

Durante mucho tiempo las computadoras han podido conectarse a cámaras de diversos tipos, incluso controlarlas de algún modo para que puedan ser utilizadas como cámaras de seguridad o cosa semejante.

Desde hace algunas generaciones, las computadoras de Apple han incluido una cámara en la parte superior de la pantalla, lo que ha provocado que en algunas instalaciones donde consideran mucho su propia seguridad, éstas y otras computadoras les sea negado el acceso.

Pero ya que se tiene ese juguete incluido con la computadora, es posible utilizarlo para la seguridad de uno mismo. Una computadora que permanece mucho tiempo en un lugar puede utilizarse como cámara de seguridad, tomando fotos cada cierto tiempo y almacenándolas en algún lugar accesible desde otra ubicación. De esta manera se puede “echar un ojo” a la casa cuando uno anda fuera.

Con las portátiles el uso puede ser un poco diferente, pero con el mismo propósito. Se pueden hacer tomas periodicas y enviar las imágenes por correo o subirlas en algún servidor, de esta forma si el equipo se extravía o es robado, quien sea que lo utilice será captado por la cámara y así se podrá tener al menos una prueba de quién usó el equipo en algún momento. Con suerte y hasta se podría recuperar después de un tiempo.

Para la primera parte, la de tomar fotos sin dar mucha oportunidad de que alguien se de cuenta, las instrucciones se pueden encontrar en este sitio:

[HOWTO] iSightCapture Command Line Security Workaround

En este lugar se explica cómo hacer que la computadora haga las capturas periodicas de imágenes y un pequeño “truco” para disminuir la posibilidad de que quien utilice el equipo se de cuenta de ello.

En este otro sitio:

Snap and upload iSight pictures on wake from sleep

Agregan la posibilidad de subir las imágenes capturadas a algún servidor o enviarlas por correo. En este caso el evento de captura ocurre cada vez que la computadora es reactivada después de que ésta se haya dormido.

Ya sea como juego o realmente como cosa seria, las posibilidades de utilizar la cámara incorporada pueden resultar interesantes.

Comments

Cuidados del Leopardo

Conforme evolucionan los sistemas operativos la complejidad de los mismos es cada vez más grande, por lo mismo suelen verse afectados por algún descuido o situación no prevista, que en un caso desfavorable pueden permitir que algún intruso los use como puerta trasera para meterse a un equipo.

El más registrado para encontrar esas puertas y a la vez más atacado por lo mismo es Windows; sin embargo cualquier otro no está excento de lo mismo, tal es el caso del Mac OS X. Tal vez no tenga los todos los reflectores encima o no exista un enorme interés por atacarlo, pero los hoyos de seguridad en el sistema existen y seguirán apareciendo, tanto del bloque principal como de todo el montón de aplicaciones que se incluyen.

Aunque en realidad la principal brecha de seguridad somos los usuarios.

En ocasiones nos confiamos y dejamos la computadora libre por un momento, suficiente para que cualquiera pueda posarse enfrente y hacer algo en ella. También solemos dejar nuestras contraseñas escritas en una nota cercana al equipo o utilizamos cosas triviales, tal como fechas, nombres de familiares, mascotas, equipos deportivos, marcas comerciales o secuencias simples (”aeiou”, “1234″, “asdfg”, entre otras).

Otra forma de descuido se da cuando navegamos en Internet, visitando páginas de forma descuidada, guiados de “oidas” por comentarios de otros o simplemente dando clics sin mucho orden. En algún momento tal vez bajemos un programa que promete poner un bonito video o un protector de pantalla o quien-sabe-que para la computadora, siendo en realidad otra cosa con una intención tal vez no buena.

Para intentar prevenir esta última situación el Mac OS X 10.5 (Leopard) cuenta con un mecanismo que marca los archivos que bajamos de Internet, para que cuando intentemos abrirlos nos ponga sobre aviso que se trata de algo externo, e incluso da la opción de visitar el sitio desde el que se bajó:

Ventana cuarentena

Si es la única cosa que se está abriendo y sabemos perfectamente qué hace y de dónde lo bajamos no hay problema, le decimos que lo abra y ya, pero ¿que pasa si ese mismo programa en el que confiamos lo copiamos a otras varias computadoras? Pues el Mac OS X amablemente nos hará la misma pregunta en cada una de ellas… ¡cada vez que la abramos!.

En la computadora donde se descargó no hay problema, la primera vez que aparece y se le ordena qué hacer, el sistema lo recordará y no volverá a preguntar, pero no ocurre así en las otras.

Después de buscar un rato por Internet y repasar varias veces la página de resultados de Google encontré una manera de evitar esto: modificar la marca que el sistema agrega cuando se descarga un archivo.

La forma de hacer esto es mediante el comando “xattr“.

Una vez que la aplicación ya se copió a la computadora de destino se puede ejecutar de la siguiente manera (usando todavía como ejemplo “iShowU“):

find /Applications/iShowU.app -name * -exec xattr -d com.apple.quarantine {} \;

Esto va a buscar a partir del “paquete” de la aplicación los archivos que tengan ese atributo y lo quitará.

Esto rompe el mecanismo de protección que el sistema provee, por lo que hay que ser cuidadosos con las aplicaciones que se distribuyen a otros equipos.

Comments

Ajustes para el Swift 3D

El programa Swift 3D es otro más en la lista de aquellos que no funcionan adecuadamente en un entorno restringido como el de los laboratorios; la aplicación requiere de poder escribir en algunas de sus carpetas.

Para compensar por eso será necesario recurrir a la misma estrategia que con otras aplicaciones: restaurar los archivos a su estado original cada ocasión que se reinicie el equipo.

Para ello es necesario detectar las carpetas que necesitan estar libres y que serán las que se restauren cada vez.

En el caso de esta aplicación todo funciona correctamente hasta que se llega al momento de personalizar las texturas, ambientes y otros ajustes. Después de realizar los cambios que se necesitan el programa reclama que no es posible guardarlos.

La primera que se detectó esto fue con la modificación de “materiales“, pero después de descubrió que también con “ambientes” e “iluminación“, de hecho, con cualquiera de las opciones del menú “Setup“.

Después de abrir las carpetas que coinciden en nombre con las opciones de ese menú, el programa funcionó correctamente.

Lo siguiente será un script similar al que se usa para el Bryce, donde se eliminan las carpetas afectadas, se ajustan los permisos y además se elimina cualquier archivo que no pertenezca al superusuario.

Primer paso:

Crear una carpeta “Options” y dentro de ella guardar las carpetas afectadas pero comprimidas:


mkdir Options
tar cfv Options/Animations.tar Animations
tar cfv Options/Materials.tar Materials
tar cfv Options/Environments.tar Environments
tar cfv Options/Lighting.tar Lighting
tar cfv Options/Models.tar Models

Segundo paso:

En el script de limpieza buscar por archivos que no pertenezcan al superusuario y eliminarlos, borrar las carpetas libres y copiarlas de nuevo desde la carpeta “Options“. Finalmente ajustar los permisos en las nuevas carpetas:


find . \! -user root -type f -exec rm {} \;
find . \! -user root -type d -exec rm -rf {} \;
rm -rf Animations Materials Environments Lighting Models
tar xfv Options/Animations.tar
tar xfv Options/Materials.tar
tar xfv Options/Environments.tar
tar xfv Options/Lighting.tar
tar xfv Options/Models.tar
chown -R root:admin Animations Materials Environments Lighting Models
chmod -R a+rw Animations Materials Environments Lighting Models

Comments

“Time Machine” y laboratorios

En la versión de Mac OS X 10.5 Apple agregó una característica que facilita el realizar copias de respaldo tanto del equipo como de los archivos que uno utiliza. Es un sistema que no es perfecto, pero suficientemente sencillo de usar y que, una vez activado y funcionando, puede ayudar a no perder información para siempre.

Antes de activar nada del Time Machine la computadora va a preguntar, cada ocasión que se inserte un disco removible, si queremos utilizarlo para ese propósito, no importa si se trata de un iPod, un disco duro externo o incluso alguna que otra memoria USB.

Si no disponemos de un disco que podamos dedicar a esa tarea habrá que decirle “no” cada vez que la computadora nos pregunte, pero en cuanto se designa un disco el equipo no vuelve presentar su interrogante. Las primeras veces es desconcertante por que uno no espera esas ventanas, pero conforme pasa el tiempo puede ser irritante o incómodo, especialmente si continuamente se conectan múltiples discos a la computadora.

En un entorno de laboratorios esto puede ser peor, ya que cada usuario puede tener uno o más discos que califiquen para ser usados y en su descuido, no faltaría quien seleccione la opción que los active poniendo en riesgo su información, ya que dependiendo de la capacidad del disco, el sistema puede o no solicitar que sea borrado.

La primera vez que intenté encontrar una solución lo único que hallé fue lo siguiente:

  1. Conectar un disco.
  2. Aceptar la propuesta de usarlo para Time Machine.
  3. Dejar que el sistema haga su primer respaldo.
  4. Una vez que terminó, poner el Time Machine en Off.

Después de ello la computadora no volverá a preguntar cada vez que detecte un disco nuevo.

¿Pero que pasa si no se tiene un disco/tiempo/espacio/ganas para hacer lo anterior, o si se tienen muchas computadoras como es el caso de un laboratorio?

Afortunadamente alguien ya dió con una solución más sencilla y rápida, que además evita “sacrificar” espacio en algún disco. Esta opción requiere del uso de la Terminal y es el siguiente comando (todo en una sola línea):

defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool YES

Por supuesto el mismo comando permitirá regresar al comportamiento original si así se deseara:

defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool NO

Con ese comando y la ayuda del Apple Remote Desktop, la labor de desactivar ese interrogatorio en múltiples computadoras toma úncamente un minuto.

La referencia original sobre el comando de desactivación la encontré en:

macosxhints.com: 10.5 – Disable the ‘use this disk?’ Time Machine dialog

Comments

Adios NetInfo

Desde que las computadoras pudieron conectarse entre si para compartir información también nació la necesidad de que los registros sobre los usuarios pudieran conocerse entre equipos, de esta manera quien estuviera registrado podría utilizar cualquier equipo en la instalación.

Conforme las redes crecen y se diversifica el uso de las estaciones de cómputo, el permiso de uso necesita restringirse de algún modo, al mismo tiempo se vuelve necesario juntar los datos de los usuarios en algún lugar donde sea más sencillo administrar su información. Para realizar estas tareas surgieron sistemas de administración de directorios, los cuales han sido varios y de distintos proveedores, casi siempre incompatibles entre si, a pesar de ello varios lograron establecerse y eventualmente también apareció un estándar que ahora es la base de la mayoría.

Algunos de estos sistemas tienen nombres somo “Active Directory” de Microsoft o “eDirectory” de Novell, el estándar que ha moldeado a todos ellos se llama “LDAP” (Lightweight Directory Access Protocol). Por otro lado NeXT, antes de que fuera adquirida por Apple, desarrolló su propio sistema llamado “NetInfo”, el cual cubre las mismas necesidades.

En general todos los sistemas mantienen una base de datos central donde se administra la información de los usuarios, así como toda una serie de permisos para utilizar o no ciertos recursos disponibles en red, dicha información se puede mantener en uno o varios servidores e incluso, puede estar escalonada de tal forma que algunos datos sean exclusivos de algunas zonas mientras que otros pueden ser globales para la organización.

Con el establecimiento de LDAP como estándar para los servicios de directorios, Apple comenzó a trabajar en su propia versión basada en él, la denominó “Open Directory” y poco a poco ha estado remplazando a NetInfo como el repositorio central de la información de los usuarios.

Hasta la versión del Mac OS X 10.4 NetInfo se ha utilizado para almacenar los datos de los usuarios que son locales a la computadora, mientras que para los servicios de red la versión de servidor utiliza ya Open Directory. Con la nueva versión del sistema, la 10.5, Apple le ha dado cierre al ciclo de vida de NetInfo, todo ahora esta almacenado utilizando el otro servicio, por lo que la administración en redes de los equipos Macintosh se modificará.

Todas las utilerías de la linea de comandos que se utilizaban para controlar NetInfo ya no son válidas en el nuevo sistema y han sido remplazadas por otro tipo de comandos. Algunos de estos comandos son descritos en un artículo de la revista Macworld que habla sobre este mismo tema.

Comments

Login masivo con ARD [continuación]

Hace un tiempo escribí sobre una manera de hacer un login masivo en todo el laboratorio utilizando un comando del Apple Remote Desktop y enviando una serie de instrucciones de AppleScript.

Pues resulta que esas instrucciones no funcionan en todos los casos, incluso es posible que la versión del sistema operativo para las computadoras Intel de plano no haga caso.

Esas observaciones las hace Nathan Fisher en su correo enviado el 1 de septiembre a la lista “Remote Desktop”. Menciona que precisamente en la versión Intel del sistema la tecla de retorno es ignorada (tal vez sea una opción de seguridad), pero que en la versión PowerPC no.

Para contrarrestar lo anterior él propone activar el acceso completo del teclado antes de intentar enviar cualquier “teclazo” a la Ventana de Login. De esta manera se puede simular mejor la escritura y se tiene más control sobre los elementos de la interfaz. Hecho lo anterior se envian las órdenes de tecleo a la ventana y finalmente se desactiva la opción de acceso completo.

En caso que no funcione al primer intento, se puede hacer una segunda ocasión y, al menos en sus pruebas, le ha funcionado adecuadamente.

El script completo se lista a continuación, pero para motivos de presentación se muestra como una serie de comandos individuales en su propio renglón, en realidad esto se debe de colocar como un solo gran renglón:

line_01='set logInUser to "admin"';
line_02='set logInPassword to "donoharm"';
line_03='tell application "System Events"';
line_04='tell application process "loginwindow"';
line_05='key code 53';
line_06='delay 1';
line_07='key code 125';
line_08='delay 1';
line_09='key code 36 using option down';
line_10='delay 1';
line_11='keystroke tab';
line_12='delay 1';
line_13='key code 117';
line_14='delay .5';
line_15='keystroke tab';
line_16='delay .5';
line_17='key code 117';
line_18='keystroke return';
line_19='delay 1';
line_20='keystroke tab';
line_21='delay .2';
line_22='repeat with aChar in characters of logInUser';
line_23='keystroke aChar';
line_24='delay 0.2';
line_25='end repeat';
line_26='keystroke tab';
line_27='delay .5';
line_28='repeat with aChar in characters of logInPassword';
line_29='keystroke aChar';
line_30='delay 0.2';
line_31='end repeat';
line_32='key code 98 using control down';
line_33='delay 0.2';
line_34='keystroke return';
line_35='end tell';
line_36='end tell';
value=$(osascript -e "$line_01" -e "$line_02" -e "$line_03" -e "$line_04" -e "$line_05" -e "$line_06" -e "$line_07" -e "$line_08" -e "$line_09" -e "$line_10" -e "$line_11" -e "$line_12" -e "$line_13" -e "$line_14" -e "$line_15" -e "$line_16" -e "$line_17" -e "$line_18" -e "$line_19" -e "$line_20" -e "$line_21" -e "$line_22" -e "$line_23" -e "$line_24" -e "$line_25" -e "$line_26" -e "$line_27" -e "$line_28" -e "$line_29" -e "$line_30" -e "$line_31" -e "$line_32" -e "$line_33" -e "$line_34" -e "$line_35" -e "$line_36") # 53=escape,125=down,117=delete

Comments

Una más de seguridad

Este tema de la seguridad puede dar para muchas notas y hasta para… bueno, si no fuera tan extenso y cambiante no habría tantos libros y sitios diciendo algo sobre el tema.

Y ya que mencioné eso, uno de tantos sitios que existen, y que además vende software que auxilia en ese ámbito, publicó una lista de 10 recomendaciones de seguridad para usuarios Mac. No significa que la plataforma sea insegura, ya que de fábrica no necesariamente lo es, pero la configuración que hagamos de ella y nuestros hábitos de navegación pueden ser un vector de entrada.

La liga al sitio es:

Internet security for your Macintosh: the top 10

Comments

A propósito de contraseñas

En la entrada anterior comenté un poco sobre la seguridad que puede brindar una buena contraseña para mantener la información que guardamos en la computadora fuera del alcance de terceros.

La idea original para comenzar a escribir la nota anterior fue un comentario en el sitio MacInTouch en su foro sobre seguridad, donde aparece el comando que describí para saber quien llama a la puerta. Aunque en realidad el preámbulo tuvo más peso.

Puesto que me enfoqué un poco en la seguridad de las contraseñas, unos pocos renglones más abajo en el foro mencionado hay una liga a una explicación más detallada sobre el mismo tema:

Strong passwords: How to create and use them

Menciona algo de lo mismo que escribí, pero además contiene un enlace a una página que permite jugar con nuestra contraseña para saber si es buena, medio buena, medio mala o mala:

Password checker

Si acaso se pregunta uno por la seguridad de las contraseñas que uno escriba en ese verificador, no hay problema, el código de la página funciona de manera local en el navegador y en ningún momento realiza conexiones al exterior, por lo que cualquier cosa que escribamos se mantendrá ahí y solo ahí, no irá a parte alguna.

Comments

¿Quién toca a la puerta?

Cuando se conecta una computadora a una red se le expone a un entorno pocas veces amable. En algún momento mientras visitamos algún sitio web podemos exponer nuestro equipo a una página con elementos que provoquen la apertura de hoyos en la seguridad de nuestro navegador. Es posible también que algún juego que parecía inocente y decidimos instalar, resultara ser una puerta para llenar de anuncios la computadora, o peor aun, que se quede descansando sin percatarnos de ello y mientras capture todo lo que escribamos en el teclado (contraseñas y todo), en casos más extremos, pudieran enviar a algún otro sitio esa información o dejar abierta una puerta a nuestra computadora para que alguien más la use.

Aun quienes utilizamos una Mac no estamos libres de todos esos programas malignos (si, es cierto, también hay eso para la Mac, afortunadamente son prácticamente inexistentes), sin embargo no es excusa para no prevenirse un poco.

Recién salida de la caja una Mac es completamente segura, en realidad no comparte nada y supuestamente no hay puertas abiertas al exterior, pero por si acaso hemos activado el “compartir archivos”, “compartir impresora”, “compartir web”, “acceso remoto” o alguna otra cosa parecida ya tenemos una puerta abierta al mundo.

Lo mejor en esos casos es tener contraseñas “difíciles de adivinar”, pero no tanto como para que ni siquiera uno las recuerde. Por ejemplo algo como “aVerSiEntras” (a partir de este momento ni pensar en usar esa) puede ser una contraseña razonablemente buena, pero no completamente segura, usar más letras ayuda, y utilizar números y otros caracteres todavía más: aV{rSi3ntr]as (consejo: ya tampoco usar esta).

Si lo anterior no ha sido suficiente para pensar en mejores contraseñas, revisar el registro de seguridad del sistema puede ser otro incentivo. Dicho archivo se encuentra en /var/log/secure.log y sólo el súper-usuario lo puede leer.

Usando la Terminal o programas como TextWrangler se puede revisar el contenido del mismo. Tal vez en una computadora que no tiene muchos programas, no se le han activado las opciones de compartir y que rara vez ha solicitado que se escriba la contraseña del administrador, no aparecerá gran cosa en ese registro. Por el contrario, otro equipo donde se han instalado montones de programas y actualizaciones, comparte archivos y se cambia de usuario continuamente tendrá cientos de líneas en él.

Para poner un ejemplo extremo, el servidor web que sirve este blog es un objetivo seguro de cuanto zombie y hacker pueda toparse con él. Por supuesto que está activo el servicio web, pero también el servicio ssh y alguno más; se encuentra detrás de un cortafuegos y simplemente está ahí esperando que alguien solicite una conexión. No es un sitio de gran tránsito y principalmente es para uso interno, pero es visible desde el exterior.

Durante los últimos meses este servidor ha visto solicitudes de conexión por parte de 24,709 usuarios distintos, sorprendente si se toma en cuenta que en realidad solo hay poco más de 100 usuarios registrados, y no todos tienen permiso de conectarse. Para dar una idea del volumen de intentos de conexión, aquí va la lista de “los primeros 10″:

105901 root
6722 admin
2936 mysql
2477 test
2354 webmaster
1887 alex
1624 www
1331 nobody
1298 postfix
1135 guest

Por supuesto que el más atacado siempre va a ser root ya que se trata del mismísimo súper-usuario, pero por ejemplo mi propio usuario es uno de los más solicitados, por lo que tengo que mantener una contraseña razonablemente buena (y no, no es ninguna de las mencionadas arriba), además de cambiarla con regularidad.

Si se quiere conocer qué tan atacada ha sido una computadora el siguiente comando puede ayudar a obtener una lista como la anterior (todo en una sola línea):

sudo grep "failed to auth" /var/log/secure.log | sed "s/^.* user \(.*\)\.$/\1/" | sort | uniq -c | sort -nr

El comando usa grep para revisar el registro de seguridad por intentos fallidos, los pasa a sed parar dejar solo el nombre del usuario, con sort los ordena, uniq los cuenta y finalmente los vuelve a ordenar.

En la computadora de la oficina lo único que obtengo es mi propio usuario con un par de intentos, lo que indica que el ambiente de red es inofensivo comparado con el del servidor.

Un detalle a observar del comando anterior es que sólo busca por intentos fallidos, si acaso alguno de esos intentos logró obtener una conexión (consiguió dar con una contraseña válida), eso no se reportará en la lista. Para lidiar con esas situaciones se requiere de otras estrategias, aunque de eso trataré de hablar en otra entrada, ya que esta se ha convertido en la más larga que he escrito.

Comments (1)