torrent :-)

Háááát igen.

Sz'al én is használom, persze igyekszem elkerülni az illegális tartalmakat. - v. nem. De mindenki a saját sorsának kovácsa (v. nem.) - Mivel a net elérésem nem valami gyors, azt amit le kell/akarok tölteni inkább ezzel, mint ftp-n vagy http-n szedem le.

Ilyenkor jön a virginmedia.com és lassítósztrájkot játszik velem. - ami mértékadó vélemények szerint (vagyis inkább énszerintem) önbíráskodás:) - A leges leges legártalmatlanabb letöltéseimbe belekotyog, - pl.: Linux telepítőkészletek, rég lejért 'szavatosságú' filmek ... - hibás adatokat küldözget, és ehhez hasonló tevékenységekkel bosszant, rabolja a sávszélességemet, az időmet, és mindent amit csak tud.

De elég az önsajnálatból. Lássuk, hogy

mire nem képes a zember ha felbosszantják!

Azért ne gondoljatok valami nagy ellenséges tevékenységre, gépfeltörésre meg egyéb eléggé el nem ítélhető, rossz dolgokra:) - csúnya, gonosz, rossz Esneki! - csak szigorúan a saját kis házi szerveremen belüli védelmi óvintézkedésre. Vagy inkább óv-esetlenkedésre:) Leginkább csak egy játék az iptables-szel.

Ezen a mini/mikró szerveren egy transmission-deamon fut. A le- és feltöltési sebessége erősen korlátozva van, hogy azért maradjon sávszélesség pl. a HUP-ra, 'meg ilyesmi'.
Amikor is feltöltök rá agy torrent fájlt, jön a 'fent említett' szarakodni. ennek kivédésére találtam ki a következőt:
root@server:~/bin# cat ban-virginmedia


#! /bin/bash

HOSTS=("virgin[a-z0-9\-]*\.[a-z]\{2,4\}[\.]$" "unitymediagroup\.[a-z]\{2,4\}[\.]$")

