Linux

Thema Linux... Alle Artikel die nicht speziell ausgezeichnet sind, sollten bei allen Linux-Versionen so oder so ähnlich funktionieren. Den Apache-Server habe ich hier auch mit aufgenommen, weil dabei alles unter Debian getestet wurde.

Um einen Alias-Befehl dauerhaft zur Verfügung zu haben, muss das Alias in der BASHRC hinterlegt werden:

echo "alias foo=bar" >> ~/.bashrc

Dann die BASHRC "sourcen":

source ~/.bashrc

So steht der Befehl auch nach einem Neustart noch zur Verfügung.

Wer ein neues Smartphone mit Android kauft, kennt das: Es sind jede Menge unnötiger Apps installiert, die man eigentlich los haben möchte. Im besten Fall kann man diese noch deaktivieren, aber entfernen lassen sie sich oft nicht.

Hier zeige ich, wie man sie mit Hilfe der ADB (Android Debug Bridge) entfernen kann.

Achtung! Wenn Ihr Apps entfernt die euer System dringend benötigt kann es sein, dass das Smartphone nicht mehr startet. Dann hilft nur noch das Zurücksetzen des Geräts über den Recovery-Modus.

Zuerst müssen wir den Paketnamen der Apps heraus finden die wir entfernen möcthen. Das geht am einfachsten mit der kostenlosen App "Package Names Viewer" aus dem Play Store.

 

In diesem Beispiel wollen wir die App "Hangouts" entfernen. Der Paketname lautet also com.google.android.talk.

Als nächstes müssen wir in Android die Entwickleroptionen aktivieren. Dazu in die Einstellungen gehen und auf "Über das Telefon" drücken. Dann müssen wir 7x auf die "Build-Nummer" drücken, dann wird die entsprechende Option in den Konfigurationen sichtbar.

Nun die Konfiguration öffnen -> Entwickleroptionen und das "USB-Debugging" aktivieren.

Nun muss ADB installiert werden. Unter Linux geht das ganz einfach mit

sudo apt install adb

Nun das Smartphone mit dem USB-Kabel verbinden und am Rechner anschließen.

Mit adb devices kann man sich die Geräte anzeigen lassen, die angeschlossen sind.

Um eine ADB Shell auf das Smartphone zu öffnen, gibt man nun adb shell ein. Ist man verbunden, kann man nun die entsprechenden Pakete auflisten und entfernen.

Installierte Apps anzeigen:

pm list packages

bzw.

pm list packages -3 (System-Apps ausblenden)

Um ein Paket zu entfernen:

pm uninstall -k --user 0 com.google.android.talk

Der User 0 steht dabei für den ersten Benutzer auf dem System. Für gewöhnlich gibt es nur einen.

Um zu sehen ob es noch weitere Benutzer gibt:

1.) Herrunterladen der benötigten Pakete

Die Pfade müssen natürlich bei einer neueren Version entsprechend angepasst werden. Außerdem muss evtl. das Paket auf die installierte Betriebssystem-Version angepasst werden (AMD64, PowerPC...).

Ich würde die Pakete einfach nach /tmp herunterladen.

cd /tmp
wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/libapache-mod-security_2.5.9-1_i386.deb
wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/mod-security-common_2.5.9-1_all.deb

2.) Installation der Pakete

Auch hier gilt wieder, den Pfad (bzw. die Datei) entsprechend auf sein System abzuändern.

dpkg -i mod-security-common_2.5.9-1_all.deb libapache-mod-security_2.5.9-1_i386.deb

3.) modsecurity-Verzeichnis im Apache-Pfad anlegen

mkdir /etc/apache2/modsecurity2
chmod 600 -R /etc/apache2/modsecurity2

4.) Herunterladen und entpacken der Regeln

Diese Regeln kommen direkt von modsecurity.com, und verhindern schon die meisten üblichen Angriffe.

wget http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.1.tar.gz

nun können wir die heruntergeladenen Regeln entpacken und in das vorher angelegte Verzeichnis verschieben:

tar fvx modsecurity-core-rules_2.5-1.6.1.tar.gz
mv *.conf /etc/apache2/modsecurity2/

5.) Dem Apache den Ordner mit den Regeln bekannt machen

vi /etc/apache2/conf.d/mod-security2.conf

...und folgendes einfügen:

