En línea mediante tarjeta de navegar por UMTS con Debian con wvdial y O2 móvil plana
Desde mi nueva conexión DSL se activa sólo en unas pocas semanas, yo soy Alicia en el país el "inicio rápido" está seleccionado. Se cambió aquí se obtiene una tarjeta SIM, que se puede navegar gratis por 3 meses, como un recurso provisional hasta que la conexión DSL.
Por supuesto que no hizo la conexión a Internet de un cliente, pero como de costumbre en mi servidor, que actúa para la red de toda la casa como un router.
Los mayores problemas que tenía con Alice línea telefónica. La tarjeta SIM viene con una breve guía sobre cómo activarlo a través del portal de Alice. Lamentablemente, ni el sitio en Firefox, Chrome u Opera está funcionando correctamente. No estoy avanzado hasta la activación de la tarjeta SIM.
Así que, por desgracia, las llamadas a la línea telefónica 01 805. Muy molesto para 42ct./Min.
Acerca de la Línea de Akivierung el mapa fue hecho rápidamente, afortunadamente, yo estaba allí en primer lugar, por desgracia, no podía llamar a la APN necesarios para la configuración de wvdial. Yo quería asegurarme de que tenía algo de miedo de las facturas exorbitantes en la configuración incorrecta del valor. Aquí, la técnica podría ayudarme a la felicidad. Para el Alice / O2 de inicio rápido de Internet móvil APN es el plano, de acuerdo a la línea directa de "internet.partner1". Al asignar el nombre fue probablemente ninguno de los involucrados en la comercialización ![]()
Como siguiente paso, que ha insertado la tarjeta SIM en un teléfono móvil que esperar a que la activación y los conscientes de ello. Fue bastante rápido, después de 30 minutos, mi SIM ya estaba activa y se conecta a la red. Increíblemente rápido, ya que la activación de Alice inicialmente promovido a O2. Para hacer que el teléfono nuevo einzubuchen en la red, puede ser apagado y encendido nuevamente. Tengo ahora con el teléfono todavía desactiva la petición del código PIN SIM, ya que tenía hace algún tiempo los problemas que ya era mala con wvdial y un PIN.
El resto trabajó increíblemente bien.
Tengo la tarjeta SIM en mi unidad de Surf Huawei (T-Mobile Memory Surf III)
Bus 001 Device 004: ID 12D1: 1003 Huawei Technologies Co., Ltd.. E220 HSDPA Modem / E270 HSDPA / HSUPA Modem
ha insertado. Después de conectar un puerto USB con un núcleo de Debian proporciona el dispositivo / dev/ttyUSB0 disponibles.
Esto puede apelar a usted con wvdial
# / Etc / wvdial.conf [Dialer Defaults] = ATZ init1 init2 = ATQ0 V1 E1 S0 = 0 & C1 & D2 + FCLASS = 0 Init3 = AT + CGDCONT = 1, "IP", "internet.partner1" Phone = * 99 * ** 1 # = Nombre de usuario Contraseña en blanco = blanco PPPD = yes Modem Nueva = / dev/ttyUSB0 Baud = 460800 Modem Type = Auto Vuelva a conectar un módem analógico = en Entonces uno puede estar con "wvdial" la conexión se establece:
GBN-root-00: 19:27 ~ -> wvdial -> WvDial: Internet dialer version 1.60 -> No se puede obtener información para el puerto serie -> La inicialización del módem. -> Enviar: ATZ ATZ Aceptar -> Envío: ATQ0 V1 E1 S0 = 0 & C1 & D2 + FCLASS = 0 ATQ0 V1 E1 S0 = 0 & C1 & D2 + FCLASS = 0 Aceptar -> Enviar: AT + CGDCONT = 1, "IP", "internet.partner1" AT + CGDCONT = 1, "IP", "internet.partner1" Aceptar - Modem> inicializado. -> Enviar: ATDT * 99 *** 1 # -> A la espera de transporte. ATDT * 99 *** 1 # CONEXIÓN - Carrier> detectado. Esperando pronta. -> No sé qué hacer! A partir pppd y esperando lo mejor. -> A partir pppd en Sun 29 de enero 2012 00:19:58 -> PID del pppd: 3749 -> Utilización de la interfaz ppp0 -> Pppd: ȧ -> Pppd: ȧ -> Pppd: ȧ -> Pppd: ȧ -> Pppd: ȧ -> Pppd: ȧ -> Dirección IP 10.43.145.228 Local -> Pppd: ȧ -> Dirección IP remota 10.64.64.64 -> Pppd: ȧ -> Dirección DNS primaria 193 189 244 225 -> Pppd: ȧ -> Dirección DNS secundaria 193 189 244 206 -> Pppd: ȧ
Después de esto es través de la interfaz de aire para el dispositivo ppp0 Internet disponibles que ahora se puede utilizar para el enrutamiento y reglas de firewall.
Aguas abajo en el centro de Dusseldorf bien, el ascendente se puede desear, sin embargo, muy:
Velocidad de descarga: 2082 kbit / s (260 kbytes / s) Velocidad de carga: 71 kbit / s (9 kbytes / s)
Pero ... No mires a caballo regalado en la boca. Yo pagaría por esta actuación, sin embargo.
Suplemento
Por desgracia, la conexión no es estable. Después de menos de una hora, no hay más datos que fluyen sobre ppp0, wvdial las personas los sufran por desgracia, sin nada y piensa que la conexión aún está activa, elija uno que no es en sí misma continuamente. Para depurar este problema era muy complicado, porque esta solución en todo caso, sólo unas pocas semanas hasta que el circuito tiene que trabajar el DSLers. El siguiente script pequeño que comprueba si la conexión sigue siendo válido. Si no, comience wvdial muerto y lo nuevo.
# / Bin / bash www.google.de mesa de ping-c1> / dev / null si $ [? -Ne 0]; entonces killall wvdial echo `date`>> / var / log / connection_lost.log wvdial y fi
Yo llamo a este script automáticamente a través de una tarea programada y ahora estoy siempre en:
# / Etc / crontab # REDIAL mierda línea de O2 * * * * * Root / root / scripts / redial_ppp
Errores:
- Protección SIM PIN no se desactiva
- La conexión a través de proveedor de telefonía móvil es, por desgracia geNATtet. El servidor privado no es directamente accesible desde el exterior. Servicios de servidor se pueden ofrecer con dificultad.
Información de registro en línea en Dusseldorf hace mala impresión
Yo no estaba muy claro qué datos de carácter personal puede pasar a la oficina de registro para quién. Estoy después de una investigación sobre esta acción empuja a los piratas que se llaman a oponerse a la divulgación de sus propios datos en la oficina de registro. Muchas oficinas de registro de proporcionar los datos que ahora todo el mundo! Paga. Esto sólo puede evitarse mediante una contradicción.
Los datos de la oficina de registro se enviarán a:
Las autoridades estatales, en caso de interés legítimo en el contexto de la asistencia
Por ejemplo, policía, fiscales, oficinas de estadística, etc
El GEZ
Los hermanos, que ya conocemos demasiado bien.
Los partidos, grupos de electores y otras fuentes de las candidaturas en Relativas a las elecciones parlamentarias y locales; § 35 párrafo 1 MG NRW
Para obtener la campaña de publicidad muy brillante.
a los reclamantes y las partes en relación con las peticiones y Referendos con los ciudadanos y la toma de decisiones; § 35 párrafo 2 MG NRW
Con el fin de obtener alto brillo le ayudará a tomar las frecuentes referendos.
en el camino de la consulta automatizada en Internet; § 34 Abs.1b MG NRW
Ese es el punto de que no se conocía anteriormente. Puede tener un portal de Internet
cualquiera que conozca algunas de las características de una persona de forma automática a través de Internet
Obtener la presentación de información. La consulta cuesta actualmente de 4 € por registro en Dusseldorf.
La Ley de Registro de NRW dice en este punto:
§ 34 Abs.1b MG NRW (1b) Si la llamada se hizo posible a través de Internet, asegúrese de que los procedimientos de solicitud y la provisión de información realizado en forma cifrada. La apertura del acceso debe ser de conocimiento público. Una llamada no se permite si el individuo se ha opuesto a esta forma de intercambio de información. La autoridad de registro de la nota más tardar un mes antes de la apertura del acceso a Internet mediante anuncio público en el derecho a objetar. Por otra parte, § 35 párrafo 6, inciso 2 se aplica.
El recurso contra la transferencia de datos es posible rellenando un formulario. Düsseldorf para esto está aquí: https://formulare.duesseldorf.de/forms/frm/7PRPfAZH5gQA8Ja8AkNGaH1rNpDcHR3 Este cargo puede ser liberado en las oficinas públicas. Entonces no es posible el acceso en línea a sus propios datos más. Al parecer, las solicitudes de datos de las respectivas ciudades y condados regionales organizados.
Cuando le pregunté al recepcionista (muy amable) en la oficina a los ciudadanos, podría
No me dio pena decirle a la URL del portal de consulta. Una rápida búsqueda me llevó entonces, pero rápidamente en este lado de la ciudad de Düsseldorf:
https://www.duesseldorf.de/emra/emra.jsp?stadt=D% FCsseldorf y tipo de la ciudad =
El portal era técnicamente un muy dudoso por decir lo menos impresión.
En primer lugar, parece que no hay código de la imagen o similar para dar. Una consulta de tierra parece ser posible con los guiones adecuados.
Además, la aplicación web aprobada con la siguiente consulta en mi mensaje de error en la prueba Tomcat porque no había permitido a las cookies:
He leído esto, pero luego cada vez más dudan de la profesionalidad de una aplicación que proporciona acceso a los datos de todos los ciudadanos de la ciudad ofrece. Un guión no debe bloquearse si las condiciones no existen en la máquina del usuario (en este caso mi galleta de desaparecidos). Mensajes de error de secuencia de comandos de los servidores Web que no están en uso productivo para desactivar es negligente , ya que puede revelar mucho sobre el entorno de sistema empleado. Especialmente cuando un jsp (como en la imagen de arriba), dependiendo de la configuración del servidor y también los comentarios del programador para obtener Quelltextschnippsel. Esto es una chapuza. En una interfaz a los datos personales no debería ocurrir.
Deja que me siente y utilizar la versión de Tomcat, que también aparece en el siguiente mensaje de error. (Apache Tomcat/6.0.24) Se trata de una versión anterior del servidor web el 21/01/2010. La versión actual es la 6.0.33. El servidor tiene cuatro registros versiones largas no se actualizan. Si nos fijamos en las vulnerabilidades que se trataron en esta versión final, se está poniendo incómodo. El servidor no es, obviamente, en las mejores condiciones:
http://tomcat.apache.org/security-6.html fija en Apache Tomcat 6.0.33 lanzado 18 de agosto 2011 Moderada: múltiples debilidades en autenticación HTTP Digest CVE-2011 hasta 1.184 La implementación de la autenticación HTTP Digest se descubrió que varios debilidades: los ataques de repetición se les permitió nonces servidor no se verificaron cuenta cliente nonce no se comprobaron valores qop no se comprobaron valores reino no se verificaron el secreto del servidor fue codificado en una cadena de conocer el resultado de estas deficiencias es que sólo lo que la autenticación implícita, como segura que la autenticación básica. Esto fue corregido en la revisión 1158180a Este fue identificado por el equipo de seguridad de Tomcat, el 16 de marzo de 2011 y hecho público el 26 de septiembre de 2011. Afecta: 6.0.0-6.0.32 baja: la divulgación de información CVE-2011 a 2,204 Cuando se utiliza la base de datos de memoria de usuario (basado en el tomcat-users.xml) y la creación de usuarios a través de JMX, una excepción durante el proceso de creación de usuarios puede provocar un mensaje de error en El cliente JMX que incluye la contraseña del usuario. Este mensaje de error se escribe en los registros de Tomcat. Contraseñas de usuario son visibles para los administradores con acceso a JMX y / o administradores con acceso de lectura para el archivo tomcat-users.xml. No es que estos usuarios tienen permisos, pero son capaces de leer archivos de registro pueden ser capaces de descubrir la contraseña del usuario. Esto fue corregido en la revisión º 1.140.071 Este fue identificado por Polina Genova el 14 de junio de 2011 y hecho público el 27 de junio 2011th Afecta: 6.0.0-6.0.32 baja: la divulgación de información CVE-2011-2526 Tomcat proporciona soporte para el envío de archivos con los protocolos HTTP y HTTP conectores NIO en abril. sendfile se utiliza para el contenido de forma automática servido a través de la DefaultServlet y las aplicaciones implementadas puede utilizar directamente a través de atributos web orden de ajuste. Estos atributos no fueron validados solicitud. Cuando se ejecuta en un controlador de seguridad, la falta de validación permitió una aplicación web maliciosos para realizar una o más de los siguientes que normalmente prevenirse mediante un gestor de seguridad: los archivos de regresar a los usuarios que el administrador de seguridad debe hacer terminar de difícil acceso (a través de un accidente ) la JVM Además, esta vulnerabilidad sólo se produce cuando todos los siguientes: las aplicaciones no confiables web están utilizando el controlador de seguridad se utiliza para limitar las aplicaciones web no son de confianza del NIO HTTP o HTTP abril conector se usa sendfile está habilitado para el conector (este es el valor predeterminado) Esto fue corregido en la revisión 1146703a Este fue identificado por el equipo de seguridad de Tomcat, el 7 de julio de 2011 y hecho público el 13 de julio 2011th Afecta: 6.0.0-6.0.32 Importante: La revelación de información CVE-2011 hasta 2729 debido a un error en el código de capacidades, jsvc (la envoltura de servicio para Linux que es parte del proyecto de Daemon Comunes) no baja capacidad de permitir la aplicación para acceder a los archivos y directorios propiedad de superusuario. Esta vulnerabilidad sólo se produce cuando todos los siguientes: Tomcat se ejecuta en un sistema operativo Linux compilado con lo libcap jsvc usuario tomcat parámetro se utiliza versiones afectadas enviado con archivos de origen para jsvc que incluía esta vulnerabilidad. Esto fue corregido en la revisión 1153824a Este fue identificado por Wilfried Weissmann el 20 de julio de 2011 y hecho público el 12 de agosto de 2011. Afecta: 6.0.30-6.0.32 fija en Apache Tomcat 6.0.32 liberado 03 de febrero 2011 Nota: La cuestión más adelante se fijó en Apache Tomcat 6.0.31 liberación, pero el voto para el candidato de versión 6.0.31 no pasó. Por lo tanto, aunque los usuarios deben descargar 6.0.32 para obtener una versión que incluye una solución para este problema, la versión 6.0.31 no está incluido en la lista de las versiones afectadas. Importante: denegación de servicio remota CVE-2011-0534 El conector NIO amplía su buffer de la línea sin fin durante el proceso de solicitud. Que el comportamiento puede ser utilizado para un ataque de denegación de servicio mediante una petición cuidadosamente. Esto fue corregido en la revisión 1066313th Este fue identificado por el equipo de seguridad de Tomcat el 27 de enero de 2011 y hecho público el 05 de febrero 2011. Afecta: 6.0.0-6.0.30 fija en Apache Tomcat 6.0.30 lanzado 13 de enero 2011 Baja: Cross-site scripting CVE-2011 a 0.013 El Administrador de web HTML interfaz de la aplicación muestra los datos proporcionados, tales como nombres de pantalla, sin filtrar. Una aplicación web malicioso puede provocar la ejecución del script por un usuario administrativo al ver las páginas de gerente. Esto fue corregido en la revisión 1057270a Este fue identificado por el equipo de seguridad de Tomcat el 12 de noviembre de 2010 y hecho público el 05 de febrero 2011. Afecta: 6.0.0-6.0.29 Moderado: Cross-site scripting CVE-2.010-4172 La aplicación Administrador de utilizar y el usuario ha proporcionado parámetros de ordenación orderBy directamente sin filtrado permitiendo cross-site scripting. Esto fue corregido en la revisión 1037779a Esto fue reportado por primera vez al equipo de seguridad Tomcat el 15 de noviembre de 2010 y hecho público el 22 de Nov de 2010. Afecta: 6.0.12-6.0.29 Baja: archivo SecurityManager derivación permiso CVE 2010-3718 Cuando se ejecuta bajo un administrador de seguridad, el acceso al sistema de archivos es limitado, pero las aplicaciones web son permisos de lectura / escritura para el directorio de trabajo. Este directorio se utiliza para una variedad de archivos temporales, tales como los archivos intermedios generados durante la compilación JSP a servlets. La ubicación del directorio de trabajo se especifica un atributo ServletContect que está destinado a ser de sólo lectura a las aplicaciones web. Sin embargo, debido a un error de codificación, el ajuste de sólo lectura no se aplicó. Por lo tanto, una aplicación web malicioso podría modificar el atributo antes de Tomcat aplica los permisos de archivo. Esto se puede utilizar para conceder permisos de lectura / escritura a cualquier área del sistema de archivos que una aplicación web malicioso puede aprovechar. Esta vulnerabilidad sólo es aplicable cuando se alojan las aplicaciones web de fuentes no confiables como los entornos de alojamiento compartido. Esto fue corregido en la revisión 1022560a Esto fue descubierto por el equipo de seguridad de Tomcat, el 12 de mayo de 2010 y hecho público el 05 de febrero 2011. Afecta: 6.0.0-6.0.29 fija en Apache Tomcat 6.0.28 lanzado 09 de julio 2010 Importante: denegación de servicio remota y vulnerabilidad de divulgación de información CVE-2010 a 2227 Varias fallas en el manejo de la cabecera "Transfer-Encoding" se encontraron impidió que el reciclaje de un búfer. Un atacante remoto podría provocar este defecto que podría causar las solicitudes posteriores al fracaso y / o fugas de información entre las peticiones. Este defecto se mitiga si Tomcat está detrás de un proxy inverso (como el servidor web Apache 2.2), el proxy debe rechazar la cabecera de la transferencia de codificación no válida. Esto fue corregido en la revisión 958977 ª Esto fue reportado por primera vez al equipo de seguridad Tomcat el 14 de junio de 2010 y hecho público el 09 de julio 2010. Afecta: 6.0.0-6.0.27 Nota: La cuestión más adelante se fijó en Apache Tomcat 6.0.27 liberación, pero el voto para el candidato de versión 6.0.27 no pasó. Por lo tanto, aunque los usuarios deben descargar 6.0.28 para obtener una versión que incluye una solución para este problema, la versión 6.0.27 no está incluido en la lista de las versiones afectadas. Baja: La revelación de información en las cabeceras de autenticación de CVE-2010-1157 El encabezado WWW-Authenticate HTTP para la autenticación básica e implícita incluye un nombre de dominio. Si unelemento se especifica en el archivo web.xml de la aplicación se va a utilizar. Sin embargo, un no se especifica a continuación, Tomcat generará nombre del dominio con el fragmento de código request.getServerName () + "" + request.getServerPort (). En algunas circunstancias esto puede exponer el nombre de host o dirección IP local de la máquina que ejecuta Tomcat. Esto fue corregido en la revisión 936540 ª Esto fue reportado por primera vez al equipo de seguridad de Tomcat, el 31 de mayo de 2009 y hecho público el 21 de abril 2010. Afecta: 6.0.0-6.0.26
Todo esto parece muy incierto, y para mí es un ejemplo de la voluntad del Estado vivió privacidad. Los datos se vende, y casi nadie es consciente. La implementación técnica deja mucho que desear, y se ejecuta en sistemas muy técnicos que son conocidos por ser defectuoso y necesita ser actualizado con urgencia. También parece haber una inspección final y la aceptación calificada en proyectos de TI (conocidos en el Estado suelen ser bastante caros) no siempre tienen lugar.
El punto más sólo puedo señalar que no parece haber ningún portal central en todo el país con la lectura en línea para todos los datos del informe. Entonces, no sería ciertamente muy lejos de lo que los israelíes que ha ocurrido recientemente .
Me alegro de que me han celebrado, pero si alguien no entiende algo de energía criminal y el conocimiento técnico todavía podría ocurrir (gratis) para mí (y todos los demás), creo que por lo menos cuestionable. A primera vista, no el sistema de Düsseldorf endurecido en contra de los ataques.
Tweet Neglector. Un pequeño script PHP para eliminar los tweets de Twitter de edad
Tweet automatiza el proceso de eliminación de los tweets Neglector edad de su cuenta de Twitter. Básicamente se ofrece para "expirar" la funcionalidad de sus tweets. Es útil para personas que quieren utilizar Twitter, pero no quieren una historia de sus tweets para permanecer en línea durante décadas.
HISTORIA: 20 de noviembre 2011 | Version 0.1 Versión inicial. Elimina Tweets 28 de diciembre 2011 | Version 0.2 Pequeñas correcciones de errores. Ahora borra retweets también. Bugs conocidos: - No funciona si tweets de más de 1.000 tweets en el marco de tiempo usted planea mantener tweets. Lo mismo para retweets (100 permitidos). Estas son las deficiencias de la API de Twitter GET estoy usando cajeros automáticos. Tal vez voy a arreglar esto con la próxima versión
Tweet Neglector utiliza la API de Twitter para eliminar todos los tweets que se publicaron antes de que un número determinado de días a partir de ahora. De esta manera usted puede configurar el script para borrar todos los tweets que son más de una semana o un mes, por ejemplo. El script debe ejecutarse automáticamente desde un cron job u otro mecanismo de automatización en una base regular.
Este script no puede proteger de archivos Tweet externo. Lo que se desconoce si los tweets borrados se archivan en silencio por Twitter (apuesto a que son). Así que (como siempre) antes de pensar en Twitter.
Tweet Neglector usa PHP como lenguaje de scripting y paquetes de Twitter OAuth biblioteca de Matt Harris para el Acceso a la API.
Instalación
- PHP5 necesarios para tmhOAuth - Descomprimir el archivo en un directorio de su elección. - Registro de tu cuenta de Twitter claves API en https://dev.twitter.com/apps - Editar la configuración de la secuencia de comandos para satisfacer sus necesidades: # Teclas de Twitter API, símbolos y secretos # Obtener estas teclas -> https://dev.twitter.com/apps $ Consumer_key = "TU CLAVE aquí"; $ Consumer_secret = "TU CLAVE aquí"; $ Access_token = "TU CLAVE aquí"; $ Access_token_secret = "TU CLAVE aquí"; # Número de tweets por sesión para trabajar en Tweets_per_session = $ 1000; # Nombre de usuario de Twitter $ Twitter_username = "TU NOMBRE DE USUARIO"; # Días que puede guardar los tweets $ Keep_days = 30; - Ejecute el script de forma manual desde el navegador, consola o automáticamente por cronjob / Usr / bin / php / var / www / tweetneglector / tweetneglector.php
Tweet Neglector 0.2 descarga aquí
HOWTO: Rápido y sucio servidor DHCP y DNS cache con dnsmasq en Ubuntu
DHCP en la LAN es práctico. Ya no es necesario para gestionar la configuración de red de cada equipo en la red a los propios clientes, pero todo tiene un hermoso lugar central en el servidor. Durch DNS-Caching sparen die Clients ein wenig Zeit beim Auflösen von Hostnames, da die Anfragen für bekannte Hostnames vom lokalen Cache übernommen werden können und nicht mehr an einen Server im Internet gestellt werden müssen.
Ein kleiner DHCP-Server ist mit dnsmasq sehr schnell eingerichtet.
# dnsmasq installieren apt-get install dnsmasq
Die Konfiguration findet zentral in der Datei /etc/dnsmasq.conf statt. Man sollte sich vor den geballten Konfigurationsoptionen in der Datei nicht abschrecken lassen. So gut wie alles dient nur als Beispiel und ist per default auskommentiert. Eine sehr kurze Konfig reicht bereits für ein funktionierendes Setup:
DHCP
# DHCP netmask # Clients bekommen 255.255.255.0 als Netmask dhcp-option=1,255.255.255.0 # default gateway # Clients bekommen als Gateway 192.168.1.251 dhcp-option=3,192.168.1.251 # dns # Clients bekommen als Nameserver 192.168.1.4 # Falls man dnsmasq auch als DNS-Cache benutzen möchte, sollte dies die # IP des Servers sein, auf dem dnsmasq läuft dhcp-option=6,192.168.1.4 # Für bekannte Rechner immer dieselbe IP anhand der MAC-Adresse vergeben: # Hier bekommt der Rechner mit der MAC 00:11:22:33:44:55 die IP 192,168.1.1 für 12 Stunden dhcp-host=00:11:22:33:44:55,lobby,192.168.1.1,12h dhcp-host=00:11:22:33:44:66,lobby2,192.168.1.2,12h # Alle Rechner, die nicht per MAC identifiziert werden können, erhalten IPs # aus dem Pool 192.168.1.120 bis 150 dhcp-range=192.168.1.120,192.168.1.150,12h
DNS
Die DNS-Funktionalität von dnsmasq benötigt eigentlich keine Konfiguration.
dnsmasq besorgt sich seine Nameserver aus /etc/resolv.conf . Hier sollten die
bekannten Nameserver des Providers eingetragen werden und evtl noch als Fallback
die 8.8.8.8 für Googles DNS-Server.
Weitere Hostnames, die im lokalen Netz gelten sollen, können dnsmasq in der Datei
/etc/hosts bekannt gemacht werden. Hier eingetragene Hostnames stehen allen Rechnern
im LAN zur Verfügung.
Fallstricke
dnsmasq muss nach Konfigänderungen seine Konfigurationsdateien neu einlesen
/etc/init.d/dnsmasq restart
Falls Clients noch eine Lease vom alten DHCP-Server haben, kann man sie manuell dazu bringen, einen neuen DHCP-request zu starten.
#Linux dhclient eth0 #Windows ipconfig /RELEASE ipconfig /RENEW
Dringend muss man darauf achten, den bisher genutzen DHCP-Server (meistens im Router zum Internet) zu deaktivieren. 2 DHCP-Server im LAN können viel Chaos generieren.
Wlan für EEE 1000H rt2860 unter Ubuntu
Mit irgendeinem Update in letzter Zeit wurde das WLAN auf meinem EEE PC 1000H unter Ubuntu recht instabil. Dauernde Verbindungsabbrüche, kein WLAN nach Suspend, langsame Verbindung, etc.
Ich bin mir nicht ganz sicher woran es liegt, wahrscheinlich hat der rt2860 Treiber mit irgendeinem Update einen Bug bekommen.
Zum Glück kann das Problem durch die Installation der Windows-Treiber mit ndiswrapper gelöst werden.
Dies ist nur eine etwas verkürzte deutsche Übersetzung der englischen Originalanleitung von nevdelap aus dem Ubuntuforum. (Vielen Dank)
1. Windows Treiber saugen und entpacken (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)
Segundo Linux Treiber blacklisten
#/etc/modprobe.d/blacklist.conf blacklist rt2x00lib blacklist rt2x00pci blacklist rt2x00usb blacklist rt2400pci blacklist rt2500pci blacklist rt2500usb blacklist rt2800lib blacklist rt2800pci blacklist rt2800usb blacklist rt61pci blacklist rt73usb blacklist rt2600 blacklist rt2860 # Asus eee 1000H has an rt2860. To be loaded by ndiswrapper. blacklist b43 blacklist b43legacy blacklist ssb blacklist r8192s_usb
Tercera Mit ndisgtk den Windowstreiber aus drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k installieren
sudo ndisgtk
Cuarto Grub konfigurieren
#/etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="pciehp.pciehp_force=1 pciehp.pciehp_poll=1 quiet splash"
sudo update-grub2
Quinto Powermanagement Rule erstellen
#/etc/pm/sleep.d/ndiswrapper
#!/bin/bash
case "$1" in
hibernate|suspend)
sudo rmmod ndiswrapper
;;
thaw|resume)
sudo modprobe ndiswrapper
;;
*)
;;
esac
exit $?
chmod +x /etc/pm/sleep.d/ndiswrapper
Sexto Reboot
Danach läuft das WLAN schnell und stabil.
PHP Spickzettel
Hier sammele ich nützliche PHP Codeschnipsel
Pseudo Multithreading mit screen
#!/usr/bin/php5 for ($i=1;$i<50;$i++) { echo "starting $i\n"; exec("screen -d -m /usr/bin/php5 ./thread.php"); } MySQL Server has gone away in lange laufenden PHP-Shellscripten
#/etc/php5/cli/php.ini mysql.allow_persistent = On mysql.max_persistent = -1 mysql.max_links = -1 mysql.connect_timeout = -1
Company Connect – Spass mit dem Telekom Vertrieb
Ein Kunde hatte ein Problem. Wegen einer speziellen Applikation, wurde ein schnellerer Ping nach Taiwan benötigt. Ein herkömmlicher Telekom DSLer brachte konstant 290 - 320ms zu Hinet, einem grossen taiwanesischen Provider. Eine streßfreie Nutzung der Applikation war mit diesen Paketlaufzeiten nicht möglich, deshalb forschte man nach Alternativen um eine schnellere Verbindung herzustellen. Ich war von Anfang an skeptisch ob eine Verbesserung der Situation überhaupt möglich war. Mit dem DSLer wurden die Pakete zunächst über das Telekom-Netz nach New York geroutet. Von dort aus ging es mit AT&T weiter quer durch die USA, dann über den Pazifik zu Hinet. Von Kalifornien bis Taiwan entstand der Hauptteil der Paketlaufzeit - fast 200ms. Meiner Meinung nach wäre eine Verbesserung nur möglich gewesen, wenn die Telekom selbst einen Backbone ihres Netzes in Taiwan unterhalten würde. Bei meiner Suche nach Anbietern, die das unmögliche leisten könnten, stieß ich auf das Telekom-Produkt Company Connect , das aus einer Standleitung besteht, die direkt an den Telekom-Backbones hängt. Telefonisch versicherte man mir, dass man mit "CoCo" ohne weiteres einen Ping unter 50ms nach Asien erreicht. Ich war freudig überrascht, aber nach wie vor skeptisch. Einige Tage später kam ein jung-dynamischer Telekom-Vertriebler ins Haus und bestätigte die Behauptung der Hotline erneut. "Ich habe mich für Sie erkundigt, das ist alles kein Problem. Die Telekom unterhält weltweit Backbones." Beim verlassen des Gebäudes erzählte er mir noch, dass er sich gerade einen neuen BMW bestellt hätte. Muy bonito. Am nächsten Tag kam per E-Mail direkt der Vertrag ins Haus. Wir schickten ihn mit dem Zusatz zurück, dass wir den Vertrag stornieren können, falls keine Pings unter 100ms nach Taiwan erreicht werden könnten. Die Telekom unterschrieb. Danach passierte erst einmal lange nichts mehr. Der Vertriebler hatte eine Schaltung innerhalb eines Monats zugesichert. Nach einem Monat fragten wir nach, der Vertriebler war allerdings ab dann (bis heute) nicht mehr erreichbar. Auch E-Mails an seine Abteilung wurden nicht beantwortet. Nach 2 1/2 Monaten wurden wir ungeduldig und drohten mit einer Stornierung des Auftrags, falls nicht innerhalb einer Woche ein Termin für die Schaltung vereinbart werden könnte. Danach ging es plötzlich sehr schnell. Die "Eskalationsstelle" organisierte einen Termin für uns, die Leitung wurde geschaltet. Für einen ersten Test klemmte ich einen Router und mein Netbook an die brandneue Leitung.
box-ww-11:57:35 ~ -> ping www.hinet.net PING www.hinet.net (202.39.224.7) 56(84) bytes of data. 64 bytes from 202-39-224-7.HINET-IP.hinet.net (202.39.224.7): icmp_req=1 ttl=237 time=306 ms 64 bytes from 202-39-224-7.HINET-IP.hinet.net (202.39.224.7): icmp_req=2 ttl=237 time=306 ms
LOL. Was hätte man anderes erwarten können? Exakt die gleichen Ping-Werte wie zuvor. Exakt die gleiche internationale Route wie zuvor. Kein technisches Problem. Einfach nur viel Bullshit-Blah-Blah. Ich bin gespannt, ob die Kündigung genauso "problemlos" funktionieren wird wie die Schaltung.
XS UMTS Stick W14 unter Ubuntu
Der XS Stick W 14 unter Ubuntu zickte ein wenig herum. Gelegentlich erkannte der Network-Manager ihn als USB-Modem, dann konnte er allerdings trotzdem keine Verbindung herstellen. Nach ein wenig erfolgloser Frickelei bin ich auf das Sakis3G Script gestoßen, das verspricht mit fast allen Sticks eine Verbindung herstellen zu können. Und tatsächlich: Es hat mit Sakis3G sofort funktioniert. Empfehlenswert, wahrscheinlich auch für andere Sticks.
TYPENSCHILD XS Stick W14 P/N 3000.000056.00 www.4g-systems.com
#lsusb Bus 002 Device 006: ID 1c9e:9603
# /var/log/syslog beim Einstecken Jun 19 20:41:04 box kernel: [74186.796148] usb 2-2: new high speed USB device using ehci_hcd and address 7 Jun 19 20:41:04 box kernel: [74186.946031] scsi11 : usb-storage 2-2:1.0 Jun 19 20:41:05 box usb_modeswitch: switching 1c9e:f000 (USB Modem: USB Modem) Jun 19 20:41:06 box kernel: [74189.293850] usb 2-2: USB disconnect, address 7 Jun 19 20:41:07 box kernel: [74189.660069] usb 2-2: new high speed USB device using ehci_hcd and address 8 Jun 19 20:41:07 box kernel: [74189.819348] option 2-2:1.0: GSM modem (1-port) converter detected Jun 19 20:41:07 box kernel: [74189.819577] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB0 Jun 19 20:41:07 box kernel: [74189.819802] option 2-2:1.1: GSM modem (1-port) converter detected Jun 19 20:41:07 box kernel: [74189.819950] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1 Jun 19 20:41:07 box kernel: [74189.820220] option 2-2:1.2: GSM modem (1-port) converter detected Jun 19 20:41:07 box kernel: [74189.820395] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB2 Jun 19 20:41:07 box kernel: [74189.821414] scsi12 : usb-storage 2-2:1.3 Jun 19 20:41:07 box modem-manager[10480]:(ttyUSB1) opening serial port... Jun 19 20:41:07 box modem-manager[10480]: (ttyUSB0) opening serial port... Jun 19 20:41:07 box modem-manager[10480]: (ttyUSB2) opening serial port... Jun 19 20:41:08 box usb_modeswitch: switched to 1c9e:9603 (USB Modem: Modem Configuration) Jun 19 20:41:08 box kernel: [74190.823474] scsi 12:0:0:0: Direct-Access USBModem Disk 2.31 PQ: 0 ANSI: 2 Jun 19 20:41:08 box kernel: [74190.825402] sd 12:0:0:0: Attached scsi generic sg3 type 0 Jun 19 20:41:08 box kernel: [74190.833436] sd 12:0:0:0: [sdc] Attached SCSI removable disk
12 Maßnahmen um einen Linux root LAMP Apache MySQL PHP Webserver abzusichern
Die Hacking-Frequenz ist in den letzten Monaten stark angestiegen. Besonders viele Daten werden abgegriffen durch Hacks auf Webserver. Sogar der SONY-PSN-Hack nutzte Schwachstellen in einem ungepatchten Apache-Webserver. Deshalb sammele ich hier Maßnahmen, die den eigenen Server etwas sicherer gegen Angriffe von außen machen können. Natürlich bieten auch diese keinen 100%igen Schutz, aber es ist besser, den bösen Buben das Spiel ein wenig schwieriger zu machen. Einige der Maßnahmen benötigen nur einen minimalen Installations- und Wartungsaufwand. Andere benötigen viel Zeit und Kenntnisse von PHP um zu greifen. Man sollte immer auf das Kosten-Nutzen-Verhältnis bei der Auswahl der Sicherheitsmaßnahmen achten. Es macht keinen Sinn, eine kleine, private Website so abzusichern wie die Federal Reserve Bank. Allerdings können wenige gezielte Änderungen am System bereits ein großes Mehr an Sicherheit bedeuten. Und das sollte man sich schon gönnen, bevor es zu spät ist....
Alle Tipps und Codesnips beziehen sich auf eine aktuelle Debian-Kiste.
Primero Die Firewall - erst einmal alles verbieten
Die meisten Linux-Distributionen öffnen in ihren Standardinstallationen keine Ports nach außen, die nicht unbedingt notwendig sind. Diese Situation kann man jedoch schnell selbst ändern, wenn man am Server
herumspielt und Dinge ausprobiert. Plötzlich lauscht auch der Mediaserver im Internet oder die Datenbank
nimmt Verbindungen aus dem Internet entgegen. Deshalb ist es nicht verkehrt sich selbst zu disziplinieren und eine sehr restriktive Firewall aufzusetzen, die grundsätzlich erst einmal alle Verbindungen von außen verbietet und nur (selbst) ausgewählte Verbindungen gestattet. Zum Glück ist das mit iptables schnell erledigt. Auf diese Art und Weise kann man nicht mehr aus versehen Dienste der Welt zugänglich machen, die dort nichts zu suchen haben. Man bezahlt leider mit etwas Komfort - die Firewall muss jedes Mal angepasst werden, wenn man neue Dienste anbieten möchte. Trotzdem ist der Aufwand klein und der Nutzen groß.
#!/bin/bash # Bestehende Tables löschen iptables -F # Alle eingehenden Verbindungen verbieten iptables -P INPUT DROP iptables -P FORWARD DROP # Alle ausgehenden erlauben iptables -P OUTPUT ACCEPT # SSH erlauben iptables -A INPUT -j ACCEPT -p tcp --dport 22 # HTTP erlauben iptables -A INPUT -j ACCEPT -p tcp --dport 80 # Weiteren Dienst (UDP) erlauben, zum Beispiel Gameserver iptables -A INPUT -j ACCEPT -p udp --dport 4534 # Alles von Localhost erlauben. (Damit der Server selbst ungehindert auf seine Dienste zugreifen kann, # zum Beispiel PHP auf die lokale Datenbank iptables -A INPUT -j ACCEPT -s 127.0.0.1 # Bereits aufgebaute Verbindungen werden an jedem Port akzeptiert # (Notwendig für manche Daemons) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Dieses kleine Grundgerüst kann man einfach weiter ausbauen und eigene Dienste hinzufügen. Bei Arbeiten an der Firewall sollte man immer für den Fall vorsorgen, dass man sich selbst aussperrt. Besonders bei Remote-Servern, auf die man keinen physischen Zugriff hat, ist es sehr ärgerlich, durch eine mißglückte Firewallregel den eigenen Zugriff zu verlieren. Um diesem Problem aus dem Weg zu gehen, kann man bei Arbeiten an der Firewall einfach temporär einen Cronjob starten lassen, der die Firewall alle paar Minuten zurücksetzt oder den Server neu startet. Sind die Regeln später getestet und geliebt, kann der Cronjob wieder deaktiviert werden und die neuen Regeln bleiben permanent aktiv.
Um herauszufinden, welche Dienste gerade auf dem eigenen Server herumlauschen, kann man netstat benutzen:
#Für TCP-Sockets: netstat -lpn | grep tcp #Analog für UDP: netstat -lpn | grep udp
Um zu testen ob die Firewall wirklich funktioniert, kann man den eigenen Server von einem anderen Rechner aus portscannen. Hat alles geklappt, sollten im Ergebnis nur die selbst geöffneten Ports auftauchen:
#Für TCP: nmap -p1-65535 meinserver.de #Für UDP: nmap -sU -p1-65535 meinserver.de
Segundo SSH Logins verbieten
Am eigenen root-Server hat man uneingeschränkten SSH-Zugriff. Das ist recht praktisch, da man von jedem SSH-Client aus mal eben auf den Server kann um an ihm zu arbeiten. Der Nachteil davon ist, dass das natürlich auch jeder andere kann, der unglücklicher Weise irgendwie an das eigene Passwort gelangt ist. Es ist viel sicherer SSH-Logins nur mit einer gültigen Schlüsseldatei zu erlauben. Dafür wird der öffentliche Schlüssel des Clients auf den Server kopiert und interaktive Logins per Passworteingabe werden deaktiviert.
# Auf dem Client einen öffentlichen Schlüssel erstellen # Wird bei der Generierung ein Passwort angegeben, benötigt man zum # einloggen später die Schlüsseldatei UND das Passwort. Ansonsten wird # nur der Schlüssel benötigt. ssh-keygen -t rsa # Den erstellten Schlüssel danach auf den Server kopieren ssh-copy-id -i ~/.ssh/id_rsa.pub root@meinserver.de # Danach auf dem Server /etc/ssh/sshd_config anpassen . . PasswordAuthentication no . . # Danach SSh neu starten /etc/init.d/ssh restart
Auch hier sollte man Vorkehrungen treffen, um sich nicht selbst auszusperren, falls etwas nicht funktioniert.
Der Public Key auf einem USB-Stick mit dem dazugehörigen Passwort im eigenen Kopf macht es sehr viel schwerer für böse Buben eine Shell zu erhalten.
Tercera SSH Bruteforcing verhindern mit denyhosts
Falls Tipp 2 nicht praktikabel ist und man den Komfort von passwortgestützten Logins nicht aufgeben will, kann man zumindest das automatisierte Passwortraten von Angreifern auf dem Server verhindern. Sehr viele Bots im Internet machen den ganzen Tag nichts anderes als nach SSH-Servern zu suchen und bei Ihnen verschiedenste Passwörter durchzuprobieren. Mit einem halbwegs sicheren Passwort ist das kein großes Problem, trotzdem gibt es ein besseres Gefühl, wenn nicht einmal das möglich ist. Außerdem schützt man so auch seine User, falls auf dem Server auch Useraccounts bestehen. Hier kann man sich nicht darauf verlassen, dass die Benutzer sichere Passwörter verwenden. denyhosts überprüft ständig Logins auf dem ssh und sperrt Benutzer für eine gewisse Zeit, die ihr Passwort wiederholt falsch angegeben haben. Die IP's dieser Nutzer landen temporär in /etc/hosts.deny, so dass für sie kein Zugriff mehr möglich ist. Damit wird SSH-Bruteforcing zu einer sehr langwierigen und wenig erfolgversprechenden Aufgabe.
apt-get install denyhosts # denyhosts funktioniert direkt nach der Installation. Man kann es # in der Datei /etc/denyhosts.conf feintunen
Cuarto Blacklisten benutzen, um bekannte Problem-IPs auszusperren
Im Internet werden verschiedene Blacklisten gepflegt, die eine große Anzahl von kriminellen/gehackten/spammenden/betrügerischen Servern auflisten. Diese IP-Listen können direkt in die Firewall eingetragen werden, so dass von diesen bekanntermaßen nicht vertrauenswürdigen Rechnern überhaupt keine Verbindung mehr zum eigenen Server möglich ist. So kann man das Spamaufkommen auf dem eigenen Server drastisch verringern und auch das eine oder andere Script-Kiddie aussperren, weil sein Russland-Proxy plötzlich nicht mehr funktioniert. Wie man das macht habe ich bereits in einem anderen Blog-Artikel am Beispiel der Blacklist von Infiltrated.net beschrieben.
Quinto Kein FTP benutzen für die Arbeit am Server
FTP ist ein Relikt aus besseren Zeiten in denen das Internet noch ein kleines vertrauenswürdiges Dörfchen war. Viele Admins von Webseiten nutzen nach wie vor FTP um Dateien zum Server zu übertragen oder um an der eigenen Website zu arbeiten. Das ist leider sehr unsicher, da FTP alle Daten ungesichert übertragt. Passwörter und Daten können an jedem Hop zwischen Server und Client ohne Probleme mitgelesen werden. Viel sicherer geht es mit sshfs. Hiermit kann man sich per SSH ein Verzeichnis des Remote-Servers in sein lokales Dateisystem mounten. Man kann danach auf dem Server so arbeiten, als sei er auf dem lokalen Rechner. Alle Dateizugriffe auf Dateien auf dem Server sind komplett transparant, man kann also auch mit dem lokalen Grafikprogramm ein Bild auf dem Server direkt öffnen, bearbeiten und wieder speichern. Mehr Komfort und mehr Sicherheit ohne großen Aufwand.
#sshfs installieren apt-get install sshfs #mountpoint im lokalen Dateisystem anlegen mkdir /media/meinserver #Server ins lokale Dateisystem mounten sshfs www-data@mein-server.de:/var/www /media/meinserver #Nun ist das Verzeichnis /var/www auf meinserver lokal unter /media/meinserver verfügbar
Sexto Updates installieren
Ein super abgesichertes System hilft nichts, wenn das System selbst fehlerhaft ist und eine bekannte Sicherheitslücke ausgenutzt werden kann. Meist werden diese Sicherheitslücken schnell geschlossen, oft vergessen Admins jedoch regelmäßige Updates des Systems zu machen. Ob man automatische Updates auf Linux-Servern aktivieren sollte oder nicht ist ein strittiges Thema. Einige würden es niemals tun, da es natürlich mit viel Pech auch sein kann, dass die Updates das System unbrauchbar machen. Dies ist mir in über 10 Jahren Arbeit an Debian-Systemen allerdings niemals passiert und ich schätze den Nutzen von zeitnahen und regelmässigen Updates viel höher ein, als die daraus entstehende Gefahr.
#Diese Zeile in der /etc/crontab aktualisiert das System täglich um 6 Uhr morgens 0 6 * * * root apt-get update && apt-get -y upgrade
Diese Quick-and-dirty Methode funktionierte bei mir bisher immer gut. Vor kurzem habe ich gelesen, dass im Debian Repository auch das Paket unattended-upgrades existiert, das die Aufgabe wohl etwas eleganter löst, ich habe es allerdings bisher nicht getestet.
Auch bei diesen vollautomtischen Systemupdates ist man nicht komplett aus dem Schneider. Falls ein Kernel-Update ausgeliefert wurde, muss man das System trotzdem noch per Hand neu booten, da ansonsten die Änderungen nicht aktiv werden.
Benutzt man fremden PHP-Code auf dem Server, wie zum Beispiel ein Open-Source CMS oder ein Forum, ist es natürlich absolut notwendig auch diesen Code mit neuen Versionen aktuell zu halten. Da Debian mit seinen Updates Änderungen an diesen Applikationen in der Regeln nicht abdeckt, ist hier Handarbeit nötig. Am besten liest man die Mailinglisten der entsprechenden Produkte mit um immer auf dem Laufenden zu sein.
Séptimo PHP einsperren mit open_basedir
Viele Hacks basieren darauf, dass eine Sicherheitslücke im PHP-Code ausgenutzt wird, um auf Dateien im Dateisystem zuzugreifen, die nicht zur Website gehören, sondern zum System selbst. Deshalb sollte man PHP einsperren, so dass es nur in explizit erlaubten Verzeichnissen lesen und schreiben darf. Dafür bietet die php.ini die Konfigurationsoption open_basedir. PHP hat nach setzten der Option nur noch Zugriff auf die dort erlaubten Verzeichnisse. Dateien wie /etc/passwd werden unerreichbar. Hostet man auf einem Server mehrere Webseiten sollte man open_basedir in der jeweiligen VirtualHost-Konfiguration pro Seite setzen.
# Global per php.ini: # /etc/php5/apache2/php.ini open_basedir = /var/www/:/tmp/ # Per Site in der VirtualHost Config: php_value open_basedir /var/www/site/:/tmp/
Wichtig ist zu prüfen ob wirklich alle Orte eingetragen wurden, auf die die Skripte normalerweise Zugriff haben müssen, ansonsten kann es sein, dass man auch legitime Funktionen der PHP-Applikation behindert.
Octavo Für Websites einen eigenen MySQL-Benutzer anlegen
Benutzt die eigene PHP-Applikation MySQL, sollte man unbedingt für die Apllikation einen eigenen MySQL-Benutzer anlegen und auf keinen Fall den MySQL-root-Benutzer für Zugriffe nutzen. Außerdem sollte man die Rechte des Benutzers so weit einschränken, dass wirklich nur noch Operationen erlaubt sind, die das PHP-Skript benötigt. CREATE TABLE und DROP TABLE werden zum Beispiel häufig bei SQL-Injections genutzt und werden in den meisten PHP-Applikationen nie benötigt. Hostet man mehrere Websites mit mehreren Datenbanken auf einem Server, sollte man für alle Datenbanken eigene Benutzer anlegen. So hat ein Angreifer nach einem erfolgreichen Angriff nur Zugriff auf eine der Datenbanken und nicht direkt auf alle. Wenn man nicht die Kommandozeile bemühen möchte, um die MySQL-Useraccounts zu verwalten, funktioniert das Usermanagement auch recht einfach mit PHPmyAdmin unter der Registerkarte "Rechte".
Noveno PHP Fehlermeldungen abschalten
PHP-Fehlermeldungen können einem Angreifer viel über den eigenen Server verraten: Verzeichnisstrukturen, Datenbankstrukturen, Konfigurationsfehler, etc. Außerdem sehen sie für den Benutzer sehr unprofessionell aus. Aus diesem Grund sollte man sie auf einem Live-Webserver grundsätzlich abschalten, da man sie ohnehin weiterhin in den Logs sehen kann.
# Global per php.ini: # /etc/php5/apache2/php.ini display_errors = Off # Per Site in der VirtualHost Config: php_flag display_errors Off # Fehlermeldungen trotzdem lesen: cat /var/log/apache2/error.log | grep PHP
10a Angriffsfläche für SQL-Injections einschränken mit modSecurity
SQL-injections sind die wohl am häufigsten genutzte Angriffsmethode auf Webserver. Der Zugriff erfolgt direkt über die Webapplikation und es genügt ein Browser um sie durchzuführen. Dabei werden über vom User übermittelte Variablen geschickt SQL-Abfragen eingebaut, die mit den Rechten des Datenbankbenutzers alles an der eigenen Datenbank nach belieben auslesen, löschen oder bearbeiten können. Ein wirklicher echter Schutz gegen SQL-Injections besteht nur, wenn der PHP-Code der Site im Hinblick auf diese Angriffe geschrieben wurde. Jede Variable aus Benutzereingaben, die in eine SQL-Abfrage gelangen könnte, muss geprüft und escaped werden. PHP bietet dafür die Funktion real_mysql_escape_string().
Ist man nicht sicher, ob der Code sauber ist, kann mod_security für den Apache helfen eine große Menge dieser Angriffe trotzdem abzuwehren. mod_security überprüft ständig alle Requests an den Webserver und reagiert auf vorgefertigte Muster mit denen viele SQL-Injection-Angriffe abgewehrt werden können. Leider funktioniert auch mod_security nur gut mit manuellem Aufwand. Oft blockt mod_security nach einer frischen Installation auch gewünschte (normale) Funktionen des eigenen PHP-Codes, so dass einem nichts anderes übrig bleibt, als die komplette Applikation nach der Installation einmal durchzutesten. Nur so findet man heraus, ob mod_security nicht eventuell auch gewünscht Funktionen blockt. Ist das der Fall, muss die Filterliste angepasst werden, so dass die false-positives verschwinden.
Die Konfiguration von mod_security ist etwas komplizierter und würde den Umfang dieses Artikels sprengen, es gibt aber massenweise gute Tutorials zu mod_security im Internet.
11 Ausweiskontrolle - Der Apache sagt nicht mehr, wer er ist
Dies ist keine wirklich wirkungsvolle Methode gegen einen Hack, sie macht es automatisierten Skripten, die nach Server-Versionen suchen aber etwas schwerer. Normalerweise zeigt der Apache auf Seiten mit Fehlermeldungen (zB 404 Not Found) seine Serversignatur.
Apache/2.2.16 (Debian) Server at www.daniel-ritter.de Port 80
So erhalten potentielle Angreifer zumindest schon einmal Informationen über den eigesetzten Webserver und den Versionsstand. Die Serversignatur ist schnell ausgeschaltet:
#/etc/apache2/conf.d/security ServerSignature Off
12 Nicht benutze Apache-Module deaktivieren
Per default hat der Apache einige Module geladen, die fast nie benötigt werden. Unter Debian findet man die geladenen Module
als Softlinks in /etc/apache2/mods-enabled.
Fast immer entfernt werden können:
mod_cgi
Dient dem ausführen von CGI-Skripten. Diese Technik stammt noch aus den Urzeiten des Web und war der Vorvater der modernen Skriptsprachen um dynamische Webseiten zu ermöglichen. mod_cgi ist auf 99% der PHP-Websites unnötig und bei einer fehlerhaften Apache-Config eine potentielle Sicherheitslücke
a2dismod cgi
mod_status
Ermöglicht es Browsern Statusinformationen über den Apache auszulesen. Es wird so gut wie nie für "normale" Sites genutzt, bietet Angreifern aber Statusinformationen über den Apache.
a2dismod status
mod_autoindex
mod_autoindex sorgt dafür, dass Verzeichnisse auf dem Webserver aufgelistet werden können, wenn es keine gültige Index-Seite in dem entsprechenden Verzeichnis gibt. Falls diese Funktionalität nicht erwünscht ist, sollte man sie abschalten, da durch sie ganze Verzeichnisbäume auf dem Webserver nach aussen sichtbar werden können.
a2dismod autoindex
Linux Server mit der Scam/Spam/Crime Blacklist von Infiltrated.net absichern
Im Internet gibt es viele böse Buben: Scammer, Hacker, Viagrabuden, Scriptkiddies, etc.
Infiltrated.net pflegt eine recht umfangreiche Liste auffällig gewordener Server unter http://www.infiltrated.net/blacklisted .
Wenn man Zugriff auf seinen Server oder auch sein Heimnetz von diesen IP's unterbindet, hat man bereits sehr viele Russen Proxies, Spammer und anderes Gesindel ausgesperrt.
Das folgende kleine Script saugt sich automatisch die aktuelle Liste und trägt die Hosts in die Firewall ein.
Mit einem Cronjob regelmässig gestartet, ermöglicht es ein Quentchen mehr Sicherheit für die eigenen Dienste.
#!/usr/bin/php
<?
# Zuerst bereits bestehende (eigene) Firewallrules ausführen
exec("/root/scripts/meine_standard_firewall_rules");
# Blacklist saugen
exec("wget -O /tmp/infiltrated_blacklist http://www.infiltrated.net/blacklisted");
$list = file("/tmp/infiltrated_blacklist");
$i = 1;
# Ein bisschen auseinanderschnibbeln und ab in Iptables
foreach ($list as $line)
{
$line = trim($line);
$line = str_replace("\t"," ",$line);
$line = explode(" ",$line);
$line = $line[0];
$firstchar = substr($line,0,1);
if (!is_numeric($firstchar))continue;
exec ("iptables -I INPUT -s $line -j DROP");
$i++;
}
echo "done. $i rules set.";
?>
The Adobe Flash plugin has crashed – Reparieren – Ubuntu – NVidia
Seit einer der letzten Firefox Versionen wollte Flash nicht mehr so richtig. Bei sehr vielen Videos crashte der Adobe Flash Player. Ich habe das Problem gelöst, bin mir aber nicht 100%ig sicher woran es lag. Ich tippe auf 2 Bugs: Einmal auf das Zusammenspiel der Hardwarebeschleunigung von Flash mit meiner Grafikkarte und zum anderen auf das neue Plugin-Crash-Handling von Firefox.
Primero Hardwarebeschleunigung deaktivieren
In ein Flash-Video rechtsklicken. Einstellungen wählen. Haken bei Hardwarebeschleunigung entfernen.
Segundo Plugin-Crash-Handling von Firefox deaktivieren
about:config in der Adresszeile eingeben
Die Werte dom.ipc.plugins.processLaunchTimeoutSecs und dom.ipc.plugins.timeoutSecs auf "-1" setzen.
Seitdem habe ich keine Probleme mehr mit Ubuntu 10.10, Firefox 4 und Flash 10.2.153.1









