Tweet Neglector. En lille PHP script til at slette gamle tweets fra Twitter
Tweet automatiserer processen med at Neglector at slette gamle tweets fra din Twitter-konto. Dybest set, det leverer til "udløbe" funktionalitet til din tweets. Det er nyttigt for folk, der ønsker at bruge Twitter, men ønsker ikke en historie om deres tweets til at forblive online i årtier.
HISTORIE: November 20, 2011 | version 0.1 Første udgivelse. Sletter Tweets December 28, 2011 | Version 0.2 Små fejlrettelser. Nu sletter retweets så godt. Kendte fejl: - Vil ikke, hvis du tweet mere end 1000 tweets i tidsperioden som du planlægger at holde tweets. Samme for retweets (100 tilladt). Disse er mangler på Twitter API GET jeg bruger ATM. Måske vil jeg løse dette problem med den næste udgivelse
Tweet Neglector bruger Twitter API til at slette alle dine tweets, der blev indsendt før et givet antal dage fra nu. På denne måde kan du konfigurere scriptet til at slette alle tweets, der er ældre end en uge eller en måned for eksempel. Scriptet skal være automatisk køres fra et cron job eller anden automatisering mekanisme på en regelmæssig basis.
Dette script kan ikke beskytte dig fra eksterne Tweet arkiver. Så det er uvist om slettes tweets er arkiveret stille af Twitter (jeg vil vædde de er). Så (som altid) tænke før twitte.
Tweet Neglector bruger PHP som scriptsprog og bundter Twitter OAuth bibliotek fra Matt Harris for API-adgang.
Installation
- PHP5 kræves for tmhOAuth - Udpak arkivet i en mappe efter eget valg. - Registrer dit Twitter API Keys på https://dev.twitter.com/apps - Rediger konfigurationen af scriptet, der passer til dine behov: # Twitter API nøgler, poletter og hemmeligheder # Få disse nøgler på -> https://dev.twitter.com/apps $ Consumer_key = "Din nøglen her"; $ Consumer_secret = "Din nøglen her"; $ Access_token = "Din nøglen her"; $ Access_token_secret = "Din nøglen her"; # Antal tweets per session til at arbejde på Tweets_per_session = $ 1000; # Twitter Brugernavn $ Twitter_username = "dit brugernavn her"; # Dage at holde tweets $ Keep_days = 30; - Kør scriptet manuelt fra browser, konsol, eller automatisk ved cronjob / Usr / bin / php / var / www / tweetneglector / tweetneglector.php
Tweet Neglector 0,2 downloades her
HOWTO: Hurtig og beskidt DHCP-server og DNS-cache med dnsmasq på Ubuntu
DHCP på LAN er praktisk. Man behøver ikke længere at administrere netværkskonfigurationen af hver enkelt computer i netværket til kunderne selv, men alting har en dejlig central placering på serveren. Spare ved caching DNS klienter lidt tid skal foretages, når løse værtsnavne, da forespørgsler kan anvendes på kendte navne fra den lokale vært cache og ikke til en server på internettet.
En lille DHCP-server er sat op meget hurtigt med dnsmasq.
# Installer dnsmasq apt-get install dnsmasq
Konfigurationen foregår centralt i filen / etc / dnsmasq.conf. Man bør ikke forlade før koncentreret konfigurationsmuligheder i filen afskrækket. Næsten alt er bare et eksempel og er som standard kommenteret ud. En meget kort Config er allerede tilstrækkelig til en fungerende opsætning:
DHCP
# DHCP netmask # Kunder modtaget 255.255.255.0 som netmasken dhcp-option = 1,255.255.255.0 # Default gateway # Kunder modtager som en gateway 192.168.1.251 dhcp-option = 3,192.168.1.251 # Dns # Kunder får navnet serveren 192.168.1.4 # Hvis du ønsker at bruge dnsmasq som DNS cache, bør dette være Vær # IP på den server, der kører dnsmasq dhcp-option = 6,192.168.1.4 # Værter for den samme IP-adresse fra MAC, der skal tildeles: # Dette får værten med MAC 00:11:22:33:44:55 IP 192,168.1.1 i 12 timer dhcp-host = 00:11:22:33:44:55, lobby, 192.168.1.1,12 h dhcp-host = 00:11:22:33:44:66, Lobby2, 192.168.1.2,12 h # Enhver computer, der ikke kan identificeres ved MAC modtage IP-adresser # Fra puljen af 192.168.1.120 til 150 dhcp-range = 192.168.1.120,192.168.1.150,12 h
DNS
Den DNS-funktionalitet dnsmasq behøver ingen konfiguration.
dnsmasq er bekymret for sine navneservere fra / etc / resolv.conf. Her skal
kendte navn server udbyderen registreres og måske endda som en fallback
8.8.8.8 for Googles DNS-servere.
Flere værtsnavne, der skal gælde i det lokale netværk kan dnsmasq i filen
Be / etc / hosts gjort kendt. Her er alle de computere registrerede værtsnavne
i LAN.
Faldgruber
dnsmasq brug for at genlæse sine konfigurationsfiler Konfigänderungen
/ Etc / init.d / dnsmasq genstart
Hvis kunderne ikke har en lejekontrakt fra den gamle DHCP-server, kan du manuelt bringe det til at starte en ny DHCP-anmodning.
# Linux dhclient eth0 # Windows ipconfig / release ipconfig / renew
Indtrængende nødt til at være forsigtig, indtil videre til brug overalt DHCP-server (som regel i routeren til internettet) for at deaktivere. 2 DHCP-servere på LAN kan generere en masse kaos.
Trådløse for EEE 1000H rt2860 i Ubuntu
Med en opdatering sidst den trådløse var på min EEE PC 1000H med Ubuntu ganske ustabil. Permanent afbrydelser, ingen trådløst efter at suspendere, langsom forbindelse, etc.
Jeg er ikke helt sikker på hvad det er, formentlig har rt2860 føreren til at få nogen opdateringen er en fejl.
Heldigvis kan det problem løses ved at installere Windows-driver med ndiswrapper.
Dette er kun en lidt forkortet tysk oversættelse af den engelske original mønster af nevdelap fra Ubuntu forum. (Tak)
Første Windows-drivere sutte og udpakning (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)
Anden Linux driver blacklist
# / 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 sortliste rt73usb sortliste rt2600 sortliste rt2860 # Asus 1000H har en rt2860. Der skal indlæses af ndiswrapper. sortliste B43 sortliste b43legacy sortliste SSB Blacklist r8192s_usb
Tredje Installer Windows-driver med ndisgtk drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k
sudo ndisgtk
4. Grub konfigurere
# / Etc / default / grub GRUB_CMDLINE_LINUX_DEFAULT = "pciehp.pciehp_force pciehp.pciehp_poll = 1 = 1 quiet splash"
sudo update-grub2
5. Power Management regel skaber
# / Etc / pm / sleep.d / ndiswrapper # / Bin / bash case "$ 1" i Hibernate | suspendere) sudo rmmod ndiswrapper ;; tø | cv) sudo modprobe ndiswrapper ;; *) ;; ESAC exit $?
chmod + x / etc / pm / sleep.d / ndiswrapper
6. Reboot
Så det trådløse kører hurtigt og stabilt.
PHP Cheat Sheet
Her vil jeg samle nyttige PHP kodestumper
Pseudo multithreading med skærm
# / Usr/bin/php5 for! ($ I = 1; $ i <50; $ i + +) {echo "startende $ i \ n"; tråd exec ("screen-d-m / usr/bin/php5 /. . php ");} MySQL-serveren er gået væk i langvarige PHP-shell scripts
# / Etc/php5/cli/php.ini = På mysql.allow_persistent mysql.max_persistent = -1 mysql.max_links = -1 mysql.connect_timeout = -1
XS Stick W14 UMTS med Ubuntu
XS Stick W14 zickt på Ubuntu omkring en smule. Indimellem så han Network Manager som et USB-modem, men han kunne ikke forbinde. Efter et par mislykkede Frickelei Jeg er på scriptet Sakis3G stødt på, som lover at producere næsten alle drev kan oprette forbindelse til. Og ja: Det har Sakis3G virker med det samme. Anbefalet, og sandsynligvis for andre sticks.
PLATE XS Stick W14 P / N 3000.000056.00 www.4g-systems.com
# Udfør lsusb Bus 002 Device 006: ID 1c9e: 9603
# / Var / log / syslog, når du tilslutter 19 jun 20:41:04 box kernel: [74186,796148] usb 2-2: nye fuld hastighed USB-enhed ved hjælp af uhci_hcd og adresse 7 19 jun 20:41:04 box kernel: [74186,946031] scsi11: usb-storage 2-2:1.0 19 jun 20:41:05 usb_modeswitch boks: skift 1c9e: F000 (USB-modem: USB-modem) 19 jun 20:41:06 box kernel: [74189,293850] usb 2-2: USB afbryde, adresse 7 19 jun 20:41:07 box kernel: [74189,660069] usb 2-2: nye fuld hastighed USB-enhed ved hjælp af uhci_hcd og adresse 8 19 jun 20:41:07 box kernel: [74189,819348] valgmulighed 2-2:1.0: GSM-modem (1-port) konverter fundet 19 jun 20:41:07 box kernel: [74189,819577] usb 2-2: GSM-modem (1-port) konverter nu knyttet til ttyUSB0 19 jun 20:41:07 box kernel: [74189,819802] valgmulighed 2-2:1.1: GSM-modem (1-port) konverter fundet 19 jun 20:41:07 box kernel: [74189,819950] usb 2-2: GSM-modem (1-port) konverter nu knyttet til ttyUSB1 19 jun 20:41:07 box kernel: [74189,820220] valgmulighed 2-2:1.2: GSM-modem (1-port) konverter fundet 19 jun 20:41:07 box kernel: [74189,820395] usb 2-2: GSM-modem (1-port) konverter nu knyttet til ttyUSB2 19 jun 20:41:07 box kernel: [74189,821414] scsi12: usb-storage 2-2:1.3 19 jun 20:41:07 box modem-manager [10 480]:(TtyUSB1) åbning seriel port .. 19 jun 20:41:07 box modem-manager [10 480]: (TtyUSB0) åbning seriel port .. 19 jun 20:41:07 box modem-manager [10 480]: (TtyUSB2) åbning seriel port .. 19 jun 20:41:08 box usb_modeswitch: skiftet til 1c9e: 9603 (USB-modem: Modem Configuration) 19 jun 20:41:08 box kernel: [74190,823474] scsi 12:0:0:0: Direct-Access 02:31 USBmod Disk PQ: 0 ANSI: 2 19 jun 20:41:08 box kernel: [74190,825402] sd 12:0:0:0: Attached SCSI generisk SG3 type 0 19 jun 20:41:08 box kernel: [74190,833436] sd 12:0:0:0: [sdc] Attached SCSI flytbar disk
12 trin til en Linux Apache MySQL PHP web server roden LAMP sikkert
Hacking frekvensen er steget markant i de seneste måneder. Især en masse data, der skal samles op af hacks på web-servere. Selv Sonys PSN-hack benyttede sig af en unpatched sårbarhed i Apache Web Server. Derfor samler jeg aktion her, kan serveren eje en lidt mere sikker mod angreb udefra. Selvfølgelig også dette ikke giver 100% beskyttelse, men det er bedre at gøre de slemme fyre spillet lidt mere vanskeligt. Nogle af de foranstaltninger kræver kun en minimal installation og vedligeholdelse. Andre har brug for en masse tid og viden om PHP til fange. Man skal altid kigge efter cost-benefit-forholdet i udvælgelsen af sikkerhedsforanstaltninger. Det giver ingen mening at beskytte en lille, privat site som Federal Reserve Bank. Men kun få konkrete ændringer i systemet i forvejen har et stort betyde mere sikkerhed. Og at du skal behandle endnu før det er for sent ....
Alle tips og Codesnips henvise til en nuværende Debian-boks.
Første Den firewall - Når alt forbyde
De fleste Linux-distributioner i deres standard installationer åbne nogen porte til det fri, som ikke er absolut nødvendige. Denne situation kan ændre sig hurtigt, men selv når serveren
fjolle rundt og prøver ting. Pludselig medierne serveren lytter på internettet eller i databasen
accepterer forbindelser fra internettet. Derfor er det ikke forkert at disciplinere sig selv og etablere en meget restriktiv firewall, der dybest set forbyder Når alle tilslutninger udefra og tillader kun (selv-) valgte forbindelser. Heldigvis sker det hurtigt med iptables. På denne måde kan man ikke længere udveksling af tjenesteydelser for at gøre tilgængelige for hele verden, der har noget at gøre der. Desværre, du betaler en lille trøst - firewallen skal justeres, hver gang du ønsker at tilbyde nye tjenester. Ikke desto mindre, indsatsen er lille og fordelene store.
# / Bin / bash # Slet eksisterende tabeller iptables-F # Forbyd alle indgående forbindelser iptables-P INPUT DROP iptables-P FORWARD DROP # Tillad alle udgående iptables-P OUTPUT ACCEPT # Tillad SSH iptables-A INPUT-j ACCEPT-p tcp - dport 22 # Tillad HTTP iptables-A INPUT-j ACCEPT-p tcp - dport 80 # Desuden, service (UDP) tillader f.eks Game Server iptables-A INPUT-j ACCEPT-p tcp - dport 4534 # Tillad alle fra localhost. (For selve serveren uhindret adgang til sine tjenester, # For eksempel PHP til den lokale database iptables-A INPUT-s 127.0.0.1-j ACCEPT # Allerede etablerede forbindelser vil blive accepteret i enhver havn # (Påkrævet for nogle dæmoner) iptables-A INPUT-m state - der er etableret, RELATEREDE-j ACCEPT
Denne lille backbone, vi kan blot fortsætte med at udvide og tilføje deres egne tjenester. Ved arbejde på firewall, bør du altid sikre bestemmelser for det tilfælde, der låser sig selv. Især på fjernservere, som du ikke har fysisk adgang, er det meget irriterende at miste et mislykket egen adgang til firewallen reglen. For at undgå dette problem ud af den måde, kan man begynde at arbejde på firewallen midlertidigt bare et cron job, der nulstiller firewall hvert par minutter eller serveren genstartes. Reglerne er senere afprøvet og elsket, det cronjob vil blive deaktiveret og de nye regler er permanent aktive.
For at finde ud af om hvilke services bare lytte til din egen server, kan du bruge netstat:
# For TCP sockets: netstat-LPN | grep tcp # Tilsvarende for UDP: netstat-LPN | grep udp
For at teste, hvis firewallen virkelig virker, kan du port scanne din egen server fra en anden computer. Det hele fungerede ud, skal vises i resultatet kun de selv porte der er åbne:
# For TCP: nmap-P1-65 535 meinserver.de # For UDP: nmap-SU-P1-65 535 meinserver.de
Anden SSH logins forbud
På sin egen rod server har ubegrænset SSH adgang. Dette er ganske smart, som du kan fra en SSH klient til serveren gange bare for at arbejde på det. Ulempen ved dette er, at kurset kan alle, der desværre har en eller anden måde overtaget deres egne adgangskoder. Det er meget sikrere at tillade SSH login kun med en gyldig nøgle-fil. Det er den offentlige nøgle af klienten til serveren og kopierede interaktiv login er slået fra ved at indtaste en adgangskode.
# På klienten, skal du oprette en offentlig nøgle # Hvis angivet, når du genererer en adgangskode, er man nødt til # Log ind senere på nøglefilen og adgangskoden. Ellers # Kun behov for nøglen. ssh-keygen-t rsa # Den genererede nøglen derefter kopiere til serveren ssh-copy-id-i ~ /. ssh / id_rsa.pub root@meinserver.de Juster derefter # sshd_config på serveren / etc / ssh / . . PasswordAuthentication ingen . . # Så starter nye SSH / Etc / init.d / ssh genstart
Selv her bør man tage forholdsregler for at ikke lukke ud, selv hvis noget ikke virker.
Den offentlige nøgle på en USB stick med tilhørende password i dit hoved gør det meget sværere for skurkene at få en shell.
Tredje SSH Bruteforcing forhindre denyhosts
Hvis rådgivning ikke er praktisk og et to opgive komfort password-baserede logins vil, kan du i det mindste forhindre den automatiske password satserne for angribere på serveren. En masse af bots på internettet hele dagen søger at gøre noget mere end at SSH-servere og afprøve i jeres forskellige adgangskoder. For en nogenlunde sikker adgangskode er ikke et stort problem, men der er en bedre fornemmelse, selv om det er muligt. Hertil kommer det også beskytter sine brugere, hvis der findes på serveren og brugerkonti. Her kan du ikke stole på, at brugerne bruger sikre passwords. denyhosts konstant kontrolleres på ssh logins og brugeren låser i en bestemt tid, som er trådt deres password forkert gentages. IP er af brugere midlertidigt gå ind i / etc / hosts.deny, så de ikke længere har adgang til, er mulig. Dette SSH Bruteforcing til en meget langvarig og ikke særlig lovende opgave.
apt-get install denyhosts # Denyhosts virker lige efter installation. Det kan være # I filen / etc / denyhosts.conf finjustere
4. Sortlister bruges til at blokere kendt problem IP-adresser
I forskellige Internet sortlister bevares, hvilken liste en lang række kriminelle / hakkede / spammy / svigagtige servere. Disse IP-lister kan indtastes direkte i firewall, så der fra kendte det ikke til betroede servere, ingen forbindelse er ikke længere muligt at din egen server. Så du kan reducere mængden af spam på deres egen server, og også drastisk en ting eller script-kiddie lock-out, fordi hans russiske proxy pludselig holder op med at arbejde. Sådan gør du, at jeg har været i en anden blog artiklen beskrev eksempel på den sortliste over Infiltrated.net.
5. Må ikke bruge FTP til at arbejde på serveren
FTP er et levn fra bedre tider, hvor internettet var en lille landsby stadig tillid til. Mange administratorer af websites stadig bruge FTP til at overføre filer til serveren eller til at arbejde på dit eget websted. Desværre er det meget usikkert, da FTP overfører alle data usikrede. Passwords og data kan læses uden problemer på hvert hop mellem servere og klienter. Det er langt sikrere med sshfs. Gør det muligt at montere en mappe via SSH på den eksterne server lokale filsystem. Man kan derefter arbejde på serveren, som om han var på den lokale computer. Alle fil adgang til filer på serveren er helt gennemsigtig, så du kan også åbne programmet, en lokal grafisk billede på serveren, redigere og gemme igen. Mere komfort og sikkerhed uden megen anstrengelse.
# Installer sshfs apt-get install sshfs # Opret mountpunkt på det lokale filsystem mkdir / media / myserver # Server til det lokale filsystem montere www-data@mein-server.de sshfs: / var / www / media / myserver # Nu mappen er / var / www på min lokale server under / media / myserver ledigt.
6. Installer opdateringer
En super sikkert system ikke vil hjælpe, hvis selve systemet er behæftet med fejl, og en kendt sårbarhed kan udnyttes. I de fleste tilfælde mangler disse sikkerhedsforanstaltninger hurtigt, ofte glemt, at regelmæssige opdateringer af systemet admins gøre. Om du skal aktivere automatiske opdateringer på Linux-servere eller ej, er et omstridt spørgsmål. Nogle vil aldrig gøre det, fordi det virker naturligt med en masse dårlige held kan være, at de opdateringer gør systemet ubrugeligt. Dette skete for mig i mere end 10 års arbejde på Debian-systemer, men aldrig og jeg sætter pris på fordelene ved rettidige og regelmæssige opdateringer, meget højere end den deraf følgende risiko.
# Denne linje i / etc / crontab, opdaterer systemet ur hver dag kl 06:00 0 6 * * * root apt-get update & & apt-get-y upgrade
Disse quick-and-dirty metode virkede for mig indtil videre altid godt. Jeg læste for nylig, at i Debian-pakken repository findes også uden opsyn-opgraderinger, som løser det problem nok noget mere elegant, men jeg er ikke blevet testet.
Selv med en fuldt automatiseret system opdateringer, er dette en ikke helt off the hook. Hvis en kernel opdatering er blevet leveret, er du nødt til at starte systemet igen med hånden, ellers vil ændringerne ikke bliver aktive.
Hvis man anvender ikke-PHP kode på serveren, så som et open source CMS eller et forum, er det absolut nødvendigt, selvfølgelig, også denne kode med nye versioner op til dato. Da Debian ikke opdaterer med ændringer af ansøgninger på disse regler dækker, er manuelt arbejde behov for her. I bedste fald læse den postlister af relevante produkter, der skal altid up to date.
7. PHP med open_basedir fængsle
Mange hacks baseret på det faktum, at en sårbarhed i PHP-kode bruges til at få adgang til filer i filsystemet adgang, som ikke hører til stedet, men selve systemet er derfor, du skal låse op PHP, så det read only i særligt udpegede mapper og skrive kan. Til dette. Php.ini den open_basedir konfigurationsindstilling PHP har mulighed til at sætte kun tilladt adgang til mapperne der. Filer såsom / etc / passwd er uden for rækkevidde. Vært for flere websteder på én server, skal du indstille open_basedir i hver VirtualHost konfiguration for hver side.
# Global php.ini via: # / Etc/php5/apache2/php.ini open_basedir = / var / www /: / tmp / # Per stedet på de 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.
8. 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".
9. 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
10. 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.";
?>
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
clear
echo "Video Command"
echo
echo " s | START"
echo " p | PAUSE/PLAY"
echo " z | ZURUECKSPULEN"
echo " zp | ZURUECKSPULEN + PAUSE"
echo " f | VOLLBILD AN/AUS"
echo " b | Beenden"
echo
echo
echo
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









