Hmmmz, ik ga dit topic even gebruiken om hardop te denken. Ik zat net op de WC
en bedacht me het volgende:
Wat ik zat te bedenken:
Laat me effe uitpraten voordat je met flames komt of me voor dombo uit maakt. Ik denk hardop en dit idee is misschien nieteens levensvatbaar of de moeite waard. Daar kom ik dan tijdens het schrijven wel achter.
Als we nou eens (alle) IP-blokken in een database gooien, in de vorm van 123.123.123.X (Class C dus als ik me niet vergis). Dat zijn dan (kort door de bocht) 16581375 blokken. En die geven we allemaal een status: NeedScan.
Vervolgens maken we clients, die uit deze DB een blok ophalen met de status NeedScan. De server zal zien waar het request vandaan komt (remote IP), en een blok teruggeven dat qua ip-nummer zo dicht mogelijk in de buurt ligt als waar het IP van het "request for blok" (de client) vandaan komt. Dit blok wordt dan op "Pending" gezet.
De client gaat vervolgens alle 255 254 Ip's in dat blok scannen naar een open relay smtp server (poortje 25 openen, wat data babbelen en proberen een mail te versturen etc). Tests als deze kun je ook laten uitvoeren door ORDB.org. De resultaten van al deze 255 IP's worden opgeslagen in een tempfile (wel/geen open relay of geen contact). Natuurlijk worden de IP's niet allemaal tegelijkertijd gescanned, meer in de richting van 1 IP per minuut (of zelfs instelbaar door de gebruiker?).
Als de hele C-klasse range gescanned is, worden resultaten teruggestuurd. Alle open relays worden dan in een tabel gegooid met open relays en het blok wordt afgevinkt (status) als "scanned" en er wordt een datum bijgehouden wanneer dat blok voor het laatst gescanned is (en eventueel door wie (ip/username?) enzo). De reden waarom de client alle 255 resultaten verstuurd is met het oog op de toekomst (zo zou je bijv. alle "wel contact maar geen open relay" e.d. ook in aparte tabellen of zelfs in de "hoofdtabel" kunen opslaan met bijbehorende status).
De server zal om de zoveel tijd (iedere week/maand/jaar?) een blok weer vrijgeven om opnieuw gescanned te worden.
Op deze manier bouw je dus een "actieve" database met open relays op die op regelmatige basis bijgewerkt zal worden. Die zou dan weer door mailservers ge-queried kunnen worden voordat ze mail accepteren van een IP (we spelen dus zelf ORDB want wij weten het beter
).
Dit geintje heeft een paar "leukigheden":
• Omdat clients altijd blokken zullen krijgen uit hun eigen IP-range of dicht in de buurt daarvan blijft de belasting van "het internet" redelijk laag. Er gaat geen of weinig "intercontinentaal verkeer" en dergelijke ontstaan.
• Een open relay test is al met al misschien 200Kb aan data die op en neer naar het "slachtoffer" gaat. (Ruwe schatting, als ik er (veel) langs zit hoor ik het graag).
• De clients scannen niet meer dan X IP/s per X tijd (instelbaar, met een bepaald maximum zodat providers ook niet overbelast worden? (bijv. max 5 IP's per 10 minuten, dus 255 IP's duurt dan minimaal 8,5 uur)).
• Omdat het "distributed" is wordt het verkeer nog meer verdeeld over veel providers. Al met al zullen de "grote pijpen" het denk ik niet eens écht merken tussen alle DIvX/MP3 DowNLOadS
• De database zal redelijk actueel kunnen blijven. Tevens kun je de database makkelijk verdelen over meerdere servers / continenten omdat je toch hele bloken uitdeelt. Zo hou je de traffic met de "DB servers" ook laag (lager).
• De communicatie van de clients met de server hoeft niet veel te zijn: Hey ik wil een blok! -> Alsjeblieft 123.123.123.x is yours -> Thanx en een dag of wat later: Hey, ik heb resultaten voor je: IP's 5,6,8,12,41,78,122,146,238 en 239 (uit het blok 123.123.123.x) zijn niet door de test gekomen -> Thanx
Ook zijn er een paar nadelen:
• Werkstations en dergelijken achter een firewall enzo, die gehackt zijn of een virus hebben of whatever kunnen natuurlijk nog steeds zelf "smtp-servertje" gaan spelen en email versturen. Die detecteer je op deze manier niet. Je zou overigens, schiet me nu te binnen, clients zelf nog interne ranges (192.168.x.x, 10.x.x.x enzovoorts) kunnen laten scannen mits ze verbonden zijn met een netwerk met zulke ranges.
• Er zal "ergens" een lijst moeten komen van Open Relay servers van providers zelf. Omdat je je eigen blok(ken) uit je eigen ranges (waarschijnlijk) test is de kans groot dat je minimaal 1 server tegen komt die wél alle mail accepteert (open relay dus) maar dat alleen maar van bepaalde IP-ranges doet (eigen klanten). Waarschijnlijk kun je dit soort gegevens, voordat je ze opneemt in de database, nog even door andere clients geverifieerd worden (status: NeedVerify en die blokken weer weggeven voordat je ze op "scanned" zet). Misschien kun je dit soort dingen ook wel uit de DNS van een bepaald blok halen (MX records enzo), maar daar kom ik nu zo snel effe niet op of dat mogelijk is. Als ik daar een nachtje over geslapen heb misschien wel (het is al laat
)
• Er zal een (globale) toename aan internet verkeer komen mochten er flink wat clients in de omloop zijn. Dit zal echter (denk ik) maar een "tijdelijke" piek zijn (let wel: tijdelijk in de breedste zin van het woord). Afhankelijk van hoe snel je blokken opnieuw gaat uitgeven om te laten (her) controleren belast je natuurlijk "het internet". De client "verzoekjes" naar de database ("gimme a blok, i have nothing to do") kosten natuurlijk (bijna) niks als je geen blokken uitgeeft of deze "drempelwaarde" dus hoger zet en dat resulteert dus weer in een potentieele blok-scan die niet uitgevoerd hoeft te worden omdat de client geen blok ontvangt.
• Bepaalde ranges zullen "slechter" worden gescanned (ik kan me voorstellen dat onze client in de sahara en omstreken wat minder populair is). Daarvoor zou je op een gegeven moment ranges die te lang open staan meer prioriteit kunnen gaan geven (op basis van "IP-Afstand") boven ranges die al eens gescanned zijn en klaar staan om opnieuw gescanned te worden).
Conclusie / Disclaimer:
Een ander los ideetje: Distributed Virusscanner
Zelfde principe, ander doel 
Waarom in P&W en niet ergens anders (zoals Internet & Telefonie, Dutch Power Cows
)? Omdat ik uiteindelijk dit topic richting "actual code" wil gaan "duwen" en het vanaf scratch met jullie uitwerken (voor diegenen die intresse hebben) in dit topic.
Ow, en voor je met mijn idee(ën) aan de haal gaat: © ® TM 2005 by RobIII
Mooi, je hebt het gered tot het einde. Lees nu nog even een keer de eerste 2 zinnen uit dit topic aandachtig door, neem het in je op en post dan je antwoord pas.
![]() | Distributed Anti Spam Hoewel ik nog steeds niet onaardig overweg kan met mijn spamfiltertje en ik me nog steeds niet laat kisten of laat chagrijnig maken door spam, begint het me wel steeds meer te irriteren dat er nog steeds lui zijn die te lam zijn om hun open relays dicht te timmeren (types "bandbreedte zat" tot "onwetend") en dat spammers nog steeds misbruik maken van PC's die virii bevatten, gehacked zijn etc. Nu zijn er wel een hoop Open Relay Databases waarmee je kunt checken of een bepaald IP gerigistreerd staat als open relay en daarna dus bloken. Het nadeel van deze databases is dat zij ip nummers pas opnemen nadat deze zijn gechecked nadat deze zijn ingevoerd door mensen. Dat is dus redelijk passief. |
Wat ik zat te bedenken:
Laat me effe uitpraten voordat je met flames komt of me voor dombo uit maakt. Ik denk hardop en dit idee is misschien nieteens levensvatbaar of de moeite waard. Daar kom ik dan tijdens het schrijven wel achter.
Als we nou eens (alle) IP-blokken in een database gooien, in de vorm van 123.123.123.X (Class C dus als ik me niet vergis). Dat zijn dan (kort door de bocht) 16581375 blokken. En die geven we allemaal een status: NeedScan.
Vervolgens maken we clients, die uit deze DB een blok ophalen met de status NeedScan. De server zal zien waar het request vandaan komt (remote IP), en een blok teruggeven dat qua ip-nummer zo dicht mogelijk in de buurt ligt als waar het IP van het "request for blok" (de client) vandaan komt. Dit blok wordt dan op "Pending" gezet.
De client gaat vervolgens alle 255 254 Ip's in dat blok scannen naar een open relay smtp server (poortje 25 openen, wat data babbelen en proberen een mail te versturen etc). Tests als deze kun je ook laten uitvoeren door ORDB.org. De resultaten van al deze 255 IP's worden opgeslagen in een tempfile (wel/geen open relay of geen contact). Natuurlijk worden de IP's niet allemaal tegelijkertijd gescanned, meer in de richting van 1 IP per minuut (of zelfs instelbaar door de gebruiker?).
Als de hele C-klasse range gescanned is, worden resultaten teruggestuurd. Alle open relays worden dan in een tabel gegooid met open relays en het blok wordt afgevinkt (status) als "scanned" en er wordt een datum bijgehouden wanneer dat blok voor het laatst gescanned is (en eventueel door wie (ip/username?) enzo). De reden waarom de client alle 255 resultaten verstuurd is met het oog op de toekomst (zo zou je bijv. alle "wel contact maar geen open relay" e.d. ook in aparte tabellen of zelfs in de "hoofdtabel" kunen opslaan met bijbehorende status).
De server zal om de zoveel tijd (iedere week/maand/jaar?) een blok weer vrijgeven om opnieuw gescanned te worden.
Op deze manier bouw je dus een "actieve" database met open relays op die op regelmatige basis bijgewerkt zal worden. Die zou dan weer door mailservers ge-queried kunnen worden voordat ze mail accepteren van een IP (we spelen dus zelf ORDB want wij weten het beter
Dit geintje heeft een paar "leukigheden":
• Omdat clients altijd blokken zullen krijgen uit hun eigen IP-range of dicht in de buurt daarvan blijft de belasting van "het internet" redelijk laag. Er gaat geen of weinig "intercontinentaal verkeer" en dergelijke ontstaan.
• Een open relay test is al met al misschien 200Kb aan data die op en neer naar het "slachtoffer" gaat. (Ruwe schatting, als ik er (veel) langs zit hoor ik het graag).
• De clients scannen niet meer dan X IP/s per X tijd (instelbaar, met een bepaald maximum zodat providers ook niet overbelast worden? (bijv. max 5 IP's per 10 minuten, dus 255 IP's duurt dan minimaal 8,5 uur)).
• Omdat het "distributed" is wordt het verkeer nog meer verdeeld over veel providers. Al met al zullen de "grote pijpen" het denk ik niet eens écht merken tussen alle DIvX/MP3 DowNLOadS
• De database zal redelijk actueel kunnen blijven. Tevens kun je de database makkelijk verdelen over meerdere servers / continenten omdat je toch hele bloken uitdeelt. Zo hou je de traffic met de "DB servers" ook laag (lager).
• De communicatie van de clients met de server hoeft niet veel te zijn: Hey ik wil een blok! -> Alsjeblieft 123.123.123.x is yours -> Thanx en een dag of wat later: Hey, ik heb resultaten voor je: IP's 5,6,8,12,41,78,122,146,238 en 239 (uit het blok 123.123.123.x) zijn niet door de test gekomen -> Thanx
Ook zijn er een paar nadelen:
• Werkstations en dergelijken achter een firewall enzo, die gehackt zijn of een virus hebben of whatever kunnen natuurlijk nog steeds zelf "smtp-servertje" gaan spelen en email versturen. Die detecteer je op deze manier niet. Je zou overigens, schiet me nu te binnen, clients zelf nog interne ranges (192.168.x.x, 10.x.x.x enzovoorts) kunnen laten scannen mits ze verbonden zijn met een netwerk met zulke ranges.
• Er zal "ergens" een lijst moeten komen van Open Relay servers van providers zelf. Omdat je je eigen blok(ken) uit je eigen ranges (waarschijnlijk) test is de kans groot dat je minimaal 1 server tegen komt die wél alle mail accepteert (open relay dus) maar dat alleen maar van bepaalde IP-ranges doet (eigen klanten). Waarschijnlijk kun je dit soort gegevens, voordat je ze opneemt in de database, nog even door andere clients geverifieerd worden (status: NeedVerify en die blokken weer weggeven voordat je ze op "scanned" zet). Misschien kun je dit soort dingen ook wel uit de DNS van een bepaald blok halen (MX records enzo), maar daar kom ik nu zo snel effe niet op of dat mogelijk is. Als ik daar een nachtje over geslapen heb misschien wel (het is al laat
• Er zal een (globale) toename aan internet verkeer komen mochten er flink wat clients in de omloop zijn. Dit zal echter (denk ik) maar een "tijdelijke" piek zijn (let wel: tijdelijk in de breedste zin van het woord). Afhankelijk van hoe snel je blokken opnieuw gaat uitgeven om te laten (her) controleren belast je natuurlijk "het internet". De client "verzoekjes" naar de database ("gimme a blok, i have nothing to do") kosten natuurlijk (bijna) niks als je geen blokken uitgeeft of deze "drempelwaarde" dus hoger zet en dat resulteert dus weer in een potentieele blok-scan die niet uitgevoerd hoeft te worden omdat de client geen blok ontvangt.
• Bepaalde ranges zullen "slechter" worden gescanned (ik kan me voorstellen dat onze client in de sahara en omstreken wat minder populair is). Daarvoor zou je op een gegeven moment ranges die te lang open staan meer prioriteit kunnen gaan geven (op basis van "IP-Afstand") boven ranges die al eens gescanned zijn en klaar staan om opnieuw gescanned te worden).
Conclusie / Disclaimer:
| Misschien heb ik tijdens het poepen wel een ader in mijn hoofd laten springen of heb ik een biertje teveel gehad. Misschien is dit idee wel heel dom. Het lijkt me niet onwaarschijnlijk dat ik na de eerste reply al een Een DB-tje hoeft niet al te moeilijk te zijn, de client ook niet. Al met al denk ik dat ik dit projectje (zoals ik het nu omschrijf) misschien wel in een week (of 2 | ![]() |
Een ander los ideetje: Distributed Virusscanner
Waarom in P&W en niet ergens anders (zoals Internet & Telefonie, Dutch Power Cows
Ow, en voor je met mijn idee(ën) aan de haal gaat: © ® TM 2005 by RobIII
Mooi, je hebt het gered tot het einde. Lees nu nog even een keer de eerste 2 zinnen uit dit topic aandachtig door, neem het in je op en post dan je antwoord pas.
[ Voor 30% gewijzigd door RobIII op 12-02-2005 03:31 . Reden: Smiley overkill beetje teruggebracht naar aanvaardbaar. ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij

