Neglector Tweet. Mały skrypt PHP do usuwania starych tweety z Twittera
Automatyzuje proces Neglector tweet usuwania starych tweety ze swojego konta na Twitterze. Zasadniczo zapewnia do "wygaśnięcia" funkcjonalność dla tweets. Jest to przydatne dla ludzi, którzy chcą używać Twittera, ale nie chce historię swoich tweetów do pozostawania online przez dziesięciolecia.
HISTORIA: 20 listopada 2011 | Wersja 0.1 Pierwsza wersja. Usuwa Tweets 28 grudnia 2011 | Wersja 0.2 Małe poprawki błędów. Teraz usuwa retweets, jak również. Znane bugi: - Nie będzie działać, jeśli ćwierkanie ponad 1000 tweety w czasie planujesz udostępniać tweety. Sama dla retweets w 100 to dozwolone). Są to braki w Twitter API GET Używam bankomatu. Może się to naprawić w następnej wersji
Tweet Neglector wykorzystuje Twitter API, aby usunąć wszystkie swoje tweety, które zostały opublikowane przed określoną liczbą dni od teraz. W ten sposób można skonfigurować skrypt, aby usunąć wszystkie tweety, które są starsze niż tydzień czy miesiąc na przykład. Skrypt powinien być automatycznie uruchamiany z crona lub innego mechanizmu automatyzacji w regularnej bazie.
Skrypt ten nie chroni przed zewnętrznymi archiwów Tweet. Więc nie wiadomo, czy usunięte tweety są archiwizowane przez Twitter cicho (założę się, że są). Tak (jak zawsze) myśleć przed Tweeting.
Tweet Neglector wykorzystuje PHP jako języka skryptowego i wiązkach na Twitterze OAuth biblioteki z Matt Harris dostępu API.
Instalacja
- PHP5 wymagane tmhOAuth - Rozpakuj archiwum do wybranego katalogu. - Zgłoś swoje Twitter kluczy API w https://dev.twitter.com/apps~~pobj - Edycja konfiguracji skryptu do własnych potrzeb: Miejsce Twitter API kluczy, żetony i tajemnice # Pobierz te klucze na -> https://dev.twitter.com/apps~~pobj $ Consumer_key = "Twój klucz HERE"; $ Consumer_secret = "Twój klucz HERE"; $ Access_token = "Twój klucz HERE"; $ Access_token_secret = "Twój klucz HERE"; # Liczba tweets na sesję do pracy na $ Tweets_per_session = 1000; # Nazwa użytkownika Twitter $ Twitter_username = "tutaj swoją nazwę użytkownika"; Miejsce dni, aby tweety $ Keep_days = 30; - Uruchom skrypt ręcznie z przeglądarki, konsoli lub automatycznie przez cronjob / Usr / bin / php / var / www / tweetneglector / tweetneglector.php
Tweet Neglector 0,2 pobrania tutaj
HOWTO: Szybkie i brudne serwer DHCP i DNS cache z dnsmasq na Ubuntu
DHCP w sieci LAN jest praktyczne. Nie trzeba już zarządzać konfiguracją sieci każdego komputera w sieci do klientów samych, ale wszystko ma piękny centralny serwer lokalizacji. Zapisz poprzez buforowanie klientów DNS mało czasu muszą być wykonane podczas rozpoznawania nazw hostów, ponieważ zapytania mogą być stosowane do znanych nazw hostów z lokalnej pamięci podręcznej, a nie na serwerze w Internecie.
Mały serwer DHCP jest skonfigurowany Dnsmasq z bardzo szybko.
# Zainstaluj Dnsmasq apt-get install dnsmasq
Konfiguracja odbywa się centralnie w pliku / etc / dnsmasq.conf. Nie należy pozostawiać przed zaciśniętą opcje konfiguracyjne w pliku odstrasza. Prawie wszystko jest tylko przykładem i jest domyślnie wykomentowane. Bardzo krótki Config jest już wystarczające do konfiguracji pracy:
DHCP
# DHCP netmask # Klienci otrzymali 255.255.255.0 jako maskę podsieci dhcp-option = 1,255.255.255.0 # Default gateway Klienci Miejsce otrzymał jako brama 192.168.1.251 dhcp-option = 3,192.168.1.251 # Dns # Klienci dostać do serwera nazw 192.168.1.4 # Jeśli chcesz użyć Dnsmasq jako pamięci podręcznej DNS, powinno to być Bądź # IP serwera, na którym działa Dnsmasq dhcp-option = 6,192.168.1.4 # Hosty do tego samego adresu IP przypisanego przez MAC: # Ten dostaje wiele z 00:11:22:33:44:55 MAC OD 192,168.1.1 przez 12 godzin dhcp-host = 00:11:22:33:44:55, hol, 192.168.1.1,12 h dhcp-host = 00:11:22:33:44:66, Lobby2, 192.168.1.2,12 h # Wszystkie komputery, które nie mogą być identyfikowane na podstawie adresów MAC otrzymać adresy IP # Z puli 192.168.1.120 do 150 dhcp-range = 192.168.1.120,192.168.1.150,12 h
DNS
Funkcjonalność DNS dnsmasq wymaga żadnej konfiguracji.
dnsmasq dotyczy jej serwery nazw z / etc / resolv.conf. To powinno być
znany serwer nazw dostawcy są rejestrowane, a nawet jako rezerwowy
8.8.8.8 dla serwerów DNS na Google.
Aby uzyskać więcej hostów, które powinny obowiązywać w sieci lokalnej może, Dnsmasq w pliku
Do / etc / hosts znane. Tu są wszystkie komputery zarejestrowane adresy,
LAN.
Pułapki
dnsmasq musi ponownie odczytać jego pliki konfiguracyjne Konfigänderungen
/ Etc / init.d / dnsmasq restart
Jeśli klienci nie mają umowę najmu ze starego serwera DHCP, można ręcznie przynieść to, aby rozpocząć nowe żądania DHCP.
# Linux dhclient eth0 # Windows ipconfig / release ipconfig / renew
Pilnie uważać, do tej pory używać gdziekolwiek serwer DHCP (zazwyczaj router do Internetu), aby wyłączyć. 2 serwery DHCP w sieci LAN może generować dużo chaosu.
Wireless na EEE 1000H rt2860 w Ubuntu
Przy każdej aktualizacji ostatnio bezprzewodowy było na moich EEE PC 1000H z Ubuntu dość niestabilna. Stała rozłączenia, nie bezprzewodowy po zawiesić, połączenia powolnego itp.
Nie jestem pewien co to jest, prawdopodobnie jest rt2860 kierowca dostać żadnej aktualizacji z błędu.
Na szczęście problem można rozwiązać, instalując sterownik systemu Windows z ndiswrapper.
To jest tylko nieznacznie skrócone tłumaczenie z angielskiego wzoru oryginalnego z nevdelap z forum Ubuntu. (Dziękuję)
Pierwszy system Windows dupy sterowniki i rozpakować (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)
Drugi Czarna kierowca Linux
# / Etc / modprobe.d / blacklist.conf Czarna rt2x00lib Czarna rt2x00pci Czarna rt2x00usb Czarna rt2400pci Czarna rt2500pci Czarna rt2500usb Czarna rt2800lib Czarna rt2800pci Czarna rt2800usb Czarna rt61pci Czarna rt73usb Czarna RT2600 Czarna rt2860 # Asus 1000H ma rt2860. Być ładowane przez ndiswrapper. Czarna b43 Czarna b43 Czarna ssb Czarna r8192s_usb
Trzeci Zainstaluj sterownik Windows z ndisgtk drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k
sudo ndisgtk
4-ty Konfigurowanie grub
# / Etc / default / grub GRUB_CMDLINE_LINUX_DEFAULT = "pciehp.pciehp_force pciehp.pciehp_poll = 1 = 1 cichy plusk"
sudo update-grub2
+5-sze Zasada Power Management tworzyć
# / Etc / pm / sleep.d / ndiswrapper # / Bin / bash case "1 dolar" w hibernate | zawiesić) sudo rmmod ndiswrapper ;; odwilż | resume) sudo modprobe ndiswrapper ;; *) ;; esac Wyjście $?
chmod + x / etc / pm / sleep.d / ndiswrapper
6-gi Reboot
Następnie bezprzewodowy działa szybko i stabilnie.
PHP ściągawki
Tutaj zbierania użytecznych fragmentów kodu PHP
Wielowątkowość z pseudo-ekran
# / Usr/bin/php5 za! ($ I = 1; $ i <50; $ i + +) {echo "Rozpoczynam $ i \ n"; wątek exec ("screen-d-m / usr/bin/php5 /. . php ");} Serwer MySQL odszedł w prowadzonej od dawna PHP skryptów powłoki
# / Etc/php5/cli/php.ini = On mysql.allow_persistent mysql.max_persistent = -1 mysql.max_links = -1 mysql.connect_timeout = -1
XS Memory Stick W14 UMTS z Ubuntu
XS Memory Stick W14 zickte na Ubuntu około trochę. Czasami zdarza się, Network Manager rozpozna go jako modemu USB, ale wciąż nie mógł się połączyć. Po kilku wackiness nieudanej jestem na skrypcie Sakis3G spotkałem, który obiecuje produkują prawie wszystkie dyski można podłączyć. I rzeczywiście, stało Sakis3G prace natychmiast. Zalecane, prawdopodobnie dla innych dysków.
PŁYTA XS Memory Stick W14 P / N 3000.000056.00 www.4g-systems.com
# Lsusb Bus 002 Device 006: ID 1c9e: 9603
# / Var / log / syslog po podłączeniu 19 czerwca 20:41:04 jądro pole: [74186,796148] usb 2-2: nowy pełna prędkość urządzenia USB za pomocą uhci_hcd i adres 7 19 czerwca 20:41:04 jądro pole: [74186,946031] scsi11: usb-storage 2-2:1.0 19 czerwca 20:41:05 skrzynka usb_modeswitch: przełączanie 1c9e: F000 (modem USB: modem USB) 19 czerwca 20:41:06 jądro pole: [74189,293850] usb 2-2: USB disconnect, adres 7 19 czerwca 20:41:07 jądro pole: [74189,660069] usb 2-2: nowy pełna prędkość urządzenia USB za pomocą uhci_hcd i adres 8 19 czerwca 20:41:07 jądro pole: [74189,819348] opcja 2-2:1.0: modem GSM (1-port) Konwerter wykrywany 19 czerwca 20:41:07 jądro pole: [74189,819577] usb 2-2: GSM modem (1-port) Konwerter teraz dołączone do ttyUSB0 19 czerwca 20:41:07 jądro pole: [74189,819802] opcja 2-2:1.1: modem GSM (1-port) Konwerter wykrywany 19 czerwca 20:41:07 jądro pole: [74189,819950] usb 2-2: GSM modem (1-port) Konwerter teraz dołączone do ttyUSB1 19 czerwca 20:41:07 jądro pole: [74189,820220] opcja 2-2:1.2: modem GSM (1-port) Konwerter wykrywany 19 czerwca 20:41:07 jądro pole: [74189,820395] usb 2-2: GSM modem (1-port) Konwerter teraz dołączone do ttyUSB2 19 czerwca 20:41:07 jądro pole: [74189,821414] scsi12: usb-storage 2-2:1.3 19 czerwca 20:41:07 pudełko modem-manager [10 480]:(TtyUSB1) otwarcie portu szeregowego .. 19 czerwca 20:41:07 pudełko modem-manager [10 480]: (TtyUSB0) otwarcie portu szeregowego .. 19 czerwca 20:41:07 pudełko modem-manager [10 480]: (TtyUSB2) otwarcie portu szeregowego .. 19 czerwca 20:41:08 skrzynka usb_modeswitch: przełączane do 1c9e: 9603 (modem USB: Konfiguracja modemu) 19 czerwca 20:41:08 jądro pole: [74190,823474] scsi 12:0:0:0: Direct-Access 02:31 USBModem Disk PQ: 0 ANSI: 2 19 czerwca 20:41:08 jądro pole: [74190,825402] sd 12:0:0:0: Attached SCSI generic type SG3 0 19 czerwca 20:41:08 jądro pole: [74190,833436] sd 12:0:0:0: [sdc] Attached SCSI dysk wymienny
12 środków do Apache PHP MySQL Linux web server LAMP korzeni zabezpieczyć
Częstotliwości hakowania dramatycznie wzrosła w ostatnich miesiącach. Szczególnie wiele danych do odebrania przez hacków na serwerach internetowych. Nawet Sony PSN Hack wykorzystał niezałataną lukę w zabezpieczeniach serwera WWW Apache. Więc tutaj jestem podnoszenie środki, że serwer może posiadać trochę bezpieczniejsze przed atakami z zewnątrz. Oczywiście, to również nie zapewnia 100% ochronę, ale lepiej jest zrobić złych facetów w grę nieco trudniejsze. Niektóre z tych środków wymaga jedynie minimalnej instalację i konserwację. Inni potrzebują dużo czasu i wiedzy o PHP złapać. Należy zawsze zwracać uwagę na stosunek kosztów i korzyści w wyborze środków bezpieczeństwa. Nie ma sensu, aby chronić małe, prywatne witryny, takie jak Federal Reserve Bank. Jednak kilka specyficznych zmian w systemie ma już dużą oznacza większe bezpieczeństwo. I że należy leczyć nawet zanim będzie za późno ....
Wszystkie porady i Codesnips odnoszą się do bieżącego pola Debiana.
Pierwszy Firewall - zakazać Gdy wszystko
Większość dystrybucji Linuksa w ich instalacji domyślnych otwierać żadnych portów na zewnątrz, które nie są absolutnie konieczne. Ta sytuacja może się szybko zmienić, jednak nawet wtedy, gdy serwer
zabawy i próbuje rzeczy. Nagle, nawet media serwer nasłuchuje w Internecie lub bazy danych
akceptuje połączenia z Internetem. Dlatego też nie jest źle, aby zdyscyplinować się i położyć na bardzo restrykcyjną zaporą ogniową, że w zasadzie zakazuje Gdy wszystkie połączenia z zewnątrz i pozwala tylko (auto) wybranych związków. Na szczęście robi się to szybko z iptables. W ten sposób nie można już świadczyć usługi udostępnić światu, że nie mają tam działalności handlowej. Niestety, musisz zapłacić trochę komfortu - zapora musi być dostosowana za każdym razem, gdy chcesz zaoferować nowe usługi. Niemniej jednak, wysiłek jest niewielki, a korzyści duże.
# / Bin / bash # Usuń istniejące tabele iptables-F # Zezwalaj wszystkie połączenia przychodzące iptables-P INPUT DROP iptables-P FORWARD DROP # Zezwalaj na wszystkie wychodzące iptables-P OUTPUT ACCEPT # Zezwalaj SSH iptables-A INPUT-j ACCEPT-p tcp - dport 22 # Zezwalaj HTTP iptables-A INPUT-j ACCEPT-p tcp - dport 80 # Dodatkowe usługi (UDP) umożliwiają, na przykład serwer gry iptables-A INPUT-j ACCEPT-p tcp - dport 4534 # Zezwalaj na wszystko z localhost. (Aby umożliwić niezakłócony dostęp do samego serwera, jej usług, # Na przykład, PHP na lokalnej bazie danych iptables-A INPUT-s 127.0.0.1-j ACCEPT # Już nawiązanych połączeniach będą przyjmowane w każdym porcie # (Wymagane przez niektóre demony) iptables-A INPUT-m state - state ESTABLISHED, RELATED-j ACCEPT
Ten mały szkielet możemy po prostu nadal rozwijać i dodawać własne usługi. Podczas pracy na zaporze, należy zawsze zawierać postanowienia dotyczące wypadku, który blokuje sam. Specjalnie dla zdalnych serwerach, do których nie mają fizycznego dostępu, to jest bardzo denerwujące stracić przez nieudanej reguły zapory własny dostęp. W celu uniknięcia tego problemu z drogi, możesz zostawić pracę, aby rozpocząć na zaporze chwilowo tylko crona który resetuje firewall co kilka minut lub ponownym uruchomieniu serwera. Są zasady później testowany i kochane, cronjob zostanie wyłączony, a nowe zasady pozostają stale aktywne.
Aby dowiedzieć się, które usługi są tuż słuchania własnego serwera, możesz użyć netstat:
# Dla gniazd TCP: netstat-LPN | grep tcp # Podobnie dla UDP: netstat-LPN | grep udp
Aby sprawdzić, czy zapora naprawdę działa, możesz skanowania portów własnego serwera z innego komputera. Wszystko opracowane i powinno skutkować tylko porty a nawet otwartych:
# Dla protokołu TCP: nmap-P1-65 535 meinserver.de # Dla UDP: nmap-SU-P1-65 535 meinserver.de
Drugi SSH logowanie zakaz
Na swoim serwerze głównym masz pełny dostęp SSH. Jest to całkiem przydatne, jak można z dowolnego klienta SSH do czasów serwerów tylko do pracy na nim. Minusem jest to, że kurs może każdy, kto niestety jest w jakiś sposób przejęta własnych haseł. To o wiele bezpieczniejsze, aby umożliwić logowanie SSH tylko z ważnego pliku klucza. Dlatego klucz publiczny klienta do serwera i kopiowane identyfikatory logowania interaktywnych są wyłączone poprzez wprowadzenie hasła.
# Na kliencie utwórz klucz publiczny # Jeśli określone podczas generowania hasła, trzeba # Plik dziennika później, klucz i hasło. Inaczej # Potrzebne tylko klucz. ssh-keygen-t rsa # Skopiuj wygenerowany klucz do serwera ssh-copy-id-i ~ /. ssh / id_rsa.pub root@meinserver.de # Teraz dostosować sshd_config na serwerze plik / etc / ssh / . . PasswordAuthentication nie . . # Następnie uruchom ponownie RearBBpos / Etc / init.d / ssh restart
Nawet tu trzeba uważać, aby nie odciąć nawet jeśli coś nie działa.
Klucz publiczny na USB z odpowiednim hasłem w głowie sprawia, że znacznie trudniej złych facetów, aby uzyskać powłokę.
Trzeci SSH Bruteforcing zapobiec denyhosts
Jeśli rada nie jest praktyczne 2 i nie rezygnować z wygody hasło oparte loginy chcesz, możesz przynajmniej zapobiec zautomatyzowane stawki hasło napastników na serwerze. Wiele botów w internecie cały dzień chce zrobić nic więcej niż na serwery SSH i wypróbować w swoich różnych haseł. Hasłem rozsądnie bezpiecznym nie jest duży problem, ale nie ma lepszego uczucia, nawet jeśli to tylko możliwe. Poza tym chroni swoich użytkowników, czy są na serwerze i użytkownik konta. Tu nie można polegać na użytkownikach używać bezpiecznych haseł. denyhosts stale przeglądane i ssh logowanie na użytkownika blokuje na chwilę, którzy podali swoje hasło powtarzane. Adresów IP użytkowników chwilowo przejść do / etc / hosts.deny, tak że nie mają już dostęp do jest możliwe. To SSH Bruteforcing do zadania bardzo długie i nie bardzo obiecujące.
apt-get install denyhosts Denyhosts Miejsce działa zaraz po instalacji. To może być # W pliku / etc / denyhosts.conf dostrajać
4-ty Czarne listy służy do blokowania znanych adresów IP problem
W różne czarne listy internetowe są utrzymywane, co lista dużą liczbę serwerów karnych / posiekane / spamerski / oszustwa. Te IP listy mogą być wprowadzane bezpośrednio do zapory, tak że z tego znana jest nie do zaufanych komputerów nie może się połączyć w ogóle z własnym serwerze. Więc można zmniejszyć ilość spamu na własnym serwerze dramatycznie i jeden lub drugi dzieciak skrypt zablokować, ponieważ jego rosyjski pełnomocnik nagle przestaje działać. Jak zrobić, że byłem w innym artykule blogu opisane na przykładzie czarnej listy Infiltrated.net.
+5-sze Nie należy używać protokołu FTP do pracy na serwerze
FTP jest reliktem z lepszych czasach, gdy Internet był małą wioską nadal ufać. Wielu administratorów stron internetowych nadal korzystać z FTP do przesyłania plików na serwer lub do pracy na własnej stronie internetowej. Niestety, jest to bardzo niepewne, ponieważ FTP przesyła wszystkie dane zabezpieczone. Hasła i dane można odczytać bez żadnych problemów na każdym przeskoku między serwerami i klientami. Znacznie bezpieczniej jest iść z sshfs. Pozwala zamontować katalog przez SSH na zdalnym serwerze lokalnym systemie plików. Następnie można pracować na serwerze tak, jakby był na komputerze lokalnym. Wszystko dostęp do plików do plików na serwerze są całkowicie przejrzysty, dzięki czemu można otwierać w lokalnym programie graficznym do edycji obrazu bezpośrednio na serwerze, a następnie zapisać. Więcej komfortu i bezpieczeństwa bez większego wysiłku.
# Instalacja sshfs apt-get install sshfs # Stwórz punkt montowania na lokalnym systemie plików mkdir / media / myserver # Server do lokalnego montażu systemu plików sshfs www-data@mein-server.de :/ var / www / media / myserver # Teraz katalogiem jest / var / www na moim lokalnym serwerze w / media / Mój_serwer dostępnych
6-gi Zainstaluj aktualizacje
Super bezpieczny system nie pomoże, jeśli sam system jest wadliwy i znany Luka może zostać wykorzystana. W większości przypadków te luki zamknięty szybko, ale często zapomina admin regularne aktualizacje systemu do podejmowania. Czy należy włączyć automatyczne aktualizacje na serwerach Linux, czy nie jest kwestią sporną. Niektórzy nigdy nie robić, bo to oczywiście z dużo pecha może być, że aktualizacje sprawiają, że system nadaje się do użytku. Stało się tak do mnie w ciągu 10 lat pracy w systemach Debiana, ale nigdy i doceniam zalety aktualizacjach terminowe i prawidłowe, dużo wyższe niż ryzyko wynikające.
# Ta linia w / etc / crontab, aktualizacje zegara systemowego codziennie o 6 rano 0 6 *** korzeń apt-get update && apt-get-y uaktualnienie
Są szybkie i brzydka metoda pracował dla mnie do tej pory zawsze dobrze. Niedawno przeczytałem, że w repozytorium Debiana i pakiet uaktualnień nienadzorowanej istnieje, że rozwiązuje problem prawdopodobnie bardziej elegancki, ale nie były testowane.
Nawet z tych aktualizacji vollautomtischen system nie jest całkowicie wyłączony z hakiem. Jeśli aktualizacja jądra została dostarczona, musisz uruchomić system ponownie ręcznie, w przeciwnym razie zmiany nie będą aktywne.
Jeśli użyjemy innej kodu PHP na serwerze, taki jak open source CMS lub forum, to oczywiście jest to absolutnie konieczne i to w nowych wersjach na bieżąco. Ponieważ Debian nie aktualizuje swoje zmiany do tych zastosowań w zakresie przepisów dotyczących tej pracy ręcznej jest wymagane. Najlepszym sposobem, aby przeczytać list adresowych z odpowiednich produktów, aby być zawsze na bieżąco.
+7-gi PHP za pomocą open_basedir uwięzić
Wiele hacki na podstawie faktu, że luka w kodzie PHP jest używane do dostępu do plików w dostępu do systemu plików, które nie należą do serwisu, ale sam system Dlatego należy zamknąć PHP tak, że tylko do odczytu w specjalnie wyznaczonych katalogów i zapisu dozwolone. Do tego php.ini opcja konfiguracja open_basedir. PHP ma możliwość umieścić tylko zezwolił na dostęp do katalogów tam. Pliki, takie jak / etc / passwd są poza zasięgiem. Obsługa wielu witryn na jednym serwerze należy ustawić open_basedir w każdej wirtualnej konfiguracji hosta z każdej strony.
# Globalny php.ini przez: # / Etc/php5/apache2/php.ini open_basedir = / var / www / :/ tmp / # Dla każdej witryny w konfiguracji VirtualHost: php_value open_basedir / var / www / site / :/ tmp /
Ważne jest, aby rozważyć, czy wszystkie strony zostały dodane do skryptów zwykle muszą mieć dostęp, w przeciwnym wypadku może się okazać, że jesteś osobą niepełnosprawną i uzasadnione funkcje aplikacji PHP.
8-sza Tworzenie własnych stron internetowych dla użytkowników MySQL
Użyj własnego PHP-MySQL aplikacji, należy bezwzględnie stworzyć dla Apllikation własnym użytkownik MySQL iw żadnym wypadku nie używać wniosków MySQL użytkownika root. Należy również ograniczyć uprawnienia użytkownika tak daleko, że naprawdę tylko te działania są dozwolone, która wymaga skryptu PHP. CREATE TABLE i DROP TABLE są powszechne w iniekcji SQL i używany w większości aplikacji PHP nie potrzebuje. Znajduje się na niej wiele stron internetowych z wielu baz danych na serwerze, należy tworzyć własne bazy danych dla wszystkich użytkowników. Tak więc, po udanym ataku, atakujący ma dostęp tylko do jednej z baz danych, a nie bezpośrednio w ogóle. Jeśli nie chcesz spróbować z linii poleceń do zarządzania kontami użytkowników, MySQL użytkownika zarządzanie funkcjonuje również dość łatwo z phpMyAdmin w zakładce "praw".
9-ga Komunikaty o błędach PHP 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-cia 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[@]}
zrobić
echo "$1" | nc $address $port &
zrobić
}
while ( [ 1 ] )
zrobić
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)
wyjście
;;
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









