Tweet Neglector. Malý PHP skriptu na odstránenie starej správy od Twitter
Tweet automatizuje proces odstraňovania starých Neglector správy od účtu Twitter. V podstate sa poskytuje "končí", funkcie pre tweety. To je užitočné pre ľudí, ktorí chcú používať Twitter, ale nechcete históriu ich tweetov zostať on-line po celé desaťročia.
HISTÓRIA: 20 novembra 2011 | Verzia 0.1 Prvé vydanie. Odstráni Tweety 28 decembra 2011 | Verzia 0.2 Malé opravy chýb. Teraz odstráni retweets rovnako. Známe chyby: - Nebude fungovať, ak ste tweet viac ako 1000 tweety v časovom pláne, aby si tweety. Rovnaké pre retweets (100 povolené). To sú nedostatky Twitter API GET som pomocou bankomatu. Možno budem opraviť na ďalšie vydanie
Tweet Neglector používa Twitter API odstrániť všetky svoje tweety, ktoré boli umiestnené do určitého počtu dní odo dneška. Týmto spôsobom môžete nastaviť script odstrániť všetky tweety, ktoré sú staršie ako jeden týždeň, alebo mesiac napríklad. Skript by mal byť automaticky spustiť z cronu alebo ďalšie automatizáciu mechanizmus pravidelne.
Tento skript nemôže ochrániť pred vonkajšími Tweet archívov. Tak to je nevedno ak odstránený tweety sú archivované potichu Twitter (Stavím sa, že sú). Takže (ako vždy), že pred tweeting.
Tweet Neglector používa PHP je skriptovací jazyk a zväzky Twitter OAuth knižnice od Matt Harris pre prístup API.
Inštalácia
- PHP5 potrebné pre tmhOAuth - Rozbaľte archív do adresára podľa svojho výberu. - Zaregistrujte svoj Twitter API tlačidiel na https://dev.twitter.com/apps - Úprava nastavení skriptu, aby vyhovoval vašim potrebám: # Twitter API kľúča, známky a tajomstvo # Získať tieto kľúče na -> https://dev.twitter.com/apps Consumer_key $ = "Váš Kľúčom"; Consumer_secret $ = "Váš Kľúčom"; Access_token $ = "Váš Kľúčom"; Access_token_secret $ = "Váš Kľúčom"; # Počet tweetov na zasadnutí k práci na Tweets_per_session = $ 1000; Twitter # užívateľské meno Twitter_username $ = "Vaše užívateľské meno"; # Dní do tweety Keep_days $ = 30; - Spustite skript manuálne z prehliadača, konzoly, alebo automaticky pomocou úlohy cronu / Usr / bin / php / var / www / tweetneglector / tweetneglector.php
Tweet Neglector 0.2 na stiahnutie tu
HOWTO: rýchly a jednoduchý DHCP servera a DNS cache s dnsmasq na Ubuntu
DHCP na LAN je praktické. Jeden už nepotrebuje pre správu siete konfigurácie každého počítača v sieti samotnej klientov, ale všetko má krásny centrálne umiestnenie na serveri. Uložiť do medzipamäte DNS klienta trochu času, musí byť pri riešení názvov hostiteľov, pretože otázky môže byť aplikovaný na známe mená z lokálneho počítača vyrovnávacej pamäte a nie na server na Internete.
Malý DHCP server je nastavený tak veľmi rýchlo dnsmasq.
# Install dnsmasq apt-get install dnsmasq
Konfigurácia prebieha centrálne v súbore / etc / dnsmasq.conf. Človek by nemal odísť skôr, než koncentrovaný možnosti konfigurácie v súbore odradiť. Takmer všetko, čo je len príkladom a je v predvolenom nastavení komentár. Veľmi krátke Config je už dostatočná pre pracovné nastavenia:
DHCP
# DHCP masky # Klienti dostali 255.255.255.0 ako masku siete dhcp-voľba = 1,255.255.255.0 # Default gateway # Klient dostane ako brána 192.168.1.251 dhcp-voľba = 3,192.168.1.251 # Dns # Dostanú klienti DNS server 192.168.1.4 # Ak chcete používať dnsmasq ako DNS cache, malo by to byť Byť # IP servera, ktorý beží dnsmasq dhcp-voľba = 6,192.168.1.4 # Hostitelia pre rovnakú IP adresu od MAC majú byť zadané: # To dostane hosť s MAC 00:11:22:33:44:55 IP 192,168.1.1 12 hodín 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 # Každý počítač, ktorý nemôže byť identifikovaný MAC získať IP # Z fondu 192.168.1.120 až 150 dhcp-rozsah = 192.168.1.120,192.168.1.150,12 h
DNS
Funkčnosť DNS dnsmasq nepotrebuje žiadne nastavenie.
dnsmasq sa o svoje menné servery z / etc / resolv.conf. Tu by mal
známe meno servera poskytovateľa sú zaznamenávané a prípadne aj ako núdzové
8.8.8.8 pre servery DNS Google.
Viac menami, ktoré by mali platiť v miestnej sieti, dnsmasq v súbore
Je / etc / hosts známy. Tu sú všetky počítače registrované hostname
v LAN.
Úskalia
dnsmasq musieť znovu prečítať konfiguračné súbory Konfigänderungen
/ Etc / init.d / dnsmasq restart
Ak klienti nemajú nájomnej zmluvy zo starého servera DHCP, môžete ručne uviesť začať nový DHCP požiadavku.
# Linux dhclient eth0 # Windows príkaz ipconfig / release ipconfig / renew
Naliehavo musí byť opatrný, pokiaľ pre použitie všade DHCP server (obvykle router k internetu) zakázať. 2 DHCP servery na LAN možno vytvoriť mnoho chaosu.
Bezdrôtové pre EEE 1000H rt2860 v Ubuntu
S každou aktualizáciu v poslednej dobe bezdrôtové bol na Eee PC 1000H s Ubuntu veľmi nestabilné. Trvalé odpojenie, žiadne bezdrôtové po pozastavení, pomalé pripojenie, atď
Nie som si celkom istý, čo to je, pravdepodobne rt2860 ovládač pre akékoľvek aktualizácie je chyba.
Našťastie sa dá tento problém vyriešiť inštaláciou ovládača Windows pomocou ndiswrapper.
To je len mierne skrátené nemecký preklad z anglického originálu vzor z nevdelap z fóra Ubuntu. (Ďakujem)
Prvé Windows ovládače sať a Unpack (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)
Druhý Ovládače pre Linux 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 blacklist rt73usb blacklist rt2600 blacklist rt2860 # Asus 1000H má rt2860. Ak chcete byť načítaný ndiswrapper. blacklist B43 blacklist b43legacy blacklist SSB Blacklist r8192s_usb
Tretia Nainštalujte ovládač Windows s ndisgtk drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k
sudo ndisgtk
4. Grub nastavenie
# / Etc / default / grub GRUB_CMDLINE_LINUX_DEFAULT = "pciehp.pciehp_force pciehp.pciehp_poll = 1 = 1 quiet splash"
sudo update-grub2
5. Power Management Vytvoriť pravidlo
# / Etc / pm / sleep.d / ndiswrapper # / Bin / bash case "$ 1" v Hibernácie | pozastaviť) sudo rmmod ndiswrapper ,, topenia | životopis) sudo modprobe ndiswrapper ,, *) ,, ESAC exit $?
chmod + x / etc / pm / sleep.d / ndiswrapper
6. Reboot
Potom bezdrôtové beží rýchly a stabilný.
PHP Cheat Sheet
Tu som zbierať užitočné PHP fragmentov kódu
Pseudo multithreading s obrazovkou
# / Usr/bin/php5 pre! ($ I = 1, $ i <50; $ i + +) {echo "$ i od \ n"; závit exec ("screen-d-m / usr/bin/php5 /. . php ");} MySQL server išiel preč v long-running PHP skriptov shellu
# / Etc/php5/cli/php.ini = On mysql.allow_persistent mysql.max_persistent = -1 mysql.max_links = -1 mysql.connect_timeout = -1
XS Stick W14 UMTS s Ubuntu
XS Stick W14 zickt na Ubuntu asi trochu. Občas videl Network Manager ako modem USB, ale stále nemohol pripojiť. Po niekoľkých neúspešných Frickelei som na script Sakis3G stretli, ktorý sľubuje, že produkujú takmer všetky jednotky je možné pripojiť. A naozaj: Má Sakis3G funguje okamžite. Odporúčané a pravdepodobne iné palice.
PLATE XS Stick W14 P / N 3000.000056.00 www.4g-systems.com
# Lsusb Bus 002 zariadenia 006: ID 1c9e: 9603
# / Var / log / syslog pripájanie 19.června 20:41:04 box kernel: [74186.796148] usb 2-2: new full speed USB zariadenie pomocou uhci_hcd a adresa 7 19.června 20:41:04 box kernel: [74186.946031] scsi11: usb-storage 2-2:1.0 19.června 20:41:05 usb_modeswitch box: spínací 1c9e: F000 (USB modem: USB modem) 19.června 20:41:06 box kernel: [74189.293850] usb 2-2: USB odpojiť, adresa 7 19.června 20:41:07 box kernel: [74189.660069] usb 2-2: new full speed USB zariadenie pomocou uhci_hcd a adresa, 8 19.června 20:41:07 box kernel: [74189.819348] možnosť 2-2:1.0: GSM modem (1-port) prevodník zistený 19.června 20:41:07 box kernel: [74189.819577] usb 2-2: GSM modem (1-port) prevodník je teraz priložený k ttyUSB0 Box 19.června 20:41:07 kernel: [74189.819802] možnosť 2-2:1.1: GSM modem (1-port) prevodník zistený 19.června 20:41:07 box kernel: [74189.819950] usb 2-2: GSM modem (1-port) prevodník je teraz priložený k ttyUSB1 19.června 20:41:07 box kernel: [74189.820220] možnosť 2-2:1.2: GSM modem (1-port) prevodník zistený 19.června 20:41:07 box kernel: [74189.820395] usb 2-2: GSM modem (1-port) prevodník je teraz priložený k ttyUSB2 19.června 20:41:07 box kernel: [74189.821414] scsi12: usb-storage 2-2:1.3 19.června 20:41:07 box modem-manager [10 480]:(TtyUSB1) otvorenie sériového portu .. 19.června 20:41:07 box modem-manager [10 480]: (TtyUSB0) otvorenie sériového portu .. 19.června 20:41:07 box modem-manager [10 480]: (TtyUSB2) otvorenie sériového portu .. 19.června 20:41:08 box usb_modeswitch: prepnutie do 1c9e: 9603 (USB modem: Modem konfigurácie) 19.června 20:41:08 box kernel: [74190.823474] scsi 12:0:0:0: Direct-Access 02:31 USBmod Disk PQ: 0 ANSI: 2 19.června 20:41:08 box kernel: [74190.825402] sd 12:0:0:0: Attached SCSI SG3 všeobecný typ 0 19.června 20:41:08 box kernel: [74190.833436] sd 12:0:0:0: [sdc] Attached SCSI vymeniteľného disku
12 krokov k Linux Apache MySQL PHP root webového servera LAMP bezpečné
Hacking frekvencia prudko zvýšil v posledných mesiacoch. Zvlášť veľké množstvo dát, aby sa zdvihol o hacky na webových serveroch. Dokonca aj Sony PSN hack využil neopravených zraniteľností v webového servera Apache. Preto zbieram akciu tu, server vlastné trochu bezpečnejšie pred útokmi zvonku. Samozrejme, že to tiež neposkytuje 100% ochranu, ale je lepšie, aby tí zlí hra trochu ťažšie. Niektoré z opatrení vyžadujú len minimálnu údržbu a inštaláciu. Iní potrebujú veľa času a znalostí PHP chytiť. Jeden by mal vždy hľadať pomeru nákladov a výnosov pri výbere bezpečnostných opatrení. Nemá zmysel chrániť malé, súkromné stránky, ako je Federálnej rezervnej banky. Avšak len málo konkrétne zmeny v systéme už má veľký priemer väčšiu bezpečnosť. A že by ste mali začať liečiť ešte skôr, než bude príliš neskoro ....
Všetky tipy a Codesnips odkazujú na aktuálnu Debian box.
Prvé Firewall - Akonáhle je všetko zakázať
Väčšina linuxových distribúcií vo východiskovej inštalácii otvárať žiadne porty pre vonkajšie, ktoré nie sú nevyhnutné. Táto situácia sa môže rýchlo meniť, však, aj keď na serveri
hrať sa a snaží sa veci. Zrazu media server počúva na internete alebo v databáze
akceptuje pripojenie z internetu. Z tohto dôvodu, to nie je zlé disciplíne seba a vytvoriť veľmi reštriktívny firewall, ktorý v podstate zakazuje Akonáhle sú všetky spoje z vonkajšej strany a umožňuje iba (self-) vybraných zlúčenín. Našťastie sa to urobiť rýchlo s iptables. Týmto spôsobom možno už poskytovať služby sprístupniť svetu, že nemajú čo tam. Bohužiaľ, budete platiť len malou útechou - firewall musí byť nastavený zakaždým, keď chcete ponúkať nové služby. Avšak úsilie je malý a veľký prínos.
# / Bin / bash # Zmazať existujúcej tabuľky iptables-F # Zakázať všetky prichádzajúce spojenia iptables-P INPUT DROP iptables-P FORWARD DROP # Povoliť všetky odchádzajúce iptables-P OUTPUT ACCEPT # Povoliť SSH iptables-A INPUT-j ACCEPT-p tcp - dport 22 # Povoliť HTTP iptables-A INPUT-j ACCEPT-p tcp - dport 80 # Ďalej služieb (UDP) umožní napríklad herný server iptables-A INPUT-j ACCEPT-p tcp - dport 4534 # Povoliť všetko z localhost. (K tomu, aby samotný server voľný prístup k jeho službám, # Napríklad PHP do lokálnej databázy iptables-A INPUT-s 127.0.0.1-j ACCEPT # Už zavedené spoje budú prijímané v akomkoľvek prístave # (Nevyhnutné pre niektoré démonmi) iptables-A INPUT-m state - štát zavedené, SÚVISIACE-j ACCEPT
Tento malý chrbticu môžeme jednoducho aj naďalej rozširovať a pridávať svoje vlastné služby. Pri práci na firewall, mali by ste vždy urobí opatrenia pre prípad, že uzamkne sám. Zvlášť na vzdialené servery, ktoré ste žiadny fyzický prístup, to je veľmi nepríjemné stratiť neúspešný vlastný prístup na pravidlo brány firewall. Aby sa zabránilo tomuto problému z cesty, jeden môže začať pracovať na firewalle len dočasne cron, ktorý obnoví firewall každých pár minút, alebo reštartovanie servera. Tieto pravidlá sú potom testované a miloval, úlohy cronu bude deaktivovaná a nové pravidlá zostávajú stále aktívny.
Ak chcete zistiť viac o tom, aké služby len počúvať svoj vlastný server, môžete použiť netstat:
# Pre zásuvky TCP: netstat-LPN | grep tcp # Podobne pre UDP: netstat-LPN | grep udp
Ak chcete otestovať, či skutočne funguje firewall, môžete port scan svoj vlastný server z iného počítača. Je to všetko vyšlo, by sa mal objaviť vo výsledku len i porty, ktoré sú otvorené:
# Pre TCP: nmap-P1-65 535 meinserver.de # Pre UDP: nmap-su-P1-65 535 meinserver.de
Druhý SSH prihlásenie zákaz
Na vlastné root server má neobmedzený prístup k SSH. Toto je celkom šikovný, ako môžete z ľubovoľného klienta SSH na server doby len na ňom pracovať. Nevýhodou je, že samozrejme môže každý, kto má bohužiaľ nejako prevzal vlastné heslo. Je to oveľa bezpečnejšie, aby SSH prihlásenie iba s platným súbor kľúča. Jedná sa o verejný kľúč klienta na server a skopírovať interaktívne prihlásenie sú vypnuté po zadaní hesla.
# Na klienta, vytvoriť verejný kľúč # Ak je zadané pri generovaní hesla, je potrebné # Prihláste sa neskôr súbor kľúče a heslá. Inak # Iba potrebné klávesy. ssh-keygen-t RSA # Generovaný kľúč skopírovať na server ssh-copy-id-i ~ /. ssh / id_rsa.pub root@meinserver.de Potom nastavte # sshd_config na serveri / etc / ssh / . . PasswordAuthentication nie . . # Potom spustite nové SSH / Etc / init.d / ssh restart
Aj tu by mali prijať opatrenia, aby sa zatvárať, aj keď niečo nefunguje.
Verejný kľúč na USB flash disk s zodpovedajúce heslo v hlave je oveľa ťažšie pre zlé ľudí, aby si shell.
Tretia SSH Bruteforcing zabrániť denyhosts
Ak je rada nie je praktické, a jeden dva opustiť pohodlie na základe hesla prihlasovanie chcete, môžete aspoň zabrániť automatickej heslo sadzieb útočníkov na server. Mnoho botov na internete celý deň snaží urobiť nič iné, než na SSH servery a vyskúšať v rôznych hesiel. S primerane bezpečné heslo nie je veľký problém, ale tam je lepší pocit, aj keď je to možné. Okrem toho tiež chráni svojich užívateľov, ak existuje na serveri a užívateľských účtov. Tu nemôžete veriť, že užívatelia používajú zabezpečenie hesiel. denyhosts neustále kontrolované SSH prihlásenie a užívateľ uzamkne po určitú dobu, ktorá sa dostala na svoje nesprávne heslo opakovať. IP adries užívateľov dočasne ísť do / etc / hosts.deny, takže už nemáte prístup, je to možné. To SSH Bruteforcing na veľmi zdĺhavé a nie príliš nádejná úloha.
apt-get install denyhosts # Denyhosts funguje hneď po inštalácii. To môže byť # V súbore / etc / denyhosts.conf doladiť
4. Zakázané slúži na blokovanie IP adries známy problém
V rôznych internetových databáz, sú zachované, ktoré uvádzajú veľké množstvo trestných / nasekané / spam / podvodné servery. Tieto zoznamy IP možno zadať priamo do firewallu tak, aby z toho je známe, že dôveryhodných serverov žiadne spojenie nie je možné na vlastný server. Takže môžete obmedziť množstvo spamu na vlastný server, a tiež výrazne vec alebo script-dieťatko lock out, pretože jeho ruský zástupca náhle prestane fungovať. Ako na to, že som v inom článku v blogu popísal na príklade čiernej listiny Infiltrated.net.
5. Nepoužívajte FTP pre prácu na serveri
FTP je pamiatka na lepšie časy, kedy Internet bol ešte malé obce dôveryhodné. Mnoho Správcovia internetových stránok stále používať FTP pre prenos súborov na server, alebo pracovať na svojom vlastnom webe. Bohužiaľ, je to veľmi neisté, pretože FTP prenos všetkých dát nezabezpečené. Heslá a dáta možno čítať bez problémov na oboch hop medzi servermi a klientmi. Je to oveľa bezpečnejšie sshfs. Umožňuje pripojiť adresár cez SSH na vzdialenom serveri lokálny súborový systém. Jeden môže potom pracovať na serveri, ako by bol v lokálnom počítači. Všetky súbor prístup k súborom na serveri aj úplne priehľadné, takže si môžete otvoriť aj program, miestne grafický obrázok na serveri, upraviť a uložiť znovu. Viac komfortu a bezpečnosti bez väčšej námahy.
# Install sshfs apt-get install sshfs # Vytvoriť prípojný bod v miestnom systéme súborov mkdir / media / myserver # Server Miestne prípojný bod súborového systému www-data@mein-server.de sshfs: / var / www / media / myserver # Teraz je adresár / var / www na mojom lokálnom serveri v / media / myserver k dispozícii
6. Inštalácia aktualizácií
Super zabezpečený systém nepomôže, ak systém sám je chybný a známe zraniteľnosti môžu byť zneužité. Vo väčšine prípadov sú tieto bezpečnostné nedostatky rýchlo, často zabúda, ale pravidelné aktualizácie systému, aby administrátori. Či už by malo umožniť automatické aktualizácie na linuxových serveroch, alebo nie, je spornou otázkou. Niektorí by nikdy neurobil to, lebo to funguje prirodzene s množstvom smoly môže byť, že aktualizácia je systém nepoužiteľný. To sa mi stalo vo viac ako 10 rokov práce na systémoch Debian, ale nikdy som oceniť výhody včasné a pravidelné aktualizácie, oveľa vyššie ako riziko plynúce.
# Tento riadok v / etc / crontab, Aktualizuje systémové hodiny každý deň v 6 hodín ráno 0 6 * * * root apt-get update & & apt-get-y aktualizovať
Tieto rýchle a hrubé metódy pracoval pre mňa doteraz vždy dobre. Nedávno som čítal, že v úložisku balík existuje aj bez dozoru, aktualizácia, ktorá rieši problém možno niečo viac elegantné, ale nebola testovaná.
Aj s plne automatickým systémom aktualizácií, toto je úplne z obliga. Ak je jadro aktualizácia bola doručená, je potrebné zaviesť systém opäť ručne, inak sa zmeny nebudú aktívne.
Ak jeden používa non-PHP kód na serveri, ako je open source CMS, alebo fórum, je absolútne nevyhnutné, samozrejme, aj tento kód novej verzie aktuálne. Vzhľadom k tomu, Debian neaktualizuje so zmenami jeho žiadosti v týchto pravidiel sa týka, je ručné práce potrebné tu. V najlepšom prípade si prečítajte konferencií príslušných produktov, ktoré majú byť vždy aktuálne.
7. PHP open_basedir uväzniť
Mnoho hacky na základe skutočnosti, že chybu v kóde PHP sa používa pre prístup k súborom v prístupe systéme súborov, ktoré nepatria na stránky, ale systém sám o sebe je dôvod, prečo by ste mali zamknúť PHP tak, že si len na to určených adresároch a písať môže. Pre to, php.ini konfigurácie open_basedir možnosť. PHP má možnosť dať povolený len prístup k adresárom tam. Súbory, ako je / etc / passwd sú mimo dosah. Hosting viac webov na jednom serveri, mali by ste nastaviť open_basedir v každom VirtualHost konfigurácii pre každú stránku.
# Globálne php.ini pomocou: # / Etc/php5/apache2/php.ini open_basedir = / var / www /: / tmp / # Na mieste v VirtualHost config: php_value open_basedir / var / www / site /: / tmp /
Je dôležité zvážiť, či všetky stránky boli pridané skripty obvykle potrebujú mať prístup, inak to môže byť, že sú vypnuté a legitímne funkcií aplikácie PHP.
8. Vytvorte si vlastné webové stránky pre užívateľov MySQL
Používa vlastný PHP, MySQL, mali by ste vytvoriť absolútne pre Apllikation samostatné používateľov MySQL, a za žiadnych okolností používať MySQL požiadaviek užívateľa root. Mali by ste tiež obmedziť práva používateľov tak ďaleko, že naozaj len operácie sú povolené, ktorá vyžaduje PHP skriptu. CREATE TABLE a DROP TABLE sú bežné v SQL injekcie sa používajú a vo väčšine aplikácií v PHP nikdy potrebná. Hostí na niekoľko stránok s viac databáz na serveri, mali by ste si vytvoriť vlastnú databázu pre všetkých užívateľov. A tak, po úspešnom útoku, útočník má prístup iba k jednému z databáz, a nie priamo na všetky. Ak si nechcete skúsiť príkazový riadok pre správu MySQL používateľských účtov, správu užívateľov funguje tiež veľmi ľahké sa phpMyAdmin pod "práva" na kartu.
9. PHP chybové hlásenia off
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
Zabezpečenie Linux servery s podvod / spam / Zločin čiernu listinu Infiltrated.net
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[@]}
robiť
echo "$1" | nc $address $port &
vykonané
}
while ( [ 1 ] )
robiť
jasný
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









