Tweet descuido o. Un pequeño script de PHP para borrar los tweets de Twitter de edad
Automatiza el proceso de descuido o eliminar los tweets tweets de edad de su cuenta de Twitter. Básicamente se ofrece a "expirar" la funcionalidad de sus tweets. Es útil para la gente que quiere usar Twitter, pero no quieren una historia de sus tweets para permanecer en línea durante décadas.
HISTORIA: 20 de noviembre 2011 | Versión 0.1 Versión inicial. Elimina los tweets 28 de diciembre 2011 | Versión 0.2 Pequeñas correcciones de errores. Ahora elimina retweets así. Bugs conocidos: - No funciona si Tweet más de 1.000 tweets en el marco de tiempo usted planea mantener tweets. Lo mismo para los 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 descuido o utiliza la API de Twitter para eliminar todos los tweets que se publicaron antes de que un determinado número de días a partir de ahora. De esta manera usted puede configurar la secuencia de comandos para borrar todos los tweets que son más de una semana o un mes por ejemplo. La secuencia de comandos 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 externos. Por lo tanto se desconoce si los tweets borrados se archivan por Twitter en silencio (apuesto a que son). Así que (como siempre) pensar antes de twittear.
Tweet descuido o usa PHP como lenguaje de scripting y los haces 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. - Registra tus claves de la API de Twitter en https://dev.twitter.com/apps - Editar la configuración de la secuencia de comandos para satisfacer sus necesidades: # Twitter API, fichas claves y secretos # conseguir estas llaves en -> https:// dev.twitter.com / apps $ consumer_key = "AQUÍ LA CLAVE"; $ consumer_secret = "AQUÍ LA CLAVE"; $ access_token = "AQUÍ LA CLAVE"; $ access_token_secret = "AQUÍ LA CLAVE"; # El número de tweets a trabajar en por sesión $ tweets_per_session = 1000; # usuario de Twitter $ twitter_username = "TU NOMBRE DE USUARIO", Número de Días que puede guardar los tweets $ keep_days = 30; - Ejecute el script de forma manual desde el navegador, consola o automáticamente mediante cron / usr / bin / php / var / www / tweetneglector / tweetneglector.php
Tweet descuido o 0.2 Descargar aquí
COMO: Rápido y sucio servidor DHCP y DNS cache con dnsmasq en Ubuntu
DHCP en la LAN es práctico. Ya no es gestionar la configuración de la red de cada equipo en la red a los propios clientes, pero todo tiene un servidor encantadora ubicación central. Guardar al almacenar en caché los clientes DNS de un poco de tiempo se debe hacer en la resolución de nombres de host, ya que las consultas se pueden aplicar a los nombres de host conocidos de la caché local en vez de a un servidor en Internet.
Un pequeño servidor DHCP está configurado dnsmasq con gran rapidez.
# Instale dnsmasq apt-get install dnsmasq
La configuración se lleva a cabo en el centro del dnsmasq.conf archivo / etc /. No hay que irse antes de las opciones de configuración en el archivo apretados disuadido. Casi todo lo que es solo un ejemplo y es por defecto comentado. Una configuración muy corto, es suficiente para una configuración de trabajo:
DHCP
# Máscara de red DHCP # Los clientes recibieron 255.255.255.0 como máscara de red dhcp-option = 1,255.255.255.0 # Puerta de enlace predeterminada Número de clientes recibidos como una puerta de enlace 192.168.1.251 dhcp-option = 3,192.168.1.251 # Dns # Los clientes reciben el nombre del servidor 192.168.1.4 # Si desea utilizar dnsmasq como caché de DNS, este debe ser el Sea # IP del servidor que está ejecutando el dnsmasq dhcp-option = 6,192.168.1.4 # Los hosts de la misma dirección IP asignada por el MAC: # Esto nos lleva al host con la dirección MAC 00:11:22:33:44:55 IP 192,168.1.1 durante 12 horas dhcp-host = 00:11:22:33:44:55, vestíbulo, 192.168.1.1,12 h dhcp-host = 00:11:22:33:44:66, Lobby2, 192.168.1.2,12 h # Todos los equipos que no pueden ser identificadas por el MAC reciben IPs # Desde la piscina de la 192.168.1.120 a 150 dhcp-range = 192.168.1.120,192.168.1.150,12 h
DNS
La funcionalidad de DNS de dnsmasq no necesita ninguna configuración.
dnsmasq se refiere el nombre del servidor desde el archivo / etc / resolv.conf. Esto debe ser
el servidor conoce el nombre del proveedor se registran y, posiblemente, incluso como reserva
8.8.8.8 para los servidores del DNS de Google.
Para obtener más nombres de host que deben aplicarse en la red local puede, dnsmasq en el archivo
Sea / etc / hosts dado a conocer. Aquí están todos los equipos registrados los nombres de host
de la LAN.
Trampas
dnsmasq necesita para volver a leer su configuración los archivos Konfigänderungen
/ Etc / init.d / dnsmasq restart
Si los clientes no tienen un contrato de arrendamiento del antiguo servidor DHCP, de forma manual puede traer para que se inicie una nueva solicitud de DHCP.
# Linux dhclient eth0 # Windows ipconfig / release ipconfig / renew
Urgentemente hay que tener cuidado, hasta el momento para su uso en cualquier parte del servidor DHCP (por lo general el router a Internet) para desactivarlo. 2 servidores DHCP en la LAN puede generar una gran cantidad de caos.
Inalámbrico para Eee 1000H rt2860 en Ubuntu
Con cualquier actualización de la red inalámbrica últimamente estaba en mis 1000H Eee PC con Ubuntu bastante inestable. Permanente desconexiones, no después de la conexión inalámbrica de suspensión, lento, etc
No estoy muy seguro de lo que es, probablemente, el conductor ha rt2860 obtener cualquier actualización con un error.
Afortunadamente, el problema puede ser resuelto mediante la instalación del controlador de Windows con ndiswrapper.
Esta es sólo una traducción ligeramente abreviada alemana del patrón original en Inglés de nevdelap del foro de Ubuntu. (Gracias)
En primer lugar los controladores para Windows chupar y unpack (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)
Segundo Linux lista negra del conductor
# / Etc / modprobe.d / blacklist.conf lista negra rt2x00lib lista negra rt2x00pci lista negra rt2x00usb lista negra rt2400pci lista negra rt2500pci lista negra rt2500usb lista negra rt2800lib lista negra rt2800pci lista negra rt2800usb lista negra rt61pci lista negra rt73usb lista negra RT2600 lista negra rt2860 # Asus 1000H tiene un rt2860. Para ser cargado por ndiswrapper. lista negra b43 lista negra b43 lista negra ssb lista negra r8192s_usb
Tercera Instalar el controlador de Windows con el ndisgtk drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k
ndisgtk sudo
Cuarto Configuración de GRUB
# / Etc / default / grub GRUB_CMDLINE_LINUX_DEFAULT = "pciehp.pciehp_force pciehp.pciehp_poll = 1 = 1 quiet splash"
sudo update-grub2
Quinto Regla de administración de energía crean
# / Etc / pm / sleep.d / ndiswrapper # / Bin / bash case "$ 1" en hibernación | suspender) rmmod ndiswrapper sudo ;; descongelación | curriculum vitae) ndiswrapper sudo modprobe ;; *) ;; esac exit $?
chmod + x / etc / pm / sleep.d / ndiswrapper
Sexto Reiniciar
A continuación, la conexión inalámbrica funciona rápido y estable.
PHP Cheat Sheet
Aquí recojo útiles fragmentos de código PHP
Multithreading con pseudo-pantalla
# / Usr/bin/php5 de! ($ I = 1; $ i <50; $ i + +) {echo "a partir del $ i \ n"; hilo de exec ("screen-d-m / usr/bin/php5 /. . php ");} MySQL se ha ido en los guiones de larga duración PHP shell
# / Etc/php5/cli/php.ini = En mysql.allow_persistent mysql.max_persistent -1 = mysql.max_links = -1 mysql.connect_timeout = -1
XS Memory W14 UMTS con Ubuntu
El XS Memory W14 zickte en Ubuntu un poco. De vez en cuando, el administrador de red lo reconocen como un módem USB, pero aún así no se pudo conectar. Después de una excentricidad que pierda unos cuantos que estoy en el guión de Sakis3G encontrado, que se compromete a producir casi todas las unidades se pueden conectar. Y, en efecto, se ha Sakis3G obras de inmediato. Recomendado, y probablemente por otras unidades.
PLACA XS Memory W14 P / N 3000.000056.00 www.4g-systems.com
# Lsusb Bus 002 Device 006: ID 1c9e: 9603
# / Var / log / syslog cuando se conecta 19 de junio 20:41:04 caja de kernel: [74186.796148] usb 2-2: new toda velocidad dispositivo USB utilizando uhci_hcd y la dirección 7 19 de junio 20:41:04 caja de kernel: [74186.946031] scsi11: usb-storage 2-2:1.0 19 de junio 20:41:05 usb_modeswitch caja: el cambio 1c9e: F000 (USB módem: módem USB) 19 de junio 20:41:06 caja de kernel: [74189.293850] usb 2-2: USB disconnect, dirección 7 19 de junio 20:41:07 caja de kernel: [74189.660069] usb 2-2: new toda velocidad dispositivo USB utilizando uhci_hcd y la dirección de 8 19 de junio 20:41:07 núcleo de caja: [74189.819348] opción 2-2:1.0: módem GSM (1 puerto) conversor detectados 19 de junio 20:41:07 núcleo de caja: [74189.819577] usb 2-2: módem GSM (1 puerto) convertidor de ahora se atribuye a ttyUSB0 19 de junio 20:41:07 núcleo de caja: [74189.819802] opción 2-2:1.1: módem GSM (1 puerto) conversor detectados 19 de junio 20:41:07 núcleo de caja: [74189.819950] usb 2-2: módem GSM (1 puerto) convertidor de ahora se atribuye a ttyUSB1 19 de junio 20:41:07 núcleo de caja: [74189.820220] opción 2-2:1.2: módem GSM (1 puerto) conversor detectados 19 de junio 20:41:07 núcleo de caja: [74189.820395] usb 2-2: módem GSM (1 puerto) convertidor de ahora se atribuye a ttyUSB2 19 de junio 20:41:07 caja de kernel: [74189.821414] scsi12: usb-storage 2-2:1.3 19 de junio 20:41:07 caja del módem-manager [10 480]:(TtyUSB1) la apertura del puerto de serie .. 19 de junio 20:41:07 caja del módem-manager [10 480]: (TtyUSB0) la apertura del puerto de serie .. 19 de junio 20:41:07 caja del módem-manager [10 480]: (TtyUSB2) la apertura del puerto de serie .. 19 de junio 20:41:08 caja de usb_modeswitch: cambió a 1c9e: 9603 (módem USB: Configuración del módem) 19 de junio 20:41:08 caja de kernel: [74190.823474] scsi 12:0:0:0: Direct-Access dos y treinta y uno USBModem disco PQ: 0 ANSI: 2 19 de junio 20:41:08 caja de kernel: [74190.825402] sd 12:0:0:0: Attached SCSI de tipo genérico sg3 0 19 de junio 20:41:08 núcleo de caja: [74190.833436] sd 12:0:0:0: [sdc] Attached SCSI de disco extraíble
12 medidas para un sistema Linux Apache MySQL PHP LAMP raíz del servidor Web seguro
La frecuencia de la piratería se ha incrementado dramáticamente en los últimos meses. Sobre todo una gran cantidad de datos a ser recogidos por hacks en los servidores web. Incluso el Sony PSN truco se aprovechó de una vulnerabilidad no corregida en el servidor web Apache. Así que aquí estoy planteando medidas que el servidor puede poseer un poco más seguro contra los ataques desde el exterior. Por supuesto, esto también no ofrece protección del 100%, pero es mejor hacer a los chicos malos del juego un poco más difícil. Algunas de las medidas requieren sólo una instalación y mantenimiento mínimos. Otros necesitan una gran cantidad de tiempo y conocimientos de PHP para la captura. Usted siempre debe prestar atención a la relación costo-beneficio en la selección de las medidas de seguridad. No tiene sentido para proteger un sitio pequeño, privado, al igual que el Banco de Reserva Federal. Sin embargo, son pocos los cambios específicos en el sistema ya tiene un gran significa más seguridad. Y eso se debe tratar incluso antes de que sea demasiado tarde ....
Todos los consejos y Codesnips se refieren a una caja de Debian actual.
Primero El servidor de seguridad - prohibir Una vez que todo
La mayoría de distribuciones de Linux en sus instalaciones por defecto abrir ningún puerto en el exterior que no son absolutamente necesarios. Esta situación puede cambiar rápidamente, sin embargo, incluso cuando el servidor
jugando y probando cosas. De pronto, incluso el servidor de medios está a la escucha en Internet o en la base de datos
acepta las conexiones de Internet. Por lo tanto, no está mal disciplinarse a sí mismos y poner en un servidor de seguridad muy restrictivas que básicamente prohíbe Una vez que todas las conexiones desde el exterior y sólo permite que la (auto) los compuestos seleccionados. Afortunadamente, esto se hace rápidamente con iptables. De esta manera ya no se puede proporcionar servicios para hacer accesible a todo el mundo que no tienen negocios allí. Lamentablemente, usted paga un poco de consuelo - el servidor de seguridad debe ajustarse cada vez que desea ofrecer nuevos servicios. Sin embargo, el esfuerzo es pequeño y grande de los beneficios.
# / Bin / bash # Eliminar las tablas existentes iptables-F # Prohibir todas las conexiones entrantes iptables-P INPUT DROP iptables-P FORWARD DROP # Permitir todas las llamadas iptables-P OUTPUT ACCEPT # Permitir SSH iptables-A INPUT-j ACCEPT-p tcp - dport 22 # Permitir HTTP iptables-A INPUT-j ACCEPT-p tcp - dport 80 # Más información de servicio (UDP) permiten, por ejemplo, servidor de juegos iptables-A INPUT-j ACCEPT-p tcp - dport 4534 # Permitir todo, desde localhost. (Para permitir el acceso sin trabas a la del propio servidor, sus servicios, # Por ejemplo, PHP en la base de datos local iptables-A INPUT-s 127.0.0.1-j ACCEPT # Ya conexiones establecidas serán aceptadas en cada puerto # (Se requiere para algunos demonios) iptables-A INPUT-m Estado - state ESTABLISHED, RELATED-j ACCEPT
Esta espina dorsal poco podemos simplemente seguir ampliando y añadir sus propios servicios. Cuando se trabaja en el servidor de seguridad, siempre debe tomar medidas para el caso de que se bloquea a ti mismo. Especialmente para los servidores remotos a los que no tienen acceso físico, es muy molesto perder por un firewall no descarta su propio acceso. Para evitar este problema fuera del camino, usted puede dejar el trabajo para empezar en el firewall temporalmente sólo una tarea de cron que restablece el servidor de seguridad cada pocos minutos, o se reinicia el servidor. ¿Son las normas más probado y me encantó, el cronjob serán desactivados y las nuevas reglas permanentemente activo.
Para averiguar qué servicios están a la vuelta de escuchar a su propio servidor, puede utilizar netstat:
# Para sockets TCP: netstat-LPN | grep tcp # Lo mismo ocurre con UDP: netstat-LPN | grep udp
Para probar si el servidor de seguridad que realmente funciona, puede escanear un puerto de su propio servidor desde otro equipo. Todo salió y debe dar lugar solamente a los puertos que están abiertos incluso:
# Para TCP: nmap-p1-65 535 meinserver.de # Para UDP: nmap-sU-p1-65 535 meinserver.de
Segundo SSH prohibición de inicios de sesión
En su servidor de raíz propia que tiene acceso total a SSH. Esto es muy útil, como se puede desde cualquier cliente de SSH para los tiempos de servidor sólo para trabajar en él. La desventaja de esto es que el curso puede alguien que por desgracia es de alguna manera hecho cargo de sus propias contraseñas. Es mucho más seguro permitir las conexiones SSH sólo con un archivo de clave válido. Por lo tanto, la clave pública del cliente al servidor y copiar los inicios de sesión interactivos están desactivados mediante la introducción de una contraseña.
# En el cliente, cree una clave pública # Si se especifica la hora de generar una contraseña, es necesario # Archivo de registro más adelante, la clave y la contraseña. De otra manera # Sólo se necesita la clave. ssh-keygen-t rsa # Copiar la clave generada en el servidor ssh-copy-id-i ~ /. ssh / id_rsa.pub root@meinserver.de # Ahora ajuste sshd_config en el servidor / etc / ssh / . . PasswordAuthentication no . . # A continuación, empezar de nuevo RearBBpos / Etc / init.d / ssh restart
Incluso en este caso hay que tomar precauciones para no excluidos, incluso si algo no funciona.
La clave pública en una memoria USB con la contraseña correspondiente en la cabeza hace que sea mucho más difícil para los chicos malos para conseguir una concha.
Tercera SSH fuerza bruta prevenir denyhosts
Si el consejo no es práctico 2 y no renunciar a la comodidad de la contraseña de base de los inicios de sesión desea, puede lo menos evitar que los tipos de contraseñas automatizado de los atacantes en el servidor. Muchos de los robots en Internet durante todo el día tratando de hacer nada más que a servidores SSH y probar en sus diferentes contraseñas. Con una contraseña razonablemente segura que no es un gran problema, pero hay una sensación mejor, ni siquiera si eso es posible. Además, también protege a sus usuarios, si hay sobre las cuentas del servidor y el usuario. Aquí, usted no puede confiar en que los usuarios utilicen contraseñas seguras. denyhosts constantemente revisadas y los inicios de sesión SSH en el usuario bloquea durante un tiempo que han ingresado su contraseña incorrectamente repetida. La IP de los usuarios de forma temporal van en / etc / hosts.deny, de modo que ya no tienen acceso a es posible. Esta fuerza bruta SSH a una tarea muy larga y no muy prometedora.
apt-get install denyhosts Denyhosts Número funciona bien después de la instalación. Puede ser # En la melodía archivo / etc / denyhosts.conf bien
Cuarto Listas negras utilizadas para bloquear IPs conocidas de problemas
En varias listas negras de Internet se mantienen, lo que la lista de un gran número de servidores criminales / picada / spam / fraudulento. Estas listas de IP pueden ser introducidos directamente en el servidor de seguridad, para que de esta se sabe que no los equipos de confianza no se puede conectar en absoluto a su propio servidor. Así que usted puede reducir la cantidad de spam en su propio servidor de manera espectacular y uno u otro script kiddie cierre patronal, debido a que su representante rusa de repente deja de funcionar. ¿Cómo hacer que yo he sido en otro artículo en el blog describe el ejemplo de la lista negra de Infiltrated.net.
Quinto No utilice FTP para trabajar en el servidor
FTP es una reliquia de tiempos mejores, cuando Internet era una pequeña aldea todavía confiaba. Muchos administradores de sitios web sigue siendo el uso de FTP para transferir archivos al servidor o para trabajar en su propio sitio web. Por desgracia, esto es muy incierto, ya que FTP transmite todos los datos sin garantía. Las contraseñas y los datos se pueden leer sin ningún problema en cada salto entre servidores y clientes. Mucho más seguro para ir con sshfs. Le permite montar un directorio a través de ssh en el sistema del servidor remoto de archivos local. A continuación, puede trabajar en el servidor como si estuviera en el equipo local. Todo el acceso a archivos en el servidor son completamente transparentes, por lo que se puede abrir con el programa de gráficos local para editar una imagen en el servidor directamente, y luego guardar. Más confort y seguridad sin mucho esfuerzo.
# Instalar sshfs apt-get install sshfs # Crear punto de montaje en el sistema de archivos local mkdir / media / miservidor # Server para el soporte de sistema de archivos local sshfs www-data@mein-server.de :/ var / www / media / miservidor # Ahora es el directorio / var / www en mi servidor local en / media / miservidor disponibles
Sexto Instalar actualizaciones
Un sistema seguro super no servirá de nada si el propio sistema es defectuoso y una vulnerabilidad conocida puede ser explotada. En la mayoría de los casos, estas vulnerabilidades cerró rápidamente, pero a menudo se olvida admin actualizaciones periódicas del sistema para hacer. Ya sea que usted debe activar las actualizaciones automáticas en servidores Linux o no es un tema polémico. Algunos nunca lo haría, porque, naturalmente, con un montón de mala suerte puede ser que los cambios que el sistema inutilizable. Esto me sucedió en más de 10 años de trabajo en sistemas Debian, pero nunca me aprecian los beneficios de las actualizaciones oportunas y regulares, mucho mayor que el riesgo resultante.
# Esta línea en el archivo / etc / crontab, actualiza el reloj del sistema todos los días a las 6 am 0 6 *** root apt-get update && apt-get-y de actualización
Estos método rápido y sucio trabajado para mí hasta ahora siempre es bueno. Hace poco leí que en el repositorio de Debian y el paquete de actualizaciones desatendidas existe que resuelve el problema, probablemente, más elegante, pero no lo he probado.
Incluso con estas actualizaciones del sistema vollautomtischen no es totalmente descolgado. Si una actualización del kernel se ha entregado, tiene que arrancar el sistema una vez más a mano, de lo contrario los cambios no estarán activos.
Si usamos terceros código PHP en el servidor, como un CMS de código abierto o un foro, es, por supuesto, es absolutamente necesario y el código de este con las nuevas versiones hasta la fecha. Dado que Debian no actualiza sus cambios a las aplicaciones de las normas que regulan esta mano de obra se necesita. La mejor manera de leer sus listas de correo con los productos correspondientes a fin de estar siempre al día.
Séptimo PHP open_basedir con encarcelar a
Hacks basado en el hecho de que una vulnerabilidad en el código PHP se utiliza para acceder a los archivos en el acceso al sistema de archivos que no pertenecen al sitio, pero el sistema en sí mismo es por lo que debe encerrar a PHP para que se lea sólo en los directorios especialmente designados y escribir permitido. Para ello, el php.ini la opción de configuración open_basedir. PHP tiene la opción de colocar el acceso sólo se permite a los directorios de allí. Archivos tales como / / etc passwd están fuera de su alcance. Alojamiento de varios sitios web en un servidor debe configurar open_basedir en cada configuración del host virtual en cada lado.
# Php.ini global a través de: # / Etc/php5/apache2/php.ini open_basedir = / var / www / tmp :/ / # Por sitio en la configuración del host virtual: php_value open_basedir / var / www / site / :/ tmp /
Es importante considerar si todos los sitios se han añadido a las secuencias de comandos por lo general necesitan tener acceso, de lo contrario puede ser que son las funciones de movilidad reducida y legítimo de la aplicación PHP.
Octavo Cree sus propios sitios web para los usuarios de MySQL
Utilice su propia PHP-MySQL aplicación, a pesar de todo debe crear para el usuario de MySQL Apllikation propia y en ningún caso utilizar las peticiones fundamentales de usuario de MySQL. También debe restringir los derechos de los usuarios hasta el momento de que las operaciones en realidad sólo se les permite, lo que requiere el script PHP. CREATE TABLE y DROP TABLE son tan comunes en las inyecciones de SQL y se utiliza en la mayoría de las aplicaciones PHP no sea necesario. Alberga varios sitios web con bases de datos múltiples en un servidor, usted debe crear sus propias bases de datos para todos los usuarios. Así, después de un ataque con éxito, un atacante sólo tiene acceso a una de las bases de datos y no directamente en absoluto. Si usted no desea probar la línea de comandos para administrar las cuentas de usuario de MySQL, el usuario de gestión funciona también bastante fácil con phpMyAdmin en la pestaña "derechos".
Noveno PHP mensajes de error frente a
Mensajes de error de PHP que un atacante puede revelar mucho acerca de su propio servidor: una estructura de directorios, las estructuras de base de datos, errores de configuración, etc También buscan que el usuario muy poco profesional. Por esta razón, debe estar en un servidor web en vivo, siempre apague, ya que sólo vamos a seguir viendo en los registros.
# Php.ini global a través de: # / Etc/php5/apache2/php.ini display_errors = Off # Por sitio en la configuración del host virtual: display_errors Off php_flag # Mensajes de error leerlo de todos modos: cat / var/log/apache2/error.log | grep php
10a Objetivo para el límite de inyección SQL con ModSecurity
Inyecciones de código SQL es el método más frecuente de ataque en los servidores web. Acceder directamente a través de la aplicación web y se encuentra con un navegador para llevarlas a cabo. Aquí se transmiten por las variables de usuario creadas consultas SQL enviadas a los privilegios del usuario de base de datos la totalidad de su base de datos en borrará leer o editarlos. Una verdadera protección real contra la inyección de SQL, sólo existe si el código de PHP ha sido escrito el lugar en relación a estos ataques. Cada variable de entrada del usuario, lo que podría entrar en una consulta SQL, debe ser probado y se escapó. PHP ofrece la real_mysql_escape_string function ().
Si usted no está seguro si el código es limpio, puede mod_security para Apache ayudar a evitar una gran cantidad de estos ataques de todos modos. 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.";
>
USB Spickzettel: So sehen USB Stecker aus
Im Bild zu sehen von links nach rechts: Micro USB "B" - Mini USB "B" - Mini USB "B" 5 Pin - USB "A" weiblich - USB "A" männlich - USB "B" männlich
Out of the box mit Ubuntu – LogiLink WL0049A Wireless N USB Wifi WLAN Stick
Es ist mal wieder an der Zeit für Out-Of-The-Box Hardware für Ubuntu. Der Low-Budget USB WLAN-Stick von LogiLink funktioniert sofort ohne Konfiguration und Treiberinstallation unter einem aktuellen Ubuntu 10.10. Nach dem Einstecken ist im Netzwerkmanager sofort die Liste der verfügbaren WLANs verfügbar. Nicht schlecht für einen absoluten Low-Budget Stick (ca. 10 Euro). Mit den teureren von Netgear und Konsorten hat man leider einige Probleme mehr. Lediglich die Empfangsstärke ist nicht berauschend. Falls sich der Accesspoint oder Router im selben Raum befindet, hat man jedoch keine Probleme.
So meldet sich der Stick nach dem Einstecken:
Jan 27 15:15:48 box kernel: [50425.764049] usb 2-1: new high speed USB device using ehci_hcd and address 7 Jan 27 15:15:48 box kernel: [50425.916061] === pAd = f89cc000, size = 472668 === Jan 27 15:15:48 box kernel: [50425.916063] <-- RTMPAllocAdapterBlock, Status=0 Jan 27 15:15:48 box kernel: [50426.212122] <-- RTMPAllocTxRxRingMemory, Status=0 Jan 27 15:15:48 box kernel: [50426.214376] -->RTUSBVenderReset Jan 27 15:15:48 box kernel: [50426.214495] <--RTUSBVenderReset Jan 27 15:15:48 box kernel: [50426.495844] 1. Phy Mode = 0 Jan 27 15:15:48 box kernel: [50426.495847] 2. Phy Mode = 0 Jan 27 15:15:48 box kernel: [50426.495849] NVM is Efuse and its size =2d[2d0-2fc] Jan 27 15:15:48 box kernel: [50426.556586] RTMPSetPhyMode: channel is out of range, use first channel=1 Jan 27 15:15:48 box kernel: [50426.573077] 3. Phy Mode = 0 Jan 27 15:15:48 box kernel: [50426.578953] MCS Set = 00 00 00 00 00 Jan 27 15:15:48 box kernel: [50426.638326] <==== rt28xx_init, Status=0 Jan 27 15:15:48 box kernel: [50426.639953] 0x1300 = 00073200 Jan 27 15:15:49 box kernel: [50426.924845] ---> RTMPFreeTxRxRingMemory Jan 27 15:15:49 box kernel: [50426.924866] <--- RTMPFreeTxRxRingMemory Jan 27 15:15:49 box kernel: [50427.195749] <-- RTMPAllocTxRxRingMemory, Status=0 Jan 27 15:15:49 box kernel: [50427.198006] -->RTUSBVenderReset Jan 27 15:15:49 box kernel: [50427.198133] <--RTUSBVenderReset Jan 27 15:15:49 box kernel: [50427.484608] 1. Phy Mode = 0 Jan 27 15:15:49 box kernel: [50427.484610] 2. Phy Mode = 0 Jan 27 15:15:49 box kernel: [50427.484612] NVM is Efuse and its size =2d[2d0-2fc] Jan 27 15:15:49 box kernel: [50427.557222] 3. Phy Mode = 0 Jan 27 15:15:49 box kernel: [50427.563097] MCS Set = 00 00 00 00 00 Jan 27 15:15:49 box kernel: [50427.625962] <==== rt28xx_init, Status=0 Jan 27 15:15:49 box kernel: [50427.627588] 0x1300 = 00073200 Jan 27 15:15:54 box kernel: [50432.648580] ===>rt_ioctl_giwscan. 3(3) BSS returned, data->length = 483 Jan 27 15:15:59 box kernel: [50437.679264] ===>rt_ioctl_giwscan. 2(2) BSS returned, data->length = 308 Jan 27 15:15:59 box kernel: [50437.679356] ==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=1)
Mehrere Videos synchron ferngesteuert übers Netzwerk starten mit VLC
Eine befreundete Designstudentin wollte für die Präsentation ihrer Diplomarbeit eine Videoinstallation aufbauen. Auf im Raum angeordneten Fernsehern sollten parallel 3 von ihr erstellte Filme laufen und gleichzeitig gestartet werden. Die 3 Filme sind so geschnitten, dass sie gemeinsam ein Gesamtkunstwerk (und hoffentlich eine gute Abschlussnote) ergeben. Ein Veranstaltungsunternehmen verlangte für den Aufbau einige 1000 Euro. Das überstieg das Budget meiner Bekannten leider um einige 1000 Euro, deshalb haben wir den Aufbau selbst mit Open Source Software zusammengefrickelt. 3 (Windows)-Notebooks wurden per HDMI an die jeweiligen Fernseher angeschlossen und über einen Switch vernetzt. Ein viertes (Linux)-Notebook diente als zentraler Steuerrechner. Der VLC Media-Player bietet neben einer hervorragenden Unterstützung fast aller Videoformate auch viele weitere nützliche Funktionen. In diesem Aufbau kam das Remote Control Interface des VLC zum Einsatz, das es ermöglicht, den Player übers Netzwerk oder das Internet komplett fernzusteuern.
Die Windows Rechner bekamen die IP's 192.168.0.1 bis 192.168.0.3. Der Linux-Steuer-Rechner die IP 192.168.0.100.
Das Fernsteuerungsskript ist angelehnt an das Tutorial von Markus Berg (vielen Dank).
#/bin/bash
ip[0]="192.168.0.1"
ip[1]="192.168.0.2"
ip[2]="192.168.0.3"
port=20000
function send_cmd {
for address in ${ip[@]}
do
echo "$1" | nc $address $port &
done
}
while ( [ 1 ] )
do
claro
echo "Video Command"
eco
echo " s | START"
echo " p | PAUSE/PLAY"
echo " z | ZURUECKSPULEN"
echo " zp | ZURUECKSPULEN + PAUSE"
echo " f | VOLLBILD AN/AUS"
echo " b | Beenden"
eco
eco
eco
echo -n "Kommando? "
read command
case "$command" in
s)
send_cmd play
;;
p)
send_cmd pause
;;
z)
send_cmd prev
;;
zp)
send_cmd prev
perl -e 'select(undef,undef,undef,.3)'
send_cmd pause
;;
f)
send_cmd fullscreen
;;
b)
exit
;;
esac
done;
Dieses Skript auf dem Steuerungsrechner ergibt dieses spartanische menü:
Video Command s | START p | PAUSE/PLAY z | ZURUECKSPULEN zp | ZURUECKSPULEN + PAUSE f | VOLLBILD AN/AUS b | Beenden Kommando?
Auf den Windowsrechner musste nun nur noch aus der Windows-Konsole heraus VLC im Remote Control Modus gestartet werden:
vlc --extraintf oldrc --rc-host 192.168.0.1:20000
Nun wurde noch das Video in die jeweilige VLC-Playlist eingefügt. Die Fernsteuerung war fertig.
Leider gab es (wie fast immer) einige Fallstricke. Bei unseren Tests zickte zunächst die Windows-Firewall herum. Für die Präsentation musste diese deaktiviert werden. Generell war Windows keine besonders gute Wahl für die Präsentation, da Update-Meldungen, Avira-Popups und andere Nervereien natürlich im Video ziemlich peinlich wirken. Die Windows-Rechner mussten ziemlich kastriert werden. Firewalls, Virenscanner und Automatische Updates wurden deaktiviert. Zahlreiche Programme, die es sich im Tray gemütlich gemacht hatten, wurden deinstalliert. Im Endeffekt würde ich beim nächsten Mal das Abspielen auch mit Linux Clients realisieren, die aber wegen des Zeitdrucks nicht verfügbar waren.
Milestone flashen unter Linux mit sbf_flash
Ich habe bisher Windows nur noch für eine einzige Sache benötigt: Um mein Motorola Milestone mit neuer Firmware zu beflashen . Dafür waren bisher ein spezieller USB-Treiber und ein Flashtool von Motorola notwendig. Diese gab es nur für Windows und aus VirtualBox heraus haben sie nicht funktioniert. [mbm], ein Android Hacker aus #milestone-modding auf irc.freenode.net hat jetzt eine Binary zusammengebastelt, mit der es auch wunderbar unter Linux funktioniert. Getestet wurde es von mir unter Ubuntu 10.10. Leider gibt es keinen Quelltext zu der App, aber es funktioniert einwandfrei. Viele andere User bestätigen das hier in der offiziellen Bekanntmachung: http://blog.opticaldelusion.org/2010/05/sbfflash.html
Download: Original | Lokaler Mirror
So sieht ein Flashvorgang mit sbf_flash aus:
box-root-18:01:33 /home/ww/Desktop -> ./sbf_flash ./GOT_DACH_GERMANY_2_2_1FULL.sbf SBF FLASH 1.08 (mbm) === GOT_DACH_GERMANY_2_2_1FULL.sbf === 00: RDL03 0x82000000-0x8204CFFF 2FC7 AP 01: CG31 0xB01C0000-0xB01C47FF 24FE AP 02: CG33 0xD13FB000-0xD1BB783F E479 AP 03: CG34 0xB03A0000-0xB03A47FF CC19 AP 04: CG35 0xB07A0000-0xB0A607FF 888E AP 05: CG36 0xF0B7D000-0xF0BE083F 6799 AP 06: CG37 0xE4034000-0xE40379BF 9325 AP 07: CG39 0xD1D64000-0xDADE583F 6DA8 AP 08: CG40 0xDD2E4000-0xDD2E483F FDFF AP 09: CG42 0xB06A0000-0xB06DFFFF 73E3 AP 10: CG45 0xB0B20000-0xB0E207FF 79ED AP 11: CG47 0xB0EE0000-0xB12A07FF 679E AP 12: CG53 0xCFD80000-0xCFD807FF FDFF AP 13: CG61 0xB0640000-0xB06607FF 6C74 AP Milestone found. >> uploading RDL03 Uploading: 100% OK >> verifying ramloader -- OK >> executing ramloader Milestone found. >> sending erase >> uploading CG31 Uploading: 100% OK >> uploading CG33 Uploading: 100% OK >> uploading CG34 Uploading: 100% OK >> uploading CG35 Uploading: 100% OK >> uploading CG36 Uploading: 100% OK >> uploading CG37 Uploading: 100% OK >> uploading CG39 Uploading: 100% OK >> uploading CG40 Uploading: 100% OK >> uploading CG42 Uploading: 100% OK >> uploading CG45 Uploading: 100% OK >> uploading CG47 Uploading: 100% OK >> uploading CG53 Uploading: 100% OK >> uploading CG61 Uploading: 100% OK >> verifying CG31 -- OK >> verifying CG33 -- OK >> verifying CG34 -- OK >> verifying CG35 -- OK >> verifying CG36 -- OK >> verifying CG37 -- OK >> verifying CG39 -- OK >> verifying CG40 -- OK >> verifying CG42 -- OK >> verifying CG45 -- OK >> verifying CG47 -- OK >> verifying CG53 -- OK >> verifying CG61 -- OK >> rebooting









