Schlagwort-Archiv: apache2

Debian 9 Proxy Squid3 mit ClamAV (squidclamav)

Da es auf unserem Hof noch kein DSL gibt und ich 2 Jahre vergeblich bei der Telekom auf einen Telefonschluss warten musste, hatte ich nach einer anderen Lösung gesucht. Da blieb nur noch SAT oder LTE. Wir haben jetzt LTE genommen. Leider war der Empfang nicht ohne weiteres möglich, es musste eine Doppelaußenantenne her. Die LTE Antenne muss genau ausgerichtet werden und zum nächsten LTE- Masten zeigen. Das bekommt man beim Provider raus. Aber das ging auch nicht lange gut, weil der Traffic nie gereicht hat. Wir haben zwar 32 GB Traffic, aber das klingt mehr wie es ist.
Das Problem ist aber, dass sämtliche Geräte immer Updates machen wollen. Telefon, Smartphone, Laptop, … Heute kann man für fast alles Firmwares aktualisieren. Die Updates sind aber oft schon ein paar GB groß, dann geht man vieleicht noch auf facebook, da starten dann erstmal schön Videos und ein Haufen Werbung und dann muss facebook und co noch schön Daten sammeln ; ). Firefox updates, … Telefon läuft ja auch noch über LTE, da ja der Anschluss noch nicht dran ist.
Damit jetzt Traffic reduziert wird, bietet sich ein Proxyserver an.

Squid3 und clameav installieren:

apt-get update && apt-get upgrade
apt-get install squid3 c-icap clamav clamdscan clamav-daemon libicapapi-dev gcc make curl libcurl4-gnutls-dev libapache2-mod-perl2

Damit clamav mit squid3 funktioniert muss noch squidclamav installiert werden:

# wget http://downloads.sourceforge.net/project/squidclamav/squidclamav/6.16/squidclamav-6.16.tar.gz
# tar xvfz squidclamav-6.16.tar.gz
# cd squidclamav-6.16
# ./configure --with-c-icap && make && make install
# cp -rf cgi-bin /usr/lib/
# chmod -r 775 /usr/lib/cgi-bin/
# a2enmod cgi
# service apache2 restart
# cd ..
# ldconfig
# ln -s /etc/c-icap/squidclamav.conf /etc/squidclamav.conf
# vim /etc/default/c-icap

Hier START=no auf START=yes ändern.

# vim /etc/c-icap/c-icap.conf
Bei ServerAdmin eure e-mail angeben.
Der Name vom Server wird bei ServerName angeben. z.B.:
ServerName debian.local
und ca. in line 570 muss man noch diese Zeile hinzufügen.

Service squidclamav squidclamav.so
Nun Config speichern und verlassen.

c-icap neustarten:
systemctl restart c-icap

Falls es auch Probleme mit ClamAV gibt:
# freshclam
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Löscht einfach die Logdatei. Das ist kein Problem, da die log ja wieder automatisch erstellt wird:
# rm /var/log/clamav/freshclam.log

Ob clamav lokal funktioniert, kann man so testen:
# cd /tmp
# wget http://www.eicar.org/download/eicar.com
# clamscan --infected --remove --recursive /tmp

Jetzt sollte dieser Test-virus gefunden und entfernt worden sein:
/tmp/eicar.com: Eicar-Test-Signature FOUND
/tmp/eicar.com: Removed.

———– SCAN SUMMARY ———–
Known viruses: 6297800
Engine version: 0.99.2
Scanned directories: 10
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 10.403 sec (0 m 10 s)

Wichtig!
Bei Debian 8 war squid im Verzeichniss /etc/squid3/ , heute wo ich Debian 9 installiert habe liegt squid unter etc/squid/
Darum bitte die pfade überüfen!

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Konfiguration bearbeiten:
vim /etc/squid/squid.conf oder für nano freunde "nano /etc/squid/squid.conf"

visible_hostname debian.local
error_directory /usr/share/squid/errors/de/
forwarded_for off
via off
#cache
cache_mem 512 MB
maximum_object_size 20480 KB
maximum_object_size_in_memory 512 MB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid3 2000 16 256
#timeouts
forward_timeout 30 seconds
connect_timeout 30 seconds
read_timeout 30 seconds
request_timeout 30 seconds
persistent_request_timeout 1 minute
client_lifetime 20 hours
#DNS
dns_nameservers 192.168.1.1 8.8.8.8 8.8.4.4
url_rewrite_children 20
#defaults
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
acl bad_url dstdomain "/etc/squid/blacklist"
#acl no_updates dstdomain "/etc/squid/msupdates"
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
deny_info ERR_ACCESS_DENIED bad_url
http_access deny bad_url
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
http_access allow localnet
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320


