# Syslog

Syslog és un estàndard de facto per a l'enviament de missatges de registre en una xarxa informàtica IP. Per syslog es coneix tant al protocol de xarxa com a l'aplicació o biblioteca que envia els missatges de registre.
Un missatge de registre sol tenir informació sobre la seguretat del sistema, encara que pot contenir qualsevol informació. Juntament amb cada missatge s'inclou la data i hora de l'enviament.

## Usos

És útil registrar, per exemple:
* Un intent d'accés amb contrasenya equivocada
* Un accés correcte al sistema
* Anomalies: variacions en el funcionament normal del sistema
* Alertes quan ocorre alguna condició especial
* Informació sobre les activitats del sistema operatiu
* Errors del maquinari o el programari
També és possible registrar el funcionament normal dels programes; per exemple, guardar cada accés que es fa a un servidor web, encara que açò sol estar separat de la resta d'alertes.

## Protocol

El protocol syslog és molt senzill: existeix un ordinador servidor executant el servidor de syslog, conegut com a syslogd (dimoni de syslog). El client envia un menut missatge de text (de menys de 1024 bytes).
Els missatges de syslog se solen enviar per mitjà de UDP, pel port 514, en format de text pla. Algunes implementacions del servidor, com syslog-ng, permeten usar TCP en comptes d'UDP, i també ofereixen Stunnel perquè les dades viatgen xifrades mitjançant SSL/TLS.
Encara que syslog té alguns problemes de seguretat, la seua senzillesa ha fet que molts dispositius ho implementen, tant per a enviar com per a rebre. Això fa possible integrar missatges de diversos tipus de sistemes en un sol repositori central.

### Estructura del missatge

El missatge enviat es compon de tres camps:
* Prioritat
* Capçalera
* Text
Entre tots no han de sumar més de 1024 *bytes, però no hi ha longitud mínima.

### Prioritat

La prioritat és un nombre de 8 bits que indica tant el recurs (tipus d'aparell que ha generat el missatge) com la severitat (importància del missatge), nombres de 5 i 3 bits respectivament. Els codis de recurs i severitat els decideix lliurement l'aplicació, però se sol seguir una convenció perquè clients i servidors s'entenguen.

#### Codis de recurs

Aquests són els codis observats en diversos sistemes. Font: .
| 0 | Missatges del kernel |
| 1 | Missatges del nivell de usuari |
| 2 | Sistema de correu |
| 3 | Dimonis de sistema |
| 4 | Seguretat/Autorització |
| 5 | Missatges generats internament per syslogd |
| 6 | Subsistema de impressió |
| 7 | Subsistema de notícies sobre la xarxa |
| 8 | Subsistema UUCP |
| 9 | Dimoni de rellotge |
| 10 | Seguretat/Autorització |
| 11 | Dimoni de FTP |
| 12 | Subsistema de NTP |
| 13 | Inspecció del registre |
| 14 | Alerta sobre el registre |
| 15 | Dimoni de rellotge |
| 16 | Ús local 0 |
| 17 | Ús local 1 |
| 18 | Ús local 2 |
| 19 | Ús local 3 |
| 20 | Ús local 4 |
| 21 | Ús local 5 |
| 22 | Ús local 6 |
| 23 | Ús local 7 |

#### Codis de severitat

Els 3 bits menys significatius del camp prioritat donen 8 possibles graus. Font: .
| 0 | Emergència: el sistema està inutilizable |
| 1 | Alerta: s'ha d'actuar immediatament |
| 2 | Crític: condicions crítiques |
| 3 | Error: condicions d'error |
| 4 | Perill: condicions de perill |
| 5 | Avís: normal, però condicions notables |
| 6 | Informació: missatges informatius |
| 7 | Depuració: missatges de baix nivell |

#### Càlcul de la prioritat

Per a conèixer la prioritat final d'un missatge, s'aplica la següent fórmula:
    Prioritat = Recurs * 8 + Severitat
Per exemple, un missatge de kernel (Recurs=0) amb Severitat=0 (emergència), tindria Prioritat igual a 0*8+0 = 0. Un de FTP (11) de tipus informació (6) tindria 11*8+6=94. Com es pot veure, valors més baixos indiquen major prioritat.

### Capçalera

El segon camp d'un missatge syslog, la capçalera, indica tant el temps com el nom de l'ordinador que emet el missatge. Açò s'escriu en codificació ASCII (7 bits), per tant és text llegible.
El primer camp, temps, s'escriu en format Mmm dd hh:mm:ss, on Mmm són les inicials del nom del mes en anglès, dd, és el dia del mes, i la resta és l'hora. No s'indica l'any.
Just després ve el nom d'ordinador (hostname), o l'adreça IP si no es coneix el nom. No pot contenir espais, ja que aquest camp acaba quan es troba el següent espai.

### Text

El que queda de paquet syslog a l'omplir la prioritat i la capçalera és el mateix text del missatge. Aquest inclourà informació sobre el procés que ha generat l'avís, normalment al principi (en els primers 32 caràcters) i acabat per un caràcter no alfanumèric (com un espai, ":" o "["). Després, ve el contingut real del missatge, sense cap caràcter especial per a marcar el final.

## Història

syslog va ser desenvolupat per Eric Allman com a part del projecte Sendmail, inicialment (anys 1980) només per a aquest projecte. No obstant això, es comprovà que era molt útil, i altres aplicacions començaren també a usar syslog. Avui dia (2005), syslog està present per defecte en quasi tots els sistemes Unix i GNU/Linux, i també es troben diverses implementacions de syslog per a uns altres sistemes operatius, com Microsoft Windows.
És ara, després de tants anys, quan syslog està en procés de convertir-se en estàndard, per a -entre altres coses- poder millorar la seguretat de les seues implementacions. IETF va assignar un grup de treball, i en 2001, es va documentar el seu funcionament en el RFC 3164 . L'estandardització del contingut del missatge i de les diferents capes d'abstracció estan planificades per a 2006.

## Implementacions

* UNIX:
** sysklogd
** rsyslogd: Implementa syslog sobre TCP i segueix el RFC 3195
** syslog-ng: TCP, SSL, SQL
* Windows 2000, 2003, XP:
** HDC Syslog Arxivat 2006-05-14 a Wayback Machine.: part dels productes HDC Arxivat 2006-05-14 a Wayback Machine.
** Kiwi Syslog Daemon
** NetDecision LogVision Arxivat 2008-05-13 a Wayback Machine.
** WinSyslog
** NTsyslog
** Syslserve Arxivat 2009-08-19 a Wayback Machine.
** Syslog Watcher

## Enllaços externs

* , on s'estudia (però no es defineix) com han implementat syslog diversos fabricants. Agost de 2001. (anglès)
* Procés d'estandardització de syslog (anglès).
* (anglès): enviament fiable per a syslog