Ora rahasia manawa Internet minangka lingkungan sing ora sopan. Sanalika sampeyan mundhakaken server, iku enggal ngalami serangan massive lan sawetara scan. Tuladhane
Tarpit minangka port trap sing digunakake kanggo alon-alon sambungan sing mlebu. Yen sistem pihak katelu nyambung menyang port iki, sampeyan ora bakal bisa kanthi cepet nutup sambungan. Dheweke kudu mbuwang sumber daya sistem lan ngenteni nganti wektu sambungan entek, utawa mungkasi kanthi manual.
Paling asring, tarpits digunakake kanggo perlindungan. Teknik iki pisanan dikembangake kanggo nglindhungi saka cacing komputer. Lan saiki bisa digunakake kanggo ngrusak urip spammer lan peneliti sing melu mindhai kabeh alamat IP berturut-turut (conto ing HabrΓ©:
Salah sawijining administrator sistem sing jenenge Chris Wellons ketoke kesel nonton aib iki - lan dheweke nulis program cilik.
Instalasi sarana:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpit sing dileksanakake kanthi bener bakal njupuk luwih akeh sumber daya saka panyerang tinimbang sampeyan. Nanging dudu masalah sumber daya. Pengarang
Ing mode operasi, server Endlessh kudu diinstal ing port biasanipun 22, ngendi hooligans ngalahake en masse. Rekomendasi keamanan standar tansah menehi saran kanggo mindhah SSH menyang port sing beda, sing langsung nyuda ukuran log kanthi urutan gedhene.
Chris Wellons ujar manawa program kasebut nggunakake siji paragraf saka spesifikasi kasebut SSH-
.
Iki persis apa program Endlessh: iku ngirim telas stream saka data kui acak, sing tundhuk karo RFC 4253, yaiku, ngirim sadurunge otentikasi, lan saben baris diwiwiti karo SSH-
lan ora ngluwihi 255 karakter, kalebu karakter pungkasan baris. UmumΓ©, kabeh miturut standar.
Kanthi gawan, program ngenteni 10 detik ing antarane ngirim paket. Iki nyegah klien supaya ora ana wektu, supaya klien bakal kepepet ing salawas-lawase.
Wiwit data dikirim sadurunge kriptografi ditrapake, program kasebut gampang banget. Ora perlu ngleksanakake cipher lan ndhukung sawetara protokol.
Penulis nyoba kanggo mesthekake yen sarana nggunakake minimal sumber daya lan bisa rampung unnoticed ing mesin. Ora kaya antivirus modern lan "sistem keamanan" liyane, ora kudu alon-alon komputer sampeyan. Dheweke bisa nyilikake lalu lintas lan konsumsi memori amarga implementasine piranti lunak sing rada licik. Yen mung ngluncurake proses sing kapisah ing sambungan anyar, mula panyerang potensial bisa miwiti serangan DDoS kanthi mbukak pirang-pirang sambungan kanggo mbuwang sumber daya ing mesin kasebut. Siji utas saben sambungan uga dudu pilihan sing paling apik, amarga kernel bakal mbuang sumber daya kanggo ngatur benang.
Mulane Chris Wellons milih pilihan sing paling entheng kanggo Endlessh: server siji-threaded poll(2)
, ngendi klien ing trap nggunakake sakbenere ora sumber daya ekstra, ora ngetang obyek soket ing kernel lan liyane 78 bita kanggo nelusuri ing Endlessh. Supaya ora kudu nyedhiakke nampa lan ngirim buffer kanggo saben klien, Endlessh mbukak soket akses langsung lan nerjemahake paket TCP langsung, bypassing meh kabeh sistem operasi TCP / IP tumpukan. Buffer mlebu ora dibutuhake kabeh, amarga kita ora kasengsem ing data sing mlebu.
Penulis ngandika sing ing wektu kang program
import asyncio
import random
async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()
asyncio.run(main())
Asyncio becik kanggo nulis tarpits. Contone, pancing iki bakal beku Firefox, Chrome, utawa klien liyane sing nyoba nyambung menyang server HTTP nganti pirang-pirang jam:
import asyncio
import random
async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()
asyncio.run(main())
Tarpit minangka alat sing apik kanggo ngukum pembuli online. Bener, ana sawetara risiko, ing nalisir, narik kawigaten manungsa waΓ© menyang prilaku mboten umum saka server tartamtu. sopo wae
Hub:
Python, Keamanan informasi, Perangkat Lunak, Administrasi sistem
Tags:
SSH, Endlessh, tarpit, tarpit, trap, asycio
Trap (tarpit) kanggo sambungan SSH mlebu
Ora rahasia manawa Internet minangka lingkungan sing ora sopan. Sanalika sampeyan mundhakaken server, iku enggal ngalami serangan massive lan sawetara scan. Tuladhane
Tarpit minangka port trap sing digunakake kanggo alon-alon sambungan sing mlebu. Yen sistem pihak katelu nyambung menyang port iki, sampeyan ora bakal bisa kanthi cepet nutup sambungan. Dheweke kudu mbuwang sumber daya sistem lan ngenteni nganti wektu sambungan entek, utawa mungkasi kanthi manual.
Paling asring, tarpits digunakake kanggo perlindungan. Teknik iki pisanan dikembangake kanggo nglindhungi saka cacing komputer. Lan saiki bisa digunakake kanggo ngrusak urip spammer lan peneliti sing melu mindhai kabeh alamat IP berturut-turut (conto ing HabrΓ©:
Salah sawijining administrator sistem sing jenenge Chris Wellons ketoke kesel nonton aib iki - lan dheweke nulis program cilik.
Instalasi sarana:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpit sing dileksanakake kanthi bener bakal njupuk luwih akeh sumber daya saka panyerang tinimbang sampeyan. Nanging dudu masalah sumber daya. Pengarang
Ing mode operasi, server Endlessh kudu diinstal ing port biasanipun 22, ngendi hooligans ngalahake en masse. Rekomendasi keamanan standar tansah menehi saran kanggo mindhah SSH menyang port sing beda, sing langsung nyuda ukuran log kanthi urutan gedhene.
Chris Wellons ujar manawa program kasebut nggunakake siji paragraf saka spesifikasi kasebut SSH-
.
Iki persis apa program Endlessh: iku ngirim telas stream saka data kui acak, sing tundhuk karo RFC 4253, yaiku, ngirim sadurunge otentikasi, lan saben baris diwiwiti karo SSH-
lan ora ngluwihi 255 karakter, kalebu karakter pungkasan baris. UmumΓ©, kabeh miturut standar.
Kanthi gawan, program ngenteni 10 detik ing antarane ngirim paket. Iki nyegah klien supaya ora ana wektu, supaya klien bakal kepepet ing salawas-lawase.
Wiwit data dikirim sadurunge kriptografi ditrapake, program kasebut gampang banget. Ora perlu ngleksanakake cipher lan ndhukung sawetara protokol.
Penulis nyoba kanggo mesthekake yen sarana nggunakake minimal sumber daya lan bisa rampung unnoticed ing mesin. Ora kaya antivirus modern lan "sistem keamanan" liyane, ora kudu alon-alon komputer sampeyan. Dheweke bisa nyilikake lalu lintas lan konsumsi memori amarga implementasine piranti lunak sing rada licik. Yen mung ngluncurake proses sing kapisah ing sambungan anyar, mula panyerang potensial bisa miwiti serangan DDoS kanthi mbukak pirang-pirang sambungan kanggo mbuwang sumber daya ing mesin kasebut. Siji utas saben sambungan uga dudu pilihan sing paling apik, amarga kernel bakal mbuang sumber daya kanggo ngatur benang.
Mulane Chris Wellons milih pilihan sing paling entheng kanggo Endlessh: server siji-threaded poll(2)
, ngendi klien ing trap nggunakake sakbenere ora sumber daya ekstra, ora ngetang obyek soket ing kernel lan liyane 78 bita kanggo nelusuri ing Endlessh. Supaya ora kudu nyedhiakke nampa lan ngirim buffer kanggo saben klien, Endlessh mbukak soket akses langsung lan nerjemahake paket TCP langsung, bypassing meh kabeh sistem operasi TCP / IP tumpukan. Buffer mlebu ora dibutuhake kabeh, amarga kita ora kasengsem ing data sing mlebu.
Penulis ngandika sing ing wektu kang program
import asyncio
import random
async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()
asyncio.run(main())
Asyncio becik kanggo nulis tarpits. Contone, pancing iki bakal beku Firefox, Chrome, utawa klien liyane sing nyoba nyambung menyang server HTTP nganti pirang-pirang jam:
import asyncio
import random
async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()
asyncio.run(main())
Tarpit minangka alat sing apik kanggo ngukum pembuli online. Bener, ana sawetara risiko, ing nalisir, narik kawigaten manungsa waΓ© menyang prilaku mboten umum saka server tartamtu. sopo wae
Source: www.habr.com