pam_sieĝo
---------

Tio ĉi estas pam-modulo kiu helpas defendi vian "kastelon", barante
vian "pordon" por vizitantoj kiuj plurfoje malsukcese provas eniri.

Ĉi tiu programo estas disponigita laŭ permesilo GNU GPL (vidu KOPII).

Por ekuzi ĝin, skribu:

$make
$su -c 'cp pam_siegho.so /lib/security' # loko por la pam-bibliotekoj

Se vi volas fari version kiu ne uzas UTF-8, forigu en pam_siegho.c la
linion "#define UTF8 1".

Poste por la servoj por kiuj vi volas uzi sieĝo-protekton, aldonu
linion al la pam-agordoj (/etc/pam.d/<servo> aŭ /etc/pam.conf) "auth
require pam_sieĝo.so" aŭ "auth requisite pam_sieĝo.so". Se vi uzas
"require", pam ĉiam demandos la pasvorton (aŭ alia aŭtentikiga
maniero), ĉu la vizitanto jam tro multe provis aŭ ne, per "requisite",
la vizitanto estos tuj forriglata (en la dua kazo nepre metu la linion
antaŭ la aliaj aŭtentikigaj linioj, kiel ekzemple pasvorto). Ekzemplo:

auth    requisite pam_siegho.so
auth    required  pam_unix.so
account required  pam_unix.so
session required  pam_unix.so

Ankaŭ vi faru regularon por pam_sieĝo en /etc/sieĝo (vi povas ŝanĝi la
supozatan lokon en pam_siegho.c aŭ per aldono de argumento
"regularo=<loko>" al la modula linio en la pam-agordoj). La regularo
povas esti normala dosiero aŭ dosierujo. Se ĝi estas ujo, la dosiero
kun la nomo sama al la pam-servo estos uzata, aŭ "aliaj" se ĝi ne
ekzistas. La ogordoj kiujn vi povas fari estas jenaj (se vi ne indikas
agordon, la valoroj donataj ĉi tie estos uzataj; linioj komencantaj
per "#" estas rimarkoj):

-----
notlibro=/var/log/sieĝo
# Kie memori la "timo"n

rekonaĵo=armeo
# Kiel rekoni la vizitanton (ne ĉiuj servoj difinas ĉion; vi ne povas
# uzi nedifinitajn rekonaĵojn). Tio ĉi estas listo de rekonajhoj
# separataj de komoj (","). La eblaj rekonaĵoj estas:
#    * anonco (USER: kiun la vizitanto pretendas esti)
#    * militisto (RUSER: nomo de la vizitanto en sia propra komputilo)
#    * armeo (RHOST: DNS-nomo de la komputilo de la vizitanto)
# Vi konsciu ke la vizitanto povas pretendi kion ajn por anonco, kaj
# eble ankaŭ por militisto. La armeo (DNS-nomo) povas ŝanĝiĝi de tempo
# al tempo kun dinamikaj IP-adresoj.
# Do, se vi volas nombri la provojn de unu homo en unu komputilo,
# eniri kiel unu uzulo ĉe vi, skribu:
#rekonajho=anonco,militisto,armeo

timemo=1m
# Kiom longe memori provojn (s=sekundoj, m=minutoj, h=horoj, t=tagoj).

limo=10
# Nombro da provoj.

daŭro=1t
# Tempo por forrigli vizitanton se la "timo" superas la "limo"n.

ago=
# Ago kiam la vizitanto estas forriglata.
# Por sendi retmesaĝon, uzu:
#ago=echo "$MILITISTO@$ARMEO --> $ANONCO tro ofte provis eniri" | mail -s "riglite por $ARMEO" root
-----


Nu, kiel funkcias tion ĉi?
--------------------------

Por ĉiu vizitanto, la tempo de la lasta provo kaj la "timo" estas
memorataj (en la notlibro). Ĉiufoje kiam vizitanto provas eniri (kiam
pam estas vokata), la timo pliiĝas je unu unuo, kaj malpliiĝas je unu
unuo por ĉiu tempo "timemo" kiu pasis depost la antaŭa provo. Se post
tio la timo superas la limon, la vizitanto ne povos eniri kaj la ago
estos farata. Se la vizitanto, dum li estas forriglita, ankoraŭfoje
provas eniri antaŭ la forpaso de la "daŭro" , la tempo de la lasta
provo renoviĝas (do li devos denove plene atendi la "daŭro"n), sed la
ago ne denove fariĝos. Post sukcesa eniro, la gardisto retrankviliĝas
pri tiu vizitanto (la timo fariĝas 0).

Ni rigardos ekzemplon: rekonaĵo estas "armeo", ago estas sendi
retmesaĝon al "root", timemo estas unu minuto, limo estas 10 kaj daŭro
estas unu tago.

"noblulo.org" provas eniri
   timo por "noblulo.org" fariĝas 1
   vizitanto akceptiĝas (li rajtas provi)
"noblulo.org" donas bonan pasvorton
   timo por "noblulo.org" fariĝas 0
"noblulo.org" provas eniri
   timo por "noblulo.org" fariĝas 1
"noblulo.org" misas pri la pasvorto
"noblulo.org" denove provas eniri
   timo por "noblulo.org" fariĝas 2
   "noblulo.org" provu
"noblulo.org" donas bonan pasvorton
   timo por "noblulo.org" fariĝas 0
"maliculo.org" provas eniri
   timo por "maliculo.org" fariĝas 1
   "maliculo.org" provu eniri
"maliculo.org" donas malbonan pasvorton
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 2
   "maliculo.org" provu eniri
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 3
   "maliculo.org" provu eniri
---post du minutoj---
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 2
      (timemo dufoje pasis (-2) kaj nova provo (+1))
   "maliculo.org" provu eniri
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 3
   "maliculo.org" provu eniri
...
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 10
   "maliculo.org" provu eniri
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 11
   vizitanto estas forriglata
   root ricevas retmesaĝon
---post duona tago---
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 12
   vizitanto restas forriglata
---post duona tago---
"maliculo.org" denove provas
   timo por "maliculo.org" fariĝas 13
   vizitanto restas forriglata
      (ĉar la lasta provo estas nur antaŭ duona tago)
---post du tagoj---
"maliculo.org" denove provas
   timo por "maliculo.org" jam estas 0, fariĝas 1
   "maliculo.org" povas denove provi


Ideoj por utiligado
-------------------

Unu maniero utiligi tion ĉi estas por protekti vian ssh (aŭ alian)
servilon kontraŭ atakoj de homoj kiuj provas konjekti
pasvorton. Agordu rekonaĵo al armeo. Per ipset (vidu
http://www.ipset.netfilter.org/), vi povos do havi agon kiu aldonas la
adreson de la atakanto al ip-aro kun forpastempo unu tagon, kaj en
viaj iptablaj reguloj, aldoni regulon kiu forbaras pakaĵojn de tiuj
adresoj.


Mi trovis eraron / volas kontakti la aŭtoron
--------------------------------------------

Se vi trovis eraron, havas ideojn por plibonigoj, nepre volas rakonti
okazintaĵon rilatan tiun ĉi programeton, ... kontaktu la aŭtoron (por
programŝanĝoj, patĉoj kompreneble estas bonvenaj): Maarten Deprez
<maartendeprez ĉe users punkto sourceforge punkto net>.
