Linuxon nagy mennyiségű IP cím tiltása

Fórumok

Sziasztok!

Van egy saját gyűjtésű listám ami 200e+ db IP címet és 1e+ db tartományt tartalmaz.

hosts.deny esetében gyakorlatilag minden kapcsolat megállt, gondolom nem erre tervezték.

Iptables esetén van valakinek tapasztalata mennyi szabályt bír el jelentős lassulás vagy beállás nélkül?

Illetve ha erre van más jó megoldás az is nagyon érdekelne.

Hozzászólások

Itt azt írta az egyik kommentelő, hogy 12000 iptables szabályt egy 4 magos gép 2 perc alatt töltötte be.

Mekkora bejövő/eldobandó pps -el számolsz?
Érdemes megpróbálni route táblából kezelni az eldobást.

Úgy rémlik az IP Set mintha pont ilyesmire lenne kitalálva, de ha szerencséd van Kadlecsik Józsi majd jön, és megmondja a tutit.

Nem szeretnék semmilyen tutit megmondani... de szerintem az ipset alkalmasabb a célra, mint az iptables bináris fába rendezett szabályokkal: annak memóriaigénye és kiértékelése "drágább", mint ipset-tel. Továbbá azokat a szabályokat valaminek ki kell számolni és bár Jesper SubnetSkeleton perl modulja remek, de az függ az IPTables::libiptc modultól. Viszont a libiptc soha nem volt publikus library.

+1 ipset-re

Nagy számú IP-hez való. Hash táblát használ: memóriát áldoz a sebesség oltárán. Be lehet állítani az arányt. Néha Kadlecsik József elő is ad róla itt-ott.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Nem lenne egyszerűbb mindent tiltani, és csak bizonyos IP-ket engedélyezni?

nekem erre az az otletem volt, hogy bevagom az ilyen ipket egy "fake" orszag ala a geoip adatbazisba, es csak arra az orszagra tiltok. elvileg a geoip lookup bitang gyors, igy mindegy hogy 10-1000-100k ip van benne.

sajna meg nemvolt idom ezzel foglalkozni, akinek van kedve raugorhat a temara :)

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Ipset, én is ezt használom openwrt routeren

Itt a script:

#!/bin/sh
logger "[Blacklist update]: starting ..."
if ! ipset list | grep -q blacklist; then
ipset create blacklist 'hash:net'
fi

if ! ipset list blacklist | grep -vq 'Type: hash:net'; then
ipset destroy blacklist
ipset create blacklist hash:net
fi

ipset flush blacklist

for i in ` curl --insecure -s -o - https://www.blocklist.de/downloads/export-ips_all.txt | egrep '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq`;do ipset add blacklist $i ;done

if ! iptables -nL | grep -q 'Chain blacklist'; then
iptables -N blacklist
else
iptables -F blacklist
fi

if ! iptables -L INPUT | grep -q blacklist; then
iptables -I INPUT -m state --state NEW -j blacklist
fi

if ! iptables -nL blacklist | grep -q "match-set"; then
iptables -A blacklist -m set --match-set blacklist src -j LOG -m limit --limit 1/minute --log-prefix 'BLACKLIST '
iptables -A blacklist -m set --match-set blacklist src -j DROP
fi
logger "[Blacklist update]: finished ..."
exit 0

Egy kicsit tömörítve... :)

# wget https://www.blocklist.de/downloads/export-ips_all.txt
--2015-07-21 20:13:36-- https://www.blocklist.de/downloads/export-ips_all.txt
www.blocklist.de (www.blocklist.de) feloldása... 176.9.54.236
Csatlakozás a következőhöz: www.blocklist.de (www.blocklist.de)[176.9.54.236]:443... kapcsolódva.
HTTP kérés elküldve, várakozás válaszra... 200 OK
Hossz: 549184 (536K) [text/plain]
Mentés ide: ,,export-ips_all.txt"

export-ips_all.txt 100%[===============================================================================================================================================================>] 536,31K 2,15MB/s idő 0,2s

2015-07-21 20:13:37 (2,15 MB/s) -- ,,export-ips_all.txt" mentve [549184/549184]

# wc -l export-ips_all.txt
38999 export-ips_all.txt

# cat export-ips_all.txt | ips2subnets | wc -l
27488

:)

--
Debian Linux rulez... :D

Ez az ips2subnets jó eszköznek tűnik, de nem találtam róla sehol semmilyen leírást (pl a G. 26 találatot dobott ki). Ez valami saját cucc?

