Zum Inhalt springen

Forum

PHPWelt.net Blog - Ein weiteres tolles WordPress-Blog


fsockopen error 22 unable to connect / invalid argument

Wenn folgender Code:

<?php
$fp = fsockopen('localhost', 80, $errno, $errstr);
if (!$fp) {
  print("ERROR Number: ".$errno. '<br>Error String: '. $errstr);
} else {
  echo 'fsockopen() ok';
  fclose($fp);
}
?>

ausgibt:

Warning: fsockopen() [function.fsockopen]: unable to connect to localhost:80 (Invalid argument) in /(…)/fsocktest.php on line 3
ERROR Number: 22
Error String: Invalid argument

dann muss in die /etc/network/interfaces.template folgendes:

auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
broadcast 127.255.255.255
up ip route replace 127.0.0.0/8 dev lo

danach reboot.


The following packages have been kept back

Wenn die Meldung “The following packages have been kept back” eim installieren von Paketen erscheint so muss man als root apt-get mit dem Parameter dist-upgrade starten, denn dann ist dieses Packet für eine neue Betriebssystemversion gedacht:

apt-get dist-upgrade

MySQL optimieren

Auch die MySQL-Datenbank kann optimiert werden. Dazu muss die Datei “/etc/my.cnf” bearbeitet werden und danach den DB-Server via “/etc/init.d/mysql restart” neustarten.

Folgende Parameter können eingstellt werden:

back_log current value: 5
bdb_cache_size current value: 1048540
binlog_cache_size current value: 32768
connect_timeout current value: 5
delayed_insert_limit current value: 100
delayed_insert_timeout current value: 300
delayed_queue_size current value: 1000
flush_time current value: 0
interactive_timeout current value: 28800
join_buffer_size current value: 131072
key_buffer_size current value: 1048540
long_query_time current value: 10
lower_case_table_names current value: 0
max_allowed_packet current value: 1048576
max_binlog_cache_size current value: 4294967295
max_connect_errors current value: 10
max_connections current value: 100
max_delayed_threads current value: 20
max_heap_table_size current value: 16777216
max_join_size current value: 4294967295
max_sort_length current value: 1024
max_tmp_tables current value: 32
max_write_lock_count current value: 4294967295
myisam_sort_buffer_size current value: 8388608
net_buffer_length current value: 16384
net_read_timeout current value: 30
net_retry_count current value: 10
net_write_timeout current value: 60
read_buffer_size current value: 131072
read_rnd_buffer_size current value: 262144
slow_launch_time current value: 2
sort_buffer current value: 2097116
table_cache current value: 64
thread_concurrency current value: 10
thread_stack current value: 131072
tmp_table_size current value: 1048576
wait_timeout current value: 28800

Im Abschnitt Finetuning ist eingentlich der besste Ansatzpunkt:

key_buffer = 128M
max_allowed_packet = 4M
thread_stack = 1M
thread_cache_size = 100
max_connections = 500
table_cache = 4K
thread_concurrency = 8
query_cache_limit = 1M
query_cache_size = 32M


ndiswrapper Howto

Ich habe beim aufräumen meine alten Notizen zum einbinden eines WLAN-Sticks unter Linux wiedergefunden. Dabei war das Problem damals das keinerlei Linuxtreiber vorhanden waren und der Windowstreiber herhalten musste. Sucht auf der InstallationsCD nach den INF Dateien und versucht sie wie folgt mit ndiswrapper zu installieren:

ndiswrapper -i ts154usb.inf

ist dies gelungen so muss ndiswrapper noch in den Kernel nachgeladen werden:

 modprobe ndiswrapper

und

ndiswrapper -m

dann sollte bei iwconfig ein neuer Eintrag auftauchen.


alte Emails von IMAP automatisch löschen

Möchte man nach einiger Zeit allte Emails löschen kann man ein cronjob mit folgenden Befehl einrichten:

find /var/spool/mail -type f -mtime +30 -exec rm {} \;

In diesem Fall werden die Emails nach 30 Tagen gelöscht.


Externer Zugriff auf eine Mysql-Datenbank

