31.08.2009 07:52
OlegON
 
Занятно... Никогда не интересовался, кто сканирует порты моего внешнего IP. Оказалось зря. Вчера завел заглушку на xinetd, чтобы блокировала сканирующих. У меня нет ssh, соответственно, никто на 22 порт подключаться не должен. Делаем в xinet.conf
Цитата:
service fake_ssh
{
disable = no
protocol = tcp
port = 22
type = UNLISTED
socket_type = stream
wait = no
user = root
server = /usr/scripts/block_ip
server_args = 22
log_on_success = HOST
}
и в /usr/scripts/block_ip
Цитата:
#!/bin/bash
REMOTE_PORT=$1
echo $REMOTE_HOST BANNED! GET OUT!
echo
/sbin/iptables -A INPUT -s $REMOTE_HOST/255.255.255.255 -j DROP
echo $REMOTE_HOST:$REMOTE_PORT>>/home/blocked_hosts
с вечера уже улов...
Цитата:
cat blocked_hosts
211.38.137.44:22
77.92.142.204:22
190.176.228.237:22
117.14.188.100:22
122.89.7.49:22
92.149.17.226:22
202.39.210.120:22
114.39.231.24:22
114.47.70.200:22
31.08.2009 07:54
OlegON
 
Поясню, что скрипт полностью блокирует (через drop, т.е. соединение "повисает") IP после попытки подключения на 22 порт по tcp/ip, таким образом перебор портов, как правило, блокируется.
Ваши замечания/пожелания/предложения?
31.08.2009 16:36
Pyatak
 
Хм, интересно, надо будет попробовать. А на rdp порт?
31.08.2009 16:40
OlegON
 
Цитата:
Pyatak Хм, интересно, надо будет попробовать. А на rdp порт?
И на него :) Я просто тут список не разглашаю, но у меня портов таких штук 5-7. На самом деле у xinetd вроде у самого есть блокирующий механизм, но вроде как блокирует только на самого себя и рвет соединение, а тут соединение даже отзывается, но потом злобно глотает вообще все пакеты :) Соединение висит. Хочешь попробовать, как работает - ткнись на комп "хранилища" телнетом... ;) Пока в основном Корея и Тайвань палятся... Я себе модифицировал block_ip:
Цитата:
#!/bin/bash
REMOTE_PORT=$1
COUNTRY=`geoiplookup $REMOTE_HOST`
EVENT=`date`
echo $REMOTE_HOST BANNED! GET OUT!
echo
/sbin/iptables -A INPUT -s $REMOTE_HOST/255.255.255.255 -j DROP
echo $EVENT -- $REMOTE_HOST:$REMOTE_PORT - $COUNTRY>>/home/ftp/exchange/blocked_hosts
и по крону утром себе cat его и удаляю...
31.08.2009 18:36
OlegON
 
Еще расширил :) Определяет, кто ломился с точностью до города:
Цитата:
#!/bin/bash
REMOTE_PORT=$1
echo $REMOTE_HOST BANNED! GET OUT!
echo
/sbin/iptables -A INPUT -s $REMOTE_HOST/255.255.255.255 -j DROP
EVENT=`date`
COUNTRY=`/usr/scripts/geoip_country $REMOTE_HOST`
CITY=`/usr/scripts/geoip_city $REMOTE_HOST`
echo $EVENT -- $REMOTE_HOST:$REMOTE_PORT - $COUNTRY :: $CITY>>/home/ftp/exchange/blocked_hosts
Цитата:
oops scripts # cat geoip_city
#!/bin/bash
links -dump ?ip=$1 | grep "City" | awk '{print $2}'
Цитата:
oops scripts # cat geoip_country
#!/bin/bash
links -dump ?ip=$1 | grep "Country" | awk '{print $2}'
07.10.2009 09:01
OlegON
 
Последние версии:
Цитата:
#!/bin/bash
REMOTE_PORT=$1
echo $REMOTE_HOST BANNED! GET OUT!
echo
if [ $REMOTE_HOST != "127.0.0.1" ]
then
/sbin/iptables -A INPUT -s $REMOTE_HOST/255.255.255.255 -j DROP
fi
EVENT=`date`
COUNTRY=`/usr/scripts/geoip_country $REMOTE_HOST`
CITY=`/usr/scripts/geoip_city $REMOTE_HOST`
echo $EVENT -- $REMOTE_HOST:$REMOTE_PORT - $COUNTRY :: $CITY>>/home/ftp/exchange/blocked_hosts
Цитата:
oops scripts # cat geoip_city
#!/bin/bash
st=`links -http-proxy localhost:8123 -width 200 -dump ?ip=$1 | grep "City"`
echo $st | sed -e 's/Region.*$//' | sed -e 's/.*City //';
Цитата:
oops scripts # cat geoip_country
#!/bin/bash
st=`links -http-proxy localhost:8123 -width 200 -dump ?ip=$1 | grep "Country"`
echo $st | sed -e 's/Country Code.*$//' | sed -e 's/.*Country //' | sed -e 's/ //';
02.01.2018 15:31
OlegON
 
В новых версиях xinetd (с поддержкой IPv6) требуется в каждом сервисе (defaults не подходит)
указывать
Код:
flags           = IPv4
иначе все адреса, даже IPv4 идут, как IPv6, зачем напрочь не понимаю...
Кстати, глобально такое поведение можно отключить
net.ipv6.bindv6only=1 в sysctl.conf
Часовой пояс GMT +3, время: 13:06.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.