Szeretném majd cron-ba berakni, de valószínűleg ahhoz csinálok egy külön update script-et. blocklist-ről le lehet az utoljára hozzáadottakat is (https://www.blocklist.de/en/api.html#last). Felesleges mindig az egészet beimportálni, relatíva elég sok idő és addig nem is aktív a "védelem".

Mellesleg az én script-em:

#!/bin/bash

IP_BLACKLIST=/data/firewall/_ipblacklist

BLACKLISTS=(
"http://www.projecthoneypot.org/list_of_ips.php?t=d&rss=1" # Project Honey Pot Directory of Dictionary Attacker IPs
"http://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=212.40.97.106" # TOR Exit Nodes
"http://www.maxmind.com/en/anonymous_proxies" # MaxMind GeoIP Anonymous Proxies
"http://danger.rulez.sk/projects/bruteforceblocker/blist.php" # BruteForceBlocker IP List
"http://rules.emergingthreats.net/blockrules/rbn-ips.txt" # Emerging Threats - Russian Business Networks List
"http://www.spamhaus.org/drop/drop.lasso" # Spamhaus Don't Route Or Peer List (DROP)
"http://cinsscore.com/list/ci-badguys.txt" # C.I. Army Malicious IP List
"http://www.openbl.org/lists/base.txt" # OpenBL.org 30 day List
"http://www.autoshun.org/files/shunlist.csv" # Autoshun Shun List
"http://lists.blocklist.de/lists/all.txt" # blocklist.de attackers
"https://www.blocklist.de/downloads/export-ips_all.txt"
)

for i in "${BLACKLISTS[@]}"
do
/usr/bin/wget -q -O - "${i}"
done | /bin/grep -Po '(?:\d{1,3}\.){3}\d{1,3}(?:/\d{1,2})?' | ips2subnets > ${IP_BLACKLIST}

--
Debian Linux rulez... :D

Igen, megint lehet kezdő kérdésem lesz, bocs, ha nagyon amatőrködök, de nagyon tetszik ez a védelem.

A script, hogyan működik, hogyan blokkolja ezeket az IP címeket?

Néztem a ps aux-ot ott nem fut semmi a script-ből (lehet vak vagyok). Továbbá, ha futtatok egy iptables -L parancsot, akkor sem látom a blokkolt IP-ket. Természetesen a "_ipblacklist" file tartalmazza az IP-ket.

Köszi!

Ez, amire válaszoltál, önmagában sehogy. Ez mindössze annyit csinál, hogy összeszedegeti a webről a különböző listákat, keresztültolja Swifty >itt< linkelt másik scriptjén, ami megkeresi a fedő subneteket, ha jól látom, hogy kb mi van benne, hogy rövidebb legyen a lista, és beleteszi a fileba.

Ezt a listát aztán valahogy meg kell etetni az iptablessel még valahogy, de Swifty azt nem mutatta meg, hogy ő hogy csinálja. Kiindulhatsz pl Eddie85 >itteni< scriptjéből, ha érted mit csinál, a for ciklusba kéne behelyettesíteni, hogy ezt töltse inkább ipsettel.

Ez most nagyon csak ránézésre, de kb ez kell a for ciklus helyére


IP_BLACKLIST=/data/firewall/_ipblacklist
cat $IP_BLACKLIST|xargs -L 1 ipset add blacklist

Azért jó lenne megnézni, hogy neked így érdemes-e használni az aktuális tűzfal setupoddal (bár figyel rá, hogy meglegyen minden chain, és be is teszi a blocklistet az input elejére, amire azért van esély, hogy jó legyen általában).

Miert kell blokkolni ezt az irdatlan mennyisegu IP-t?

-----
"Már nem csak tehetségekből, de a hülyékből is kifogytunk..."

Erre való a fail2ban :> aztan tiltod 1 hónapra fölösleges 60e ip-t blokkolni. Illetve ennyi erővel akkor már geoip alá rendezed ahogy másik is mondták. Arról nem beszélve, hogy a zombi hálózat naponta több ezer géppel IP vel bővülhet és csökkenhet, azokat se ártana követni.

Fedora 22, Thinkpad x220

Eleg 10-20 notoriusan probalkozo IP-t fixen tiltani, a tobbi ugyis random.
Csatlatkozom az elottem szolohoz a fail2ban-al kapcsolatban.
A tamadasi felulet csokkentesere pedig:
- WP/Joomla/stb. eseten: az admin URL http(s)://site/admin/ helyett http(s)://site/kiskutya/ legyen
- POP/IMAP/FTP: csak olyan orszagokra engedelyezni ahonnan hasznaljak + fail2ban + webmail (ha nem ernek el pop/imap-ot tudjanak ertesiteni :)
- termeszetesen az SSH-t is mas portra tenni

-----
"Már nem csak tehetségekből, de a hülyékből is kifogytunk..."

De nem ám. Ha szkennelnek, akkor se mennek 1000 fölé. Ezt is jó észben tartani. Emellett érdemes olyan portra átmenni, ami amúgy benne van a well-known portok listájában. (Mókás nézni az OrbitNet Message Service remote exploitot, amint egy SSH-t próbál gyilkolni. :D :D)
--
Coding for fun. ;)

A WP/Joomla admin URL modositasa sem vedi meg a sechole-os CMS-t, ennek ellenere megis csak 5 evente 1x forgjak feltorni es nem naponta 2x. Ertem, hogy false sense of security, de nagyon is praktikus a hasznalata. Miutan egy uj exploit vegigsoport a default telepiteseken te szepen felrakod az uj verziot ami a serulekenysegt javitja, utana mar johet a celzott tamadas a gepre, lepattan.
SSH-nal ugyanez, nem mintha ott napi szintu lenne az exploit, de ha eszreveszed idoben, hogy test felhasznalonak test123 a jelszava akkor meg van idod modositani (meg persze a /var/log sem telik meg havonta szemettel).

-----
"Már nem csak tehetségekből, de a hülyékből is kifogytunk..."

Én azért kezdtem tiltani, mert ugyan nagyrészt random, de baromira hízlalja a logokat (httpd). És egy idő után hatásos. Manapság már elég kevés próbálkozás van naponta. 1 hónapos timeout-ot állítottam be.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."