filter() {
    local y
    for y in $(seq 0 $((${#HOSTS[*]}-1)) )
    do
      echo $@ | grep -q ${HOSTS[$y]} && return 0
    done
    return 1
}


while :;
do

  for y in $(find /tmp -amin +30 -type f -name \*.banner | sed 's/^\/.*\/\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\.banner$/\1/'); do
    iptables -D OUTPUT -d $y -j DROP
    iptables -D INPUT -s $y -j DROP
    rm "/tmp/$y.banner"
  done

  NS="$(netstat -tunp | grep 'ESTABLISHED.*transmission' | sed 's/.* \(.*\):.* \(.*\):.*/\2/' | egrep -v '^0\.0\.0\.0|^192\.168\.|^127\.|^10\.')"

  for i in $NS
  do
    HOST=$(host $i | awk '{print $5}')
    if filter $HOST
    then
      echo -en "$i:"
      if iptables -n -L INPUT | grep -q $i
      then
        echo " banned."
      else

        iptables -I OUTPUT -d $i -j DROP
        iptables -I INPUT -s $i -j DROP
        touch /tmp/$i.banner

        if ! iptables -n -L transmission 2>/dev/null | grep -q "$(echo $i|sed 's/\./\\\./g')"
        then
          iptables -I transmission -s "$i" -j DROP
          sed -i '/^:transmission - \[0:0\]/a -A transmission -s '"$i"' -j DROP' /etc/iptables.up.rules
          sleep 1
        fi

        FUND=1
        echo " ban!"
      fi
    fi
    sleep 1
  done

  sleep 120
done

Az emberi elme és találékonyság eme csodájának futtatásához néhány beállítást kell eszközölni.

Létre kell hozni a tranmission Chain-t, a Chain-ból returnel vissza kell adni a csomagokat oda ahonnan jöttek, ill. el kell neki küldeni azokat a csomagokat, amik a transmission nyitott portjára mennének, maja az iptables beállításait el kell menteni a /etc/iptables.up.rules fájlba, valamint gondoskodni kell a beállítások visszatöltéséról a szerver bottolása során. És az sem nagy baj, ha a program maga is elindul ugyanekkor, mondjuk az rc.local-ból.
Éééés valami ilyesmi lesz az eredmény:))

root@server:~# iptables -v -n -L

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
...
...
7559K 8913M transmission  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:51413 
4498K 3354M transmission  udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:51413 
  14M   13G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
...
...
29501 1588K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:51413 
 864K  108M ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:51413 
...
...

Chain transmission (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       82.14.0.215          0.0.0.0/0           
 1929  103K DROP       all  --  *      *       82.12.251.61         0.0.0.0/0           
   64  3872 DROP       all  --  *      *       109.91.151.186       0.0.0.0/0           
  310 16012 DROP       all  --  *      *       77.99.120.140        0.0.0.0/0           
   50  2702 DROP       all  --  *      *       86.21.122.23         0.0.0.0/0           
 3042  154K DROP       all  --  *      *       92.232.198.68        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.169.169.19        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.24.92.174         0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.7.116.221         0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.105.15.175        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.168.59.2          0.0.0.0/0           
    0     0 DROP       all  --  *      *       62.253.57.1          0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.98.61.146         0.0.0.0/0           
    5   268 DROP       all  --  *      *       81.97.61.247         0.0.0.0/0           
    4   212 DROP       all  --  *      *       82.27.57.236         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.4.46.29           0.0.0.0/0           
   15   877 DROP       all  --  *      *       82.30.145.28         0.0.0.0/0           
    3   144 DROP       all  --  *      *       82.12.236.99         0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.101.121.61        0.0.0.0/0           
    1    95 DROP       all  --  *      *       82.44.15.34          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.36.254.89         0.0.0.0/0           
    0     0 DROP       all  --  *      *       213.107.57.75        0.0.0.0/0           
   13   731 DROP       all  --  *      *       94.172.137.17        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.28.114.153        0.0.0.0/0           
   21  1167 DROP       all  --  *      *       82.0.25.108          0.0.0.0/0           
   65  3998 DROP       all  --  *      *       81.97.172.71         0.0.0.0/0           
   10   587 DROP       all  --  *      *       81.99.151.12         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.17.72.144         0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.232.134.219       0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.29.141.242        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.41.41.57          0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.28.130.201        0.0.0.0/0           
    6   355 DROP       all  --  *      *       82.11.122.2          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.38.11.72          0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.4.161.80          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.17.237.108        0.0.0.0/0           
   21  1135 DROP       all  --  *      *       81.103.165.103       0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.175.96.163        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.28.146.187        0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.98.228.71         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.172.128.77        0.0.0.0/0           
    0     0 DROP       all  --  *      *       213.105.86.57        0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.193.151.176       0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.98.28.243         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.8.228.105         0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.100.91.128        0.0.0.0/0           
   32  1984 DROP       all  --  *      *       82.12.162.215        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.12.252.192        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.1.141.238         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.172.150.182       0.0.0.0/0           
    4   192 DROP       all  --  *      *       82.8.243.126         0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.235.221.63        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.1.77.200          0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.235.78.190        0.0.0.0/0           
    0     0 DROP       all  --  *      *       62.255.142.70        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.36.162.216        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.17.207.170        0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.105.99.58         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.169.105.10        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.6.189.187         0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.193.41.140        0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.100.176.173       0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.235.116.77        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.1.105.100         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.16.165.206        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.2.26.140          0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.98.245.218        0.0.0.0/0           
    0     0 DROP       all  --  *      *       62.30.54.198         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.27.176.220        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.46.144.109        0.0.0.0/0           
    2   128 DROP       all  --  *      *       82.16.153.204        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.4.199.116         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.170.64.76         0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.3.156.179         0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.3.21.195          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.37.7.60           0.0.0.0/0           
    0     0 DROP       all  --  *      *       213.106.181.99       0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.21.175.249        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.18.90.9           0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.38.65.213         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.173.255.42        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.33.64.206         0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.238.163.105       0.0.0.0/0           
    0     0 DROP       all  --  *      *       213.106.90.160       0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.103.254.16        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.27.221.34         0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.98.147.123        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.40.62.227         0.0.0.0/0           
    0     0 DROP       all  --  *      *       62.31.206.140        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.28.195.70         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.0.136.195         0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.107.150.118       0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.109.189.94        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.175.103.42        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.34.180.46         0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.233.193.42        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.8.248.56          0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.22.165.214        0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.102.121.6         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.7.7.116           0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.101.88.213        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.174.156.215       0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.28.136.229        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.171.122.48        0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.171.231.94        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.12.145.245        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.15.221.229        0.0.0.0/0           
    9   559 DROP       all  --  *      *       77.99.171.6          0.0.0.0/0           
  102  6269 DROP       all  --  *      *       77.99.175.211        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.13.30.115         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.35.209.20         0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.4.96.90           0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.172.83.216        0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.99.246.168        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.24.224.130        0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.103.196.226       0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.30.9.147          0.0.0.0/0           
    0     0 DROP       all  --  *      *       95.222.130.163       0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.174.37.158        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.30.147.199        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.16.27.22          0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.25.205.1          0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.237.195.111       0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.12.240.101        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.15.176.22         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.43.224.152        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.26.130.40         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.13.64.230         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.19.141.218        0.0.0.0/0           
    0     0 DROP       all  --  *      *       92.234.131.207       0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.7.190.129         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.20.21.67          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.8.75.17           0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.4.102.43          0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.4.250.105         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.168.31.190        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.38.100.123        0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.11.235.122        0.0.0.0/0           
    0     0 DROP       all  --  *      *       95.223.139.100       0.0.0.0/0           
    0     0 DROP       all  --  *      *       109.90.227.125       0.0.0.0/0           
    0     0 DROP       all  --  *      *       178.203.153.56       0.0.0.0/0           
    0     0 DROP       all  --  *      *       210.238.103.18       0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.255.158.207       0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.97.2.207          0.0.0.0/0           
    0     0 DROP       all  --  *      *       77.98.245.215        0.0.0.0/0           
    0     0 DROP       all  --  *      *       80.5.219.135         0.0.0.0/0           
    0     0 DROP       all  --  *      *       81.96.24.198         0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.4.66.64           0.0.0.0/0           
    0     0 DROP       all  --  *      *       82.16.82.29          0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.21.198.221        0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.6.107.231         0.0.0.0/0           
    0     0 DROP       all  --  *      *       86.8.56.105          0.0.0.0/0           
    0     0 DROP       all  --  *      *       87.57.112.22         0.0.0.0/0           
    0     0 DROP       all  --  *      *       94.172.38.72         0.0.0.0/0           
  12M   12G RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Amint az a transmission Chain-ban látható, hellyel-közzel működik is:)
Mivel azonban szabadságolások néhány hét múlva véget érnek, e remekmű fejlesztése is abbamarad, és a holt projektek amúgy is népes táborát tovább gazdagítja.

Arra azért felhívnám minden kedves és kedvetlen érdeklődő figyelmét, hogy a saját - v. más - gépét csak saját felelősségére cseszheti el, és nem pediglen az enyémre:)

Hozzászólások

imádom az ilyen undorító regexeket! :)

