Страница 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 ничего не получится :pardon: , минимум 3 MAX_COUNT

Re: sshit(кто нибудь сталкивался?)

Добавлено: 2008-11-28 14:58:03
mediamag
спасибо..а я думал я чайник))) а что и где нужно изминить чтобы блочить с 1 раза?

Re: sshit(кто нибудь сталкивался?)

Добавлено: 2008-11-28 15:05:19
hizel
ну вы явно не программист :-D

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
пАрАноя :-D

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
Чем рихтовать какой-то софт, проще наваять скрипт-автобанилку, думаю.