Montag, 6. Juli 2009
Wer sich wundert, warum sein cronjob nicht funktioniert, der ein date-konstrukt beinhaltet, (z.b.: date +%m-%d-%Y), sollte die prozentzeichen escapen:
date +\%m-\%d-\%Y
Das prozentzeichen bedeutet für die syntax der crontab ein newline. Fragt mich bitte nicht, wieso.
Leider hab ich den link dazu verbummelt.
man 5 crontab | less -p Percent zeigt es aber auch auf.
Update:
Hier der verbummelte link:
crontab-problem-background-cron-job-not-getting-executed-when-using-percentage
Freitag, 26. Juni 2009
Ständig sehen sich Webanwendungen Angriffen ausgesetzt, die versuchen, Schwächen in der Programmierung auszunutzen. Das PHP-basierende, quelloffene PHPIDS erkennt Einbruchsversuche und schlägt bei Gefahr Alarm. Diese Praxis-Anleitung von heise Security gibt Tipps zur Installation.
Einbruchmelder
Könnte man mal ausprobieren, instead of mod_security. Wenn man da nicht aufpasst, gibt es nämlich zu viele "false positives" aus. Wenn ich z.b. diesen beitrag abschicke, muss ich mod_security ausschalten, oder die entsprechende regel komplett entfernen, oder modifizieren.
Hier möchte ich einige interessante PDFs, die ich in den jahren gesammelt habe, in einem beitrag bündeln.
Hauptsächlich geht es um netzwerk (tcp/ip, iptables), security und linux allgemein.
Vielleicht ist für den ein oder anderen was nützliches dabei.
Blind SQL Injection
Felix - IP Routing
Linux-101-Hacks
apache2_absichern
debian_reference.de
dev_irc_bot
domain_name_service_haucke
hackerland-1
iptables
iptables_und_stealth_scans
modsecurity2-apache-reference
nmap-tutorial
portknocking_an_introduction
tcpip
Mittwoch, 24. Juni 2009
Ich hatte ja vor, den server komplett auf lighttpd und sqlite umzustellen.
Da das nicht so geklappt hatte, wie ich es mir vorstellte (kein mod_security,...), hab ich dann kurzerhand den server mit debian lenny neu aufgesetzt.
Backups eingespielt, alles gut. Dachte ich. Bis sich herausstellte, dass in der datenbank für den administratorzugang der blogsoftware ein passwort gespeichert war, welches ich eigentlich seit jahrhunderten nicht mehr nutze.
Tja. Da war der server fast eine woche off. nur wegen eines vergessenen passworts. *g*
Mittwoch, 8. April 2009
Seit einem udate auf lenny bekam ich beim update der datenbank folgende meldung:
Interactive Update failed.
### Error: Report file could not be parsed. Report may be corrupt.
### Exiting..
Die lösung fand ich hier:
http://www.huschi.net
Und funktioniert.
Danke, huschi. Dafür hab ich auch gleich dein blog abonniert. ;)
Mittwoch, 1. April 2009
strcat beschreibt die anwendung einer backuplösung mit rdiff-backup(1).
Beschreibung von packages.debian.org:
Rdiff-backup sichert ein Verzeichnis in ein anderes, beispielsweise über ein Netzwerk. Das Zielverzeichnis enthält anschließend eine Kopie des Quellverzeichnisses, jedoch in einem speziellen Unterverzeichnis im Zielverzeichnis zusätzlich noch "reverse diffs", mit dessen Hilfe Sie Dateien wiederherstellen können, die vor einiger Zeit bereits verloren wurden. Die Idee dahinter ist, die besten Eigenschaften eines Mirrors mit denen einer inkrementellen Sicherung zu vereinen. Rdiff-backup sichert zudem noch Unterverzeichnisse, Hard-Links, dev-Dateien, Zugriffsrechte, uid/gid-Zugehörigkeit, Änderungszeiten, erweiterte Attribute, ACLs und Ressource-Forks.
Montag, 23. März 2009
Kurzanleitung zum bauen eines kernels auf "the debian way":
- Das paket kernel-package muss instaliert sein
- Das lesen der manpage zu make-kpkg ist pflicht!
Erstmal wie gewohnt die kernel-quellen unter /usr/src entpacken, und ins quellverzeichnis wechseln.
Dann mit
$ make menuconfig
den kernel konfigurieren, oder eine alte config nach .config kopieren, und
$ make oldconfig ausführen.
Danach ist es zwingend notwengig,
$ make-kpkg clean
auszuführen. (zumindest laut manpage)
Dann kann man ganz einfach mit
$ make-kpkg kernel_image
seinen kernel bauen.
Das *.deb liegt dann ein verzeichnis drüber, und kann mit $ dpkg -i installiert werden.
Nun bietet make-kpkg noch einige gimmicks an.
Z.B:
--arch-in-name
oder
--append-to-version '-my_kernel'
Die einzelheiten verrät make-kpkg(1).
Happy hacking!
Ich hab mal aus gag einen ftp-server gestartet. Da sind einige configs, textdokumente und PDFs zum thema security drauf.
Wer mal einen blick drauf werfen möchte:
ftp://p17-linuxzone.de/
Samstag, 14. März 2009
Abbreviations (abkürzungen) im Vim ist so ziemlich das beste feature.
Man gibt einfach in der ~/.vimrc z.b.
ab link < a href="" target="_blank"> < /a >
ein, und schon erscheint bei der eingabe von "link" unser nettes kleines template von a href.
Praktisch, oder?
Man muss nur aufpassen, dass man als schlüsselwort (im obigen beispiel) nicht "href" nimmt, sonst erscheint der code doppelt.
Und da ich ein netter kerl bin, hier meine abs:
" abbreviations
ab ph #!/usr/bin/perl -w < CR > use strict;
ab shh #/bin/sh
ab pfor for () {< CR > }
ab pforeach foreach () {< CR > }
ab pwhile while () {< CR > }
ab pif if () {< CR > }
ab pargs (@ARGV == 1) \|\| &usage;
ab pusage sub usage() {< CR > print "Usage: $0 options\n";exit 0;}
ab link < a href="" target="_blank">
ab bild < img src="">
ab zentriert < div align="center"> < CR > < /div >
ab popenfile open (FILE, "<$file") or die "Cannot open $file: $!\n";
ab pchkroot ($> == 0) \|\| die "Permission denied!\n";
ab shchkroot [ $UID = 0 ] \|\| { echo "Permission denied!"; exit 0; }
ab unterstrich < span style="text-decoration:underline" > Text < /span >
ab fett < span style="font-weight:bold" > Text < /span >
ab liste < ul > < CR > < li > < CR > < /ul >
ab head1 < h1 align="center"> < /h1 >
ab head2 < h2 align="center"> < /h2 >
ab head3 < h3 align="center"> < /h3 >
ab hintfarb < body bgcolor="" >
Es gibt da noch erkärungsbedarf:
- Die spaces zw den < > musste ich hier setzen, sonst wären sie als HTML interpretert worden.
- Die < CR > bedeuten einen zeilenumbruch. Praktisch für funktionen. Es gibt bestimmt noch mehr solcher spezialzeichen, die sind aber garantiert in der Vim dokomentation aufgeführt.
- Pipes und logische oder "||" müssen escaped werden.
- die abs kann man sich im vim mit :ab anzeigen lassse.
So, genug für heute. Ich mach feierabend.
(falls jemandem fehler auffallen, bitte melden)
Freitag, 13. März 2009
Die Applikations-Firewall ModSecurity für den Apache-Webserver lässt sich unter Umständen durch manipulierte HTTP-Anfragen lahmlegen. In der neuen Version 2.5.9, die nun zum Download bereit steht, haben die Entwickler ein Problem behoben, das den Filter beim Verarbeiten von Multipart-HTTP-Paketen zum Absturz bringen kann.
vollständiger beitrag
Quelle: http://www.heise.de
Dann weiss ich ja, was ich morgen früh als erstes tue.
Update:
Das hat mir ja keine ruhe gelasssen, und hab es heute nacht noch installiert. Natürlich ist jetzt noch fine-tuning angesagt.
Falls alsoprobleme auftreten, bitte eine kuzre mail an mich:
p.haack@gmx.net
Donnerstag, 12. März 2009
Hab ich mir jetzt gekäuft.
TP-LINK/TL-R860
Und ich muss sagen, ich bin sehr zufrieden damit. Zwar kann er kein telnet (obwohl man den administrationsport angeben kann, hab ich aber noch nicht ausprobiert), aber mit dem web-ui bin ich ganz zufrieden. Man kann sogar default-policies in der firewall einstellen. Also default - deny oder default - allow. und dannn die entsprechenden regeln dazu.
Domainfiltering und MAC filtering kann er übrigens auch. Nich sonne olle gurke wie der edimax...
Und gleich 8 LAN ports. Ich überleg schon, wo ich die ganzen neuen rechner alle hinstelle *g*.
Aber eins weiss ich:
an der firmware werd ich bestimmt nicht mehr rumfuckeln!
Sonntag, 8. März 2009
Da sich bei mir schon einige aliases angehäuft haben, dachte ich so bei mir, das wäre ein blogeintrag wert, ist es nicht?
So, here they are:
wechselt ins verzeichnis, und macht direkt danach ein ls -la
# cd und list
cdd() { cd $1 && ls -lahF --color; }
alias cd='cdd'
(ich glaub aber, da gibts auch ne bash-option für)
Zeigt mir meine WAN-IP an:
# myip
alias myip='curl -s www.wieistmeineip.de | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"'
Erweitertes ps:
alias ps='ps -A uf'
Erweitertes netstat:
alias net='netstat -atulpe'
Öffnet den einzigartien GUI texteditor leafpad. Eine datei kann natürlich als argument mitgegeben werden.
# open file with leafpad
alias e='/usr/bin/leafpad'
Wechselt ins vorherige verzeichis zurück:
# cd -
alias b='cd -'
Hebt die suchgebgriffe von grep(1) hervor (in rot). Die option -I lässt binärdateien bei der suche aus.
# grep colorized
alias grep='grep -I --color=auto'
Liest die ~/.Xdefaults nach einer veränderung neu ein
# load ~/.Xdefaults
alias xdef_load='xrdb -merge ~/.Xdefaults
Startet meinen tsocks-proxy
# tsocks
alias tproxy='ssh -ND 8118 user@server&; export LD_PRELOAD="/usr/lib/libtsocks.so"
Löscht den browsercache von firefox und kazehakase
# clear browsercache
rm_cache() {
rm -f $HOME/.mozilla/firefox/ujr5eab9.default/Cache/*
rm -f $HOME/.kazehakase/mozilla/kazehakase/Cache/*
}
alias rmcache='rm_cache'
Und jetzt die, von der systemadministratorin (Ruth):
aptitude-gedöns
## apt-stuff
alias inst='aptitude install'
## purge or not
remove (){
echo "Konfigurationsdateien loeschen? j/n"
read var
if [ $var = "j" ]; then
aptitude purge "$1"
elif [ $var = "n" ]; then
aptitude remove "$1"
else echo "Falsche Eingabe, Einstein!"; remove
fi
}
alias uinst='remove'
alias srch='aptitude search'
alias reinst='aptitude reinstall'
alias upd='aptitude update'
alias upgrd='aptitude safe-upgrade'
alias show='aptitude show'
alias dist-upgrd='aptitude dist-upgrade'
alias clean='aptitude clean'
alias policy='apt-cache policy'
Let`s start the perl-shell
alias perlshell='perl -MCPAN -e shell'
Einen daemon habe ich üblicher weise immer wie folgt gekillt:
$ netstat -atulpe
PID rauskopieren
$ kill -15 PID reinpasten
(wie stressig)
# kill daemon
kill_daemon() {
echo "Daemon?"
read dm
kill -15 $(netstat -atulpe | grep $dm | cut -d '/' -f1 | awk '{print $9}')
}
alias kd='kill_daemon'
(viel angenehmer und nervenschonender.
So, das war`s erstmal. Bestimmt kommen noch einige dazu, also ab und zu ma reinschaue lohnt sich.
Update:
Meine last_fm aliases:
# lastfm
alias fm_goa='shell-fm lastfm://globaltags/goa'
alias fm_dancehall='shell-fm lastfm://globaltags/dancehall'
alias fm_ambient='shell-fm lastfm://globaltags/ambient'
alias fm_reggae='shell-fm lastfm://globaltags/roots'
alias fm_playlist='shell-fm lastfm://user/user/personal'
alias fm_loved='shell-fm lastfm://user/user/personal'
Update 2:
Um sensible dateien rekursiv mit AES zu verschlüsseln, benutze ich folgenden alias (vorraussetzung: ccrypt(1) ist installiert):
alias fileen='for a in /path; do ccencrypt -vr -K super_geheimes_passswort $a; done'
Um die dateien wieder zu entschlüsseln, einfach ccencrypt durch ccdecrypt ersetzen. Den alias zum entschlüsseln kann man dann filede oder so nennen.
Einziger haken:
Das passwort steht in der config der shell. Aber die hat der sicherheitsbewusste admin ja eh höchstens auf 640 chmod`et.
Man kann das PW aber auch in eine datei schreiben, und die option -k (kleines k) verwenden.
Donnerstag, 5. März 2009
Jetzt wollte ich eine neue firmware auf meinem router installieren, und nu get nix mehr!
Amilda hat hervorragend funktioniert, aber die busybox war mir doch etwas zu mikrig, und GNU tools hab ich dafür nicht gefunden.
Dann hab ich es in meinem hacker-wahn doch mal mit Openwrt probiert. Also die richtige *bin runtergeladen, firmwarupgrade,... das alte spiel.
Nach dem reboot ging NIX mehr!
Der router blinkt auch nach mehrmaligem reset und netzstecker ein- austecken nicht. Von telnet garnicht erst zu reden.
Gut, hab ich eben wieder pppoe konfiguriert, und bin wieder über modem unerwegs.
Heute trinke ich mir 1-2 bier, und morgen sehe ich mir die Openwrt-Troubleshootingseite an.
Für heute hab ich erstmal die schnauze voll!
uptade
Ich habe ein tutorial gefunden, wie man das ganze wieder fixen kann:
http://forum.amilda.org/viewtopic.php?id=37
Ja sicher...
Ich werd das ding aufschrauben, dran rumlöten und irgendwelche stecker verbasteln. Ne, danke!
Montag kommt mein neuer router und dann ist erstmal gut mit router-hacking. :D
Aber wie sagt man:
Nur aus fehlern lernt man.
Tja, wieder was dazu gerlernt. ;)
Mittwoch, 4. März 2009
Ich bin "stolzer" besiter o.g. routers. Ich wollte immer schonmal eine andere firmware draufmachen. Nicht, weil sie nicht lief, oder mir nicht gefiel, ich wollte es einfach. Primär ging es mir dabei um telnet-zugang, denn mit web-UIs komme ich einfach nicht klar. ("[x] enable syn-flood protection" was heisst das jetzt genau?)
Naja, erst hatte ich es mit OpenWRT (kamikaze) versucht, das war mir aber zu grob. Nicht, dass ich mich mit linux nicht auskennen würde, aber ich habs nicht begriffen, wie ich daraus ein image machen soll. Vielleicht habe ich auch nur die doku nicht richtig gelesen/vestanden.
Gut, dann mit AMILDA. Einfach die amilda-6104k-0.4.23.bin[1] runterladen (nicht die 0.4.4, die ist verbugt) -natürlich nicht ohne vorher die originalfirmware gesichert zu haben- im router-setup auf "firmwareupgrade", und das wars auch schon.
Die default IP ist 192.168.1.1 und das netz dementsprechend 192.168.1.0. Also die /etc/hosts und /etc/network/interfaces anpassen.
Die web-UI ist auch was für die tonne, aber mir gings ja nur um den telnet-zugang.
Wichtig:
im telnet erstmal die iptables-regeln anpassen. Das ding lässt nämlich verbindungen von jedem rechner zu. (woher sollen die auch meine LAN-IP wissen? ;) )
Also die entsrechenden regeln gelöscht, und
$ iptables -A INPUT -p tcp -s 192.168.1.101 --dport 80 -j ACCEPT gesetzt. Das gleiche mit port 23. Der rest wird eh per default policy gedroppt.
Unnötig zu sagen, dass das default adminpassort auch zu ändern ist.
Fein, jetzt hab ich wieder was zu spielen. :D
update:
Die iptables regeln kann man erstmal so lassen. Nach einem test von einem anderen rechner aus, wird der status "gefiltert" ausgegeben. Man kommt also so ohne weiteres von aussen nicht drauf. Nach mehrmaligem scan wird die verbindung sogar gedroppt.
[1] http://downloads.amilda.org/AMiLDA/bin/
Freitag, 27. Februar 2009
Wenn man seine distribution inklusive release wissen möchte, gibt es meistens eine datei unter /etc, welche irgendwie mit *release oder *version endet. Wie das nunmal so ist, kocht jede distri ihr eigenes süppchen, und den namen der datei kann man dann raten. (da krieg ich schon wieder schlechte laune).
Wie dem auch sei, mit kreativen shell-konstruktionen ala $ cat /etc/*release bekommt man zwar einen nervenzusammenbruch, aber in den seltensten fällen das gewünschte Ergebnis.
Jetz hab ich ein geschenk des himmels gefunden:
lsb-release einfach über dan paketmanager installiert.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0 (lenny)
Release: 5.0
Codename: lenny
Ist das cool, oder ist das cool?
lsb_release(1) zeigt -wie zu erwarten- die zulässigen optionen an.
|
Kommentare/Trackbacks