bash, perl, python и прочие интерпретируемые скрипты
	Модератор: Gen1us2k
	
		
		
		
			- 
				
								Gen1us2k							
 
						- Модератор

 			
		- Сообщения: 771
 		- Зарегистрирован: 02 мар 2010, 16:13
 		
		
						
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Gen1us2k » 27 июл 2011, 14:00
			
			
			
			
			В общем. Стояла задача мониторить коннекты, и если их больше какого-то числа, то банить ип.
Был найден какой-то скрипт, который был с конфигом и прочим не нужным бредом.
Чуть чуть работы напильником, и он готов.
Суть проста. Определяет сколько коннектов с ипа, и если их больше, то лочит его.
Код: Выделить всё
#!/bin/sh
# Needed variables and 
IPT="/sbin/iptables"	# Iptables
NO_OF_CONNECTIONS=2	# How many connections define a bad IP? Indicate that here.
BAN_PERIOD=300		# Number of seconds the banned ip should remain in blacklist.
# Function for unbanning blacklisted ip.
unbanip()
{
	UNBAN_SCRIPT=`mktemp /tmp/unban.XXXXXXXX`
	TMP_FILE=`mktemp /tmp/unban.XXXXXXXX`
	UNBAN_IP_LIST=`mktemp /tmp/unban.XXXXXXXX`
	echo '#!/bin/sh' > $UNBAN_SCRIPT
	echo "sleep $BAN_PERIOD" >> $UNBAN_SCRIPT
	while read line; do
		echo "$IPT -D INPUT -s $line -j DROP" >> $UNBAN_SCRIPT
		echo $line >> $UNBAN_IP_LIST
	done < $BANNED_IP_LIST
	echo "rm -f $UNBAN_SCRIPT" >> $UNBAN_SCRIPT
	echo "rm -f $UNBAN_IP_LIST" >> $UNBAN_SCRIPT
	echo "rm -f $TMP_FILE" >> $UNBAN_SCRIPT
	. $UNBAN_SCRIPT &
}
TMP_PREFIX='/tmp/ddos'
TMP_FILE="mktemp $TMP_PREFIX.XXXXXXXX"
BANNED_IP_LIST=`$TMP_FILE`
BAD_IP_LIST=`$TMP_FILE`
netstat -ntu | grep '^[AP]' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST
cat $BAD_IP_LIST
IP_BAN_NOW=0
while read line; do
	CURR_LINE_CONN=$(echo $line | cut -d" " -f1)
	CURR_LINE_IP=$(echo $line | cut -d" " -f2)
	if [ $CURR_LINE_CONN -lt $NO_OF_CONNECTIONS ]; then
		break
	fi
	IP_BAN_NOW=1
	echo $CURR_LINE_IP >> $BANNED_IP_LIST
	$IPT -I INPUT -s $CURR_LINE_IP -j DROP
done < $BAD_IP_LIST
if [ $IP_BAN_NOW -eq 1 ]; then
	unbanip
fi
rm -f $TMP_PREFIX.*
 
			
			
									
									
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
 
						 
		 
		 
				
			 
	
	Gen1us2k
 
			
	
		
		
		
			- 
				
								Raven							
 
						- Бородатый сис

 			
		- Сообщения: 2797
 		- Зарегистрирован: 03 мар 2010, 15:12
 		
		
											- ОС: RHEL 8
 
												- Откуда: Из серверной
 
							
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Raven » 27 июл 2011, 14:08
			
			
			
			
			Gen1us2k
 
 
			
			
									
									Я не злопамятный, я просто часто ковыряю логи
						 
		 
		 
				
			 
	
	Raven
 
				
		
		
		
			- 
				
								Infernal Flame							
 
						- Злой Модер
 			
		- Сообщения: 1796
 		- Зарегистрирован: 03 мар 2010, 11:25
 		
		
											- ОС: Centos 7
 
																	
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Сообщение
					
								 Infernal Flame » 27 июл 2011, 14:08
			
			
			
			
			Отлично! Примем на вооружение  

 
			
			
									
									

Work: Centos 7 х 'all Servers'
 
						 
		 
		 
				
			 
	
	Infernal Flame
 
				
		
		
		
			- 
				
								Gen1us2k							
 
						- Модератор

 			
		- Сообщения: 771
 		- Зарегистрирован: 02 мар 2010, 16:13
 		
		
						
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Gen1us2k » 27 июл 2011, 14:10
			
			
			
			
			ах да.
NO_OF_CONNECTIONS=2     # How many connections define a bad IP? Indicate that here.
BAN_PERIOD=300          # Number of seconds the banned ip should remain in blacklist.
тут выставьте 

 когда тестил, то, где больше 2х коннектов он рубил
 
			
			
									
									
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
 
						 
		 
		 
				
			 
	
	Gen1us2k
 
				
		
		
		
			- 
				
								Infernal Flame							
 
						- Злой Модер
 			
		- Сообщения: 1796
 		- Зарегистрирован: 03 мар 2010, 11:25
 		
		
											- ОС: Centos 7
 
																	
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Сообщение
					
								 Infernal Flame » 27 июл 2011, 14:11
			
			
			
			
			Gen1us2k
ну читать-то умеем 

 не переживай  

 
			
			
									
									

Work: Centos 7 х 'all Servers'
 
						 
		 
		 
				
			 
	
	Infernal Flame
 
				
		
		
		
			- 
				
								Gen1us2k							
 
						- Модератор

 			
		- Сообщения: 771
 		- Зарегистрирован: 02 мар 2010, 16:13
 		
		
						
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Gen1us2k » 27 июл 2011, 14:21
			
			
			
			
			Ну вы то да. а вот за других не особо уверен 

 
			
			
									
									
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
 
						 
		 
		 
				
			 
	
	Gen1us2k
 
				
		
		
		
			- 
				
								Gen1us2k							
 
						- Модератор

 			
		- Сообщения: 771
 		- Зарегистрирован: 02 мар 2010, 16:13
 		
		
						
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Gen1us2k » 27 июл 2011, 14:35
			
			
			
			
			ой. греп другой 

 Старая не много вариация скрипта.
grep -v '^[AP]' вырезает первые 2 строки нетстата
 
			
			
									
									
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
 
						 
		 
		 
				
			 
	
	Gen1us2k
 
				
		
		
		
			- 
				
								Raven							
 
						- Бородатый сис

 			
		- Сообщения: 2797
 		- Зарегистрирован: 03 мар 2010, 15:12
 		
		
											- ОС: RHEL 8
 
												- Откуда: Из серверной
 
							
						
		
		
						
						
													
							
						
									
						Сообщение
					
								 Raven » 27 июл 2011, 14:39
			
			
			
			
			Gen1us2k
Во! Чуть фуфел не впарил  

 
			
			
									
									Я не злопамятный, я просто часто ковыряю логи
						 
		 
		 
				
			 
	
	Raven