------------------------------------
Ha a barátnőmre gondolok, az a null pointer dereference.

Ebben egy fia undorító regexpet nem látok, legalábbis mind elég egyszerűnek tűnik :-)
sed 's/.* \(.*\):.* \(.*\):.*/\2/
ebben nem tudom így hirtelen, mire kell az első pár zárójel… meg a „[\.]”-ot sem értem túlságosan, a parserem szerint az ugyanaz, mint a „\.”

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Fogalmam sincs, de pl. ilyenekre illeszkednek:

virgin[a-z0-9\-]*\.[a-z]\{2,4\}[\.]$
→ virginluzalnfa876-wak47aw4t-a4tt4w4t.aaaa.
virgin, majd tetszőleges számú szám, betű vagy kötőjel, majd 2–4 betű, majd pont a string végén

unitymediagroup\.[a-z]\{2,4\}[\.]$
unitymediagroup, majd pont, majd 2–4 darab betű, majd pont megint a string végén

sed 's/^\/.*\/\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\.banner$/\1/'
ez egy /bármi/IPCÍM.banner formátumú stringből gyomlál ki mindent, csak az IPCÍM-et hagyja.

'ESTABLISHED.*transmission'
ESTABLISHED{akárhány tetszőleges karakter}transmission

sed 's/.* \(.*\):.* \(.*\):.*/\2/'
{bármi} ({bármi1}):{bármi} ({bármi2}):{bármi} stringet cserél le bármi2-re, ahol a bármi lehet tetszőleges számú (akár 0) karakter.

'^0\.0\.0\.0|^192\.168\.|^127\.|^10\.'
IP címekre illeszkedik: 0.0.0.0 vagy 192.168.bármi vagy 127.bármi vagy 10.bármi

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

virgin[a-z0-9\-]*\.[a-z]\{2,4\}[\.]$
virgin, majd tetszőleges számú szám, betű vagy kötőjel, majd 2–4 betű, esetleg pont a string végén

szerk.: ja hát ez itt le van ba..ltázva:)) helyesen
"virgin[a-z0-9\-]*\.[a-z]\{2,4\}[\.]\{0,1\}$"
vagy
"virgin[a-z0-9\-]*\.[a-z]\{2,4\}[\.]*$"
vagy ilyesmi