<IfModule mod_security2.c>
Include /etc/apache2/modsecurity2/*.conf
</IfModule>

6.) Symlink zum Apache-Logfile erstellen

Damit wird das Apache Log-Verzeichnis an Debian angepasst. Somit werden die Logfiles dann unter /var/log/apache2/modsec_<Regel>.log abgelegt.

ln -s /var/log/apache2 /etc/apache2/logs

7.) Testen ob das Modul geladen wurde

Wenn ihr euch auf eurem Webserver eine "phpinfo.php"-Datei anlegt könnt ihr sehen, ob das mod_security Modul korrekt geladen wurde. Und zwar unter dem Punkt "Loaded Modules".

Die phpinfo.php (kann natürlich auch anders heißen) muss folgenden Inhalt haben:

‹?php phpinfo(); ?›

8.) Erstmal nur mitloggen, später blockieren

Zuerst soll mal nichts blockiert, sondern nur geloggt werden:

vi /etc/apache2/modsecurity2/modsecurity_crs_10_config.conf

Diese Zeile folgendermaßen anpassen:

SecRuleEngine DetectionOnly

So werden alle potenziellen Gefahren und Warnungen zwar geloggt, aber noch nichts geblockt. Man sollte also das Modul erstmal eine Weile so laufen lassen, damit nicht zuviel geblockt wird, was evtl. garnicht erwünscht ist.

Jetzt muss natürlich der Apache neu geladen werden:

/etc/init.d/apache2 reload

In der Datei /var/log/apache2/modsec_debug.log kann man nun nachsehen, was alles geblockt werden würde. Hier ein Beispiel:

[31/Jan/2010:12:15:23 +0100] [www.itwelt.org/sid#3f1b6d0][rid#1125ac1][/administrator/index.php][1] Access denied with code 501 (phase 2). Pattern match "(?:\b(?:\.(?:ht(?:access|passwd|group)|www_?acl)|global\.asa|httpd\.conf|boot\.ini)\b|\/etc\/)" at ARGS:text. [file "/etc/apache2/modsecurity2/modsecurity_crs_40_generic_attacks.conf"] [line "114"] [id "950005"] [msg "Remote File Access Attempt"] [data "/etc/"] [severity "CRITICAL"] [tag "WEB_ATTACK/FILE_INJECTION"]

Jede dieser Regeln hat eine ID, in diesem Fall ist das z.B. die "950005". So ist es möglich, später Ausnahmen für mod_security festzulegen.

9.) Ausnahmen hinzufügen

Mit der oben ausgelesenen ID ist es nun möglich, Ausnahmen für bestimmte Seiten festzulegen. Am einfachsten ist es, ein neues Config-File mit einer Whitelist anzulegen:

vi /etc/apache2/mod_security/modsecurity_crs_99_whitelist.conf

<LocationMatch /administrator/index.php>
SecRuleRemoveById 950005
SecRuleRemoveById 950006
SecRuleRemoveById 950907
</LocationMatch>

Man kann die Ausnahmen alternativ auch in den <VirtualHost...>-Bereich der entsprechenden Apache Konfigurations-Datei eintragen. (/etc/apache2/sites-available/...). Die Syntax ist dann die gleiche wie im obigen Beispiel.

10.) mod_security "scharf" schalten

Um unser Modul nun einzuschalten, und auch potenzielle Angriffe zu blockieren, muss die Konfiguration entsprechend angepasst werden:

vi /etc/apache2/modsecurity2/modsecurity_crs_10_config.conf

SecRuleEngine On

Getestet unter Debian 8 'Jessie'

Die Module für den Apache 2 können ganz einfach mit Hilfe von a2enmod aktiviert werden.

Alle verfügbaren Module anzeigen:

a2enmod

Das entsprechende Modul aktivieren:

a2enmod MODULNAME

Dann die Apache-Konfiguration neu einlesen:

/etc/init.d/apache2 reload

So kann das Modul bei Bedarf wieder deaktiviert werden:

a2dismod MODULNAME

Getestet mit Debian "Wheezy" und Apache2

Wenn man einen Schlüssel mit Passwort erstellt hat, verlangt Apache2 bei jedem Neustart den Passphrase. So kann man die manuelle Eingabe des Passphrase abschalten:

cd /etc/apache2/ssl/
cp server.key server.pass.key
openssl rsa -in server.pass.key -out server.key