squidclamav.conf bearbeiten:

nano /etc/squidclamav.conf

maxsize 5000000
redirect http://192.168.x.x/cgi-bin/clwarn.cgi
clamd_local /var/run/clamav/clamd.ctl
clamd_ip 192.168.x.x,127.0.0.1
clamd_port 3310
timeout 1
logredir 0
dnslookup 1
safebrowsing 0
debug 0
stat 0

Server squid3 neustarten:
service squid restart

Unter Debian 8:
service squid3 restart

nun Dienste neustarten:

service c-icap restart
service apache2 restart
service clamav-daemon restart
service squid restart

Cache löschen:
service squid3 stop
rm -rf /var/spool/squid/*
service squid3 start


Client mit Proxy verbinden, Firefox:

Proxy im Firefox hinterlegen

 

Windows Proxyeinstellungen hinterlegen:

Proxy Windows 10

Jetzt Testen:
Geht mit Firefox nun auf http://www.eicar.org/download/eicar.com

Ihr solltet nun das im Browser sehen:
SquidClamAv Virus detected

Wenn CGI nicht geht, muss man noch folgendes tun. (War bei Debian 9 so)

tail -f /var/log/apache2/error.log

Jetzt im Browser folgende URL aufrufen:
http://www.eicar.org/download/eicar_com.zip

Jetzt sollte sich die URL ändern in:
http://192.168.x.xx/cgi-bin/clwarn.cgi?url=http://www.eicar.org/download/eicar_com.zip&source=192.168.x.xx&user=-&virus=stream:%20Eicar-Test-Signature%20FOUND

Passiert das nicht, müsst ihr nochmal die Anleitung durchgehen.
Wenn die URL sich ändert, fehlt nicht mehr viel. Es funktioniert aber schon mal, das CGI soll nur eine Fehlerseite ausgeben und da gab es auch bei mir unter Debian 9 Probleme. Unter Debian 8 hatte ich keine Probleme.

Kommt beim Befehl a2enmod cgi:
„Can’t activate CGI module with „a2enmod cgi“

Hilft folgendes:
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod cgi
sudo service apache2 restart

Steht in der log Can’t locate CGI.pm in @INC (you may need to install the CGI module), muss man CGi wie folgt installieren:

#perl -e shell -MCPAN
install CGI
exit

gehts immer noch nicht ?
Dann sollte man das Verzeichnis /usr/lib/cgi-bin/ überprüfen, das muss als root ausführbar sein und es sollten folgende Datein enthalten sein:
-rwxr-xr-x 1 root root 1827 Jun 21 13:59 clwarn.cgi
-rwxr-xr-x 1 root root 1827 Jun 21 13:21 clwarn.cgi.de_DE
-rwxr-xr-x 1 root root 1777 Jun 21 13:21 clwarn.cgi.en_EN
-rwxr-xr-x 1 root root 1898 Jun 21 13:21 clwarn.cgi.fr_FR
-rwxr-xr-x 1 root root 1995 Jun 21 13:21 clwarn.cgi.pt_BR
-rwxr-xr-x 1 root root 2099 Jun 21 13:21 clwarn.cgi.ru_RU

Und zum Abschluss noch ein wichtiges Detail. SSL ist end to end Verschlüsselung, also vom Browser zum Server. Also der Lokale Rechner mit der verschlüsselten Webseite. Was ich damit sagen will, squidclamav kann nur HTTP scannen. Bei HTTPS klappt das nicht! Auch im non transparent modus wird direkt vom Browser verschlüsselt.
Also sollte lokal am Rechner trotzdem ein Virenscanner laufen!

Raspberry Pi Schreibzugriffe reduzieren

Bei einem 24/7 Betrieb dürfte eine Speicherkarte etwa 1/2 Jahr halten.
Hängt ganz davon ab, wie oft und wie viel auf die Karte geschrieben wird.
Schreibzugriffe für logs werde ich daher auf eine Ramdisk verlagern.

sudo vim /etc/fstab

Fügt nun in der „fstab“ diese Zeilen ein und startet dann neu:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/lock tmpfs defaults,noatime,mode=0755 0 0

Manche Programme könnten jetzt nicht mehr starten. Ich habe z.B. Apache2 mit folgendem Fehler:

Starting web server: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(2)No such file or directory: apache2: could not open error log file /var/log/apache2/error.log.
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
failed!

Alles was im Ram ist, verschwindet beim Neustart. Es gibt also unter /var/log keinen apache2 Ordner mehr.
Ich habe die error.log abgeschalten. Einem Anfänger kann ich das aber nicht empfehlen!
sudo vim /etc/apache2/apache2.conf

Sucht nach:

ErrorLog ${APACHE_LOG_DIR}/error.log

ändert es so ab:

#ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog /dev/null

Das muss man auch hier machen:

sudo vim /etc/apache2/sites-available/default-ssl
sudo vim /etc/apache2/sites-available/default

Hier muss man aber auch zusätzlich diese Zeile auskommentieren (# am Anfang davor setzen):
CustomLog ${APACHE_LOG_DIR}/access.log combined

Und die letzte Datei : )
vim /etc/apache2/conf.d/other-vhosts-access-log:

#CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

Mit sudo service apache2 start testen ob apache2 ohne Fehler startet.

Nachtrag 17.07.2016:
SD ist wieder kaputt, trotz Schreibzugriffreduzierung. Hat zwar länger gehalten, aber die beste Lösung war bis jetzt die SD nur als Boot-Medium zu nutzen und dann nur auf USB-Festplatte zu arbeiten.

PHP unter Mac OS X Lion aktivieren

Der mit Mac OS X mitgelieferte Apache Webserver wird in den Systemeinstellungen unter „Freigaben“, dann „Webfreigabe“ gestartet.
Für Webprogrammierer macht aber Apache nur mit der Unterstützung für PHP5 und MySQL Sinn.
PHP ist beim Mac OS X Lion schon installiert und kann in wenigen Minuten zusätzlich aktiviert werden.
Dazu muss man im Terminal die httpd.conf bearbeiten.

  vim /etc/apache2/httpd.conf

in der Datei sucht man nun die Zeile:

# LoadModule php5_module libexec/apache2/libphp5.so

Hier die Raute entfernen und abspeichern!

Apache php5 unter Mac OS X Lion

Vorraussetzung ist hierfür, dass ihr wisst wie man den VI benutzt. Die # steht für Kommentarzeilen und sollen vom Apache ignoriert werden. Aus diesem Grund wird das PHP-Modul nicht mitgestartet. Das Update Mac OS X 10.7.3 enthält eine veraltete PHP-Version 5.3.8, das eine schwerwiegende Sicherheitslücke aufweist. Ihr solltet dies also nicht unbedingt für die Öffentlichkeit zugänglich machen. Apache kann jetzt wie ganz oben beschrieben getartet werden (über Webfreigabe) oder im Terminal mit:

apachectl restart

MySQL Server kann hingegen noch einfacher installiert werden. Die 64Bit Version für Mac OS X Lion wird auf http://www.mysql.de/downloads/mysql/ zum Download angeboten. Nehmt am besten die „.dmg“ Version, diese enthält auch eine MySQL.PrefPane. Der MySQL-Server kann dann auch über die Systemeinstellungen gestartet werden.

Beim Download auf „» No thanks, just take me to the downloads!“ klicken, wenn Ihr euch nicht anmelden wollt : ).
Installiert nun die 3 Dateien. MySQLStartupItem.pkg kann weg gelassen werden, wenn dies nicht automatisch beim Booten starten soll.

Startet in der Systemeinstelung den MySQL Server:

MySQL Server Status

Systemeinstellung

Gebt im Terminal nach der Installation ein:

/usr/local/mysql/bin/mysql -v

Ihr solltet nun dies sehen:

Terminal MySQL Server

MySQL-Server version

Hier kann man auch gleich die installierte Version von MySQL sehen. Da nun alles geht, kann man q mysql verlassen.
Jetzt brauchen wir einen „Root“ für MySQL-Server, den bekommen wir hiermit:

/usr/local/mysql/bin/mysqladmin -u root password ‚Dein Passwort‘

„Dein Passwort“ bitte ersetzen, durch was auch immer ; ). Wir müssen nun Apache neustarten:

apachectl graceful

Jetzt legen wir eine Testdatei an:

vim /Library/WebServer/Documents/index.php

Inhalt der Datei:

<?php phpinfo(); ?>

Im Browser nun http://localhost/index.php eingeben, das sollte jetzt zu sehen sein:

phpinfo