Страница 1 из 1
sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 14:24:10
mediamag
Поставил этот порт ..настроил ....работает хорошо...но блочит только после 3 неправельных логинов зараза...ставил и 2 и 1...в логах пишет типа block not working...тока меняю на 3 и сразу работает...может ктото встречался с данной проблемой или ктото чето подскажет? Заранее благодарен.
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 14:47:51
paradox
опа
а что за прогулина такая?
что разве в ссш неззя просто настроить что бы пускало токо после первого?
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 14:54:31
hizel
смотрим код
Код: Выделить всё
while (<>) {
chomp;
if (/failed .*from (\d+\.\d+\.\d+\.\d+|[\da-fA-F:]+)/i ) { # IPv4 & IPv6
$ip = $1;
1. if ($list{$ip}{name}) {
2. if ($list{$ip}{n} >= $MAX_COUNT) {
3. syslog(LOG_ERR, "block for $ip not working!");
} else {
6. $list{$ip}{n}++;
print "$ip found $list{$ip}{n} times\n";
7. if (($list{$ip}{n} >= $MAX_COUNT) &&
(time() - $list{$ip}{time} <= $WITHIN_TIME)) {
# Let's block it :)
# Time should be measured from the trigging
# login attempt, and not the 1st occurance
$list{$ip}{time} = time();
if($FIREWALL_TYPE =~ /^ipfw$/i)
{
# Assign a rule number and do the actual block
$list{$ip}{rulenr} = $ipfw_rulenr;
system("$IPFW_CMD add $ipfw_rulenr deny tcp from $ip to me 21,22 > /dev/null");
syslog(LOG_ERR, "BLOCKING $ip, rule $ipfw_rulenr\n");
$ipfw_rulenr++;
if ($ipfw_rulenr > $IPFW_RULE_END) { $ipfw_rulenr = $IPFW_RULE_START; }
} elsif ($FIREWALL_TYPE =~ /^ipfw2$/i) {
system("$IPFW2_CMD table $IPFW2_TABLE_NO add $ip");
syslog(LOG_ERR, "BLOCKING $ip with ipfw2\n");
} elsif ($FIREWALL_TYPE =~ /^pf$/i) {
system("$PFCTL_CMD -t $PF_TABLE -Tadd $ip");
syslog(LOG_ERR, "BLOCKING $ip with pf\n");
}
}
}
4. } else {
# Add new entry in hash
$list{$ip}{name} = $ip; # ip address to watch
5. $list{$ip}{n} = 1; # first occurance
$list{$ip}{time} = time(); # time of first occurance
##print "keeping an eye on $ip...\n";
}
}
}
при первом вхождении неправильного логина с ip, попадаем из 1. в 4., создаем запись в 5. ставим 1-чку кол-ва неправильных логинов, никого не блокируем
следовательно по одному неправильному логину, ничего не будет блочится при таком алгоритме
при следующем (втором) вхождении того же ip попадаем в 1. и далее в 2. где проверяется если кол-во вхождений, тут если стоит ограничение на MAX_COUNT = 1
вылетаем по условию, если стоит ограничение в 2(два) неправильных логина то после 6. не проходим условие 7. и потом при третьем вхождении того же ip
ломаемся на условии 2.
Пы.Сы. кароче не изменяя sshit ничего не получится

, минимум 3 MAX_COUNT
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 14:58:03
mediamag
спасибо..а я думал я чайник))) а что и где нужно изминить чтобы блочить с 1 раза?
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 15:05:19
hizel
ну вы явно не программист
sshit v 0.5 обезаем последний while до такого вида
Код: Выделить всё
while (<>) {
chomp;
if (/failed .*from (\d+\.\d+\.\d+\.\d+|[\da-fA-F:]+)/i ) { # IPv4 & IPv6
$ip = $1;
# Add new entry in hash
$list{$ip}{name} = $ip; # ip address to watch
$list{$ip}{n} = 1; # first occurance
$list{$ip}{time} = time(); # time of first occurance
##print "keeping an eye on $ip...\n";
if($FIREWALL_TYPE =~ /^ipfw$/i)
{
# Assign a rule number and do the actual block
$list{$ip}{rulenr} = $ipfw_rulenr;
system("$IPFW_CMD add $ipfw_rulenr deny tcp from $ip to me 21,22 > /dev/null");
syslog(LOG_ERR, "BLOCKING $ip, rule $ipfw_rulenr\n");
$ipfw_rulenr++;
if ($ipfw_rulenr > $IPFW_RULE_END) { $ipfw_rulenr = $IPFW_RULE_START; }
} elsif ($FIREWALL_TYPE =~ /^ipfw2$/i) {
system("$IPFW2_CMD table $IPFW2_TABLE_NO add $ip");
syslog(LOG_ERR, "BLOCKING $ip with ipfw2\n");
} elsif ($FIREWALL_TYPE =~ /^pf$/i) {
system("$PFCTL_CMD -t $PF_TABLE -Tadd $ip");
syslog(LOG_ERR, "BLOCKING $ip with pf\n");
}
}
}
MAX_COUNT при таком варианте не учитывается
Пы.Сы. не тестировалось, применять с осторожностью :/
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 15:17:05
hizel
не учитывается при закрытии ip, но учитывается при открытии

......
гм, хотя, эээ, вобщем алгартимик то нада еще подправить,
а чем вам три неправильные попытки не подходят? :/
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 15:26:54
manefesto
смешной ты...
почему 3?
да блин....меня три дня сломать пытались.....около 1000 попыток залогиниться...
у меня newsyslog запарился тарить логи
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2008-11-28 15:37:49
hizel
пАрАноя

Re: sshit(кто нибудь сталкивался?)
Добавлено: 2013-10-18 23:43:14
Ogureccc
Та же хрень, кореец какой то брутфорсит сЦуко уже 2 дня но ошиба sshit: Block for ip "IP" is not working!
Re: sshit(кто нибудь сталкивался?)
Добавлено: 2013-10-19 8:04:01
Bayerische
Чем рихтовать какой-то софт, проще наваять скрипт-автобанилку, думаю.