In der Datei “/etc/mysql/my.cnf” die Anbindung an den localhost entfernen in dem der Eintag “bind = 127.0.0.1″ auskommentiert oder gelöscht wird. Zusätlich muss für den Mysqluser der verwendet werden soll, der externe Zugriff erlaubt sein:
Bei vorhanden User:

mysql -u admin -p`cat /etc/psa/.psa.shadow` mysql
update user set host='%' where user="myuser";
flush privileges;
exit;

Nachtrag: danke für den Komentar, so ist es natürlich sicher!
oder einen neuen Nutzer wie folgt anlegen:

mysql_setpermission -u admin --password `cat /etc/psa/.psa.shadow`

Plesk unter Debian installieren

in die /etc/apt/sources.list den folgenden Eintrag hinzufügen:

deb http://autoinstall.plesk.com/debian/PSA_8.2.1 etch all

und dann mit apt-get oder aptitude das Paket “psa” installieren (installiert denn auch Apache etc. automatisch mit)


Wie kann ich meinen Server absichern?

Ein Webserver sendet von Haus aus viele Informationen mit um sich zu identifizieren. Dem normalen Webseiten besucher nützen die Zusatzinformationen recht wenig. Sie werden eigentlich nur für Statistikzwecke verwendet. Eigentlich.. uneigentlich kann ein angreifer so verwundbare Systeme erkennen. So sendet der Server z.B. folgendes: “Apache/1.3.27 (Linux/SuSE) PHP/4.3.1″ Ist nun im Apache oder PHP dieser Version ein Fehler, ist es für den Angreifer einleichtes. Um es potentiellen Angreifern etwas zu erschweren kann man die mitgesanten Informationen etwas beschneiden.
Apache
In der http.conf den Eintrag “ServerToken Prod” editieren/erstellen.
Lighttpd
in der lighttpd.conf den Eintrag server.tag editieren/erstellen.
PHP
Bei PHP lässt sich die Ausgabe nur unterdrücken und leider nicht modifizuiern. Editiere/erstelle dazu in der php.ini den Eintrag expose_php und setze in auf off.

Sonstige
Nicht nur der Webserver “verrät” potentielle Sicherheitslücken, sondern auch die FTP-Software ist gesprächig:
vsFTPD
In der vsftpd.conf den Eintrag ftpd_banner editieren/erstellen.


Lighttpd auf Debian Etch installieren

Wer sich über den Speicherhunger vom Apachen ärgert wird um Lighttpd nicht herumkommen. Mit Apache hatte ich andauert Qos Meldungen, trotz Stunden langen optimierungen. Ich hab denn nach “Alternative zu Apache” gegooglet und bin auf Lighttpd gestoßen.
Installiert wird er via:

apt-get install lighttpd

die Hauptkonfigurationsdatei befindet sich nach der Installation unter

/etc/lighttpd/lighttpd.conf

Dort kann man nahezu alle möglichen Konfigurationen vornehmen. Allerdings hat der Lighttpd ein Manko was mich persönlich sehr ärgert, er unterstützt kein .htaccess . Und wenn etwas geändert wurde z.B. an einer .htusers dann muss der Lighttpd immer neugestartet werden. Vieleicht resultiert daher ein großer Geschwindigkeitsvorteil?


Wie erstelle ich einen cronjob?

Es gibt 3 elementare Befehle:

crontab -e zum editieren,
crontab -l zum auflisten und
crontab -r zum löschen aller cronjob’s

Um einen Cronjob zu erstellen rufen wir mit crontab -e den Editor auf und gehen in eine neue Zeile. Cronjobs werden immer im Format “Minute Stunde Tag Monat Wochentag Befehl” eingetragen. Die Zahlenangaben dabei können dabei durch folgende Variationen ausgestaltet sein:

*       :   alle
*/x     :   aller x Einheiten (z.B. Minuten)
1,3,14  :   1,3 und 14 als Einheiten
23-47   :   alle Zahlen Werte zwischen incl. 23 und incl. 47

Für die Wochentagsangabe gilt (Montag=1 …. Sonntag=7)
Ein Beispiel

* */2 1-5 1,5 1 echo "test"

“test” wird Montags im Januar oder Mai wenn er auf den 1,2,3,4 oder 5 des Monats fällt, aller 2 Stunden jede Minute ausgeführt.