Защита на SSH от brute force атаки в Debian

Настройки свързвани с конфигуриране на вътрешна мрежа и Интернет.

Модератори: Freya, Kulu Ngile

Защита на SSH от brute force атаки в Debian

Мнениеот Kulu Ngile » Чет 29, Мар, 2007 4:27

Попаднах на един скрип, който много ми допадна и реших да го споделя с вас. Променил съм доста неща в скрипта, който взех от блога на Fernando Duran. Скрипта, който любезният господин е написал е за Red Hat и съответно промените бяха нужни, а и с някои негови подходи не бях съгласен ..... та ето го и съответният скрипт
Код за потвърждение: Избери целия код
#!/bin/bash
#  Задал съм пътя поради простата причина, че iptables при мен не е
#  в /sbin, а е в /usr/local/sbin, но при така зададеният път
#  няма да имате проблем
PATH=/usr/sbin:/sbin:/bin:/usr/bin:/usr/local/sbin
ipt="iptables"

#  Създаваме файл с всички ip адреси, които може да са дублирани
#  при всяко изпълнение на скрипта
all_ip=/tmp/blacklist
touch $all_ip

#  Създаваме файл, който ще служи за буфер при обединение
#  на старите и новите правила
merge_ip=/tmp/blackmerge
touch $merge_ip

#  Създаваме списък с неповтаряемите ip-та
black_ip=/var/log/blacklist
touch $black_ip

#   Извличаме информация за неуспешните оптити за влизане през ssh
#   от лога /var/log/auth.log
grep sshd /var/log/auth.log | grep Failed | awk '{print $11}' |sort|uniq| grep "^[0-9]"> $all_ip
grep sshd /var/log/auth.log | grep invalid | awk '{print $13}' |sort|uniq >> $all_ip

#  Премахваме повтарящите се ip-та
echo -n “” > $merge_ip
cat $all_ip | sort | uniq > $merge_ip
cat $black_ip | sort | uniq >> $merge_ip
cat $merge_ip | sort | uniq > $black_ip

#  Вмъкваме всички нови ip-та в iptables
lines=`$ipt -L INPUT -n | wc -l`
rules=$(($lines -1))
file=`cat $black_ip`
for ip in $file; do
$ipt -I INPUT $rules -s $ip -j DROP
echo "$ip banned"
done
$ipt -A INPUT -p tcp --dport 22 --syn -m limit --limit 1/m --limit-burst 2 -j ACCEPT
$ipt -A INPUT -p tcp --dport 22 --syn -j DROP

Хубаво е скрипта да се изпълнява периодично или да се сложи в crontab за автоматично изпълнение през определен период.
Изхода при изпълнение на скрипта ще бъде нещо от сорта на
Код за потвърждение: Избери целия код
debian:/home/gaara/works/firewall# sh ../../ban
192.168.0.27 banned
192.168.0.28 banned
192.168.0.29 banned
192.168.0.30 banned
debian:/home/gaara/works/firewall#

Код за потвърждение: Избери целия код
debian:/home/gaara/works/firewall# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       0    --  192.168.0.27        0.0.0.0/0
DROP       0    --  192.168.0.28       0.0.0.0/0
DROP       0    --  192.168.0.29        0.0.0.0/0
DROP       0    --  192.168.0.30         0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 flags:0x17/0x02 limit: avg 1/min burst 2
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 flags:0x17/0x02

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
debian:/home/gaara/works/firewall#


И нека бъде светлина :oops:

Източник: Основен
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 2:04
Местоположение: София

Мнениеот tishovo » Сря 10, Сеп, 2008 16:27

Мисля че няма да е лошо, примерно след реда където се дифинира ipt="iptables" да се добави и едно редче с $ipt -F INPUT. В противен случай като се изпълнява често скрипта правилата ще се наслагват и резултата от iptables -nL ще е един дълъг лист от повтарящи се "абзаци". Лошото е че това ще ни разкара всички правила от Input веригата ако имаме такива, независимо добавени, било то на ръка или от някой друг скрипт.
tishovo
Участник
 
Мнения: 4
Регистриран на: Сря 10, Сеп, 2008 16:12

Мнениеот Kulu Ngile » Сря 10, Сеп, 2008 16:51

Може да се направи така, че само новите IP-та да се добавя (примерно с diff)... варианти много, но това е само базисен скрипт, който може лесно да се модифицира.
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 2:04
Местоположение: София

Мнениеот tishovo » Сря 10, Сеп, 2008 17:15

Да, добро си е скриптчето, но нямаш право на грешка :) . Примерно от маскирана мрежа се опитваш да достъпиш сървър с реален адрес и при една грешка на user/pass gateway-а на въпросната мрежа попада в auth.log-a на сървъра като Failed и след едно изпълнение на скрипта гледаш така :shock: , докато се усетиш че ти е заминал gateway-а пробваш от друг компютър от мрежата и пак гледаш така :shock: Яко :mrgreen:
tishovo
Участник
 
Мнения: 4
Регистриран на: Сря 10, Сеп, 2008 16:12

Мнениеот Kulu Ngile » Сря 10, Сеп, 2008 17:36

Тука си много прав, а си сбъркал, а... бой, стригане... няма да довършвам фразата :D
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 2:04
Местоположение: София

Мнениеот tishovo » Сря 10, Сеп, 2008 18:09

Алтернативата на този скрипт е denyhosts. Тази програмка пак чете от auth.log, но не ползва iptables, а директно вкарва "лошите" в /etc/hosts.deny. Имаш право на една грешка ако не бъркам, а освен това и си правиш файлче /var/lib/denyhosts/allowed-hosts в което описваш мрежите или IP-тата които не искаш да бъдат баннвани. Доста е гъвкава.
tishovo
Участник
 
Мнения: 4
Регистриран на: Сря 10, Сеп, 2008 16:12

Мнениеот mylin » Пет 12, Сеп, 2008 16:07

срам не срам ще питам:
къде да търся лог файла? :shock:
(за сега опита ми в конзолата е само сopy / paste и с nano смених някои буквички)

в /sbin има iptables - това ли е то и ако е това как се отваря за да го прочета
при open with избирам текстов редактор и виждам само въпросителни (��$)

може да е смешно но не знам как, сори
Аватар
mylin
Участник
 
Мнения: 176
Регистриран на: Нед 10, Авг, 2008 15:43

Мнениеот Kulu Ngile » Пет 12, Сеп, 2008 16:55

/var/log, но ще ти трябват root права, инче греда :)
По повод отварянето на файла... след като се логнеш с root в конзолата, пишеш: gedit /var/log/името_на_лога (това е, ако си gnome... kedit май беше в КДЕ)
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 2:04
Местоположение: София

Мнениеот mylin » Пон 15, Сеп, 2008 1:08

ами до тук я докарах само
Код за потвърждение: Избери целия код
# kedit /var/log/lynis.log
bash: kedit: command not found

нещо трябва да инсталирам ли? :roll:
Аватар
mylin
Участник
 
Мнения: 176
Регистриран на: Нед 10, Авг, 2008 15:43

Мнениеот Azieth » Пон 15, Сеп, 2008 8:02

mylin написа:ами до тук я докарах само
Код за потвърждение: Избери целия код
# kedit /var/log/lynis.log
bash: kedit: command not found

нещо трябва да инсталирам ли? :roll:

Нямаш Kedit :)
пробрай с
kwrite /var/log/lynix.log
или
kate /var/log/lynix.log
Customix.org - GNU/Linux Desktop Customization
"If Linux doesn't have the solution, you have the wrong problem."
EvilSide is now Azieth
Аватар
Azieth
Участник
 
Мнения: 135
Регистриран на: Вто 25, Сеп, 2007 21:01

Мнениеот mylin » Вто 16, Сеп, 2008 10:35

резултат 1:0 за компа :)
Код за потвърждение: Избери целия код
# kate /var/log/lynis.log
Invalid MIT-MAGIC-COOKIE-1 keykate: cannot connect to X server :0.0
и с kate и kwrite все ми дава това MAGIC-COOKIE какво е пък това?
Аватар
mylin
Участник
 
Мнения: 176
Регистриран на: Нед 10, Авг, 2008 15:43

Мнениеот phantomlord » Вто 16, Сеп, 2008 12:24

Опитваш се да отвориш графична програма с акаунта на root, а на твоя root му е забранено да стартира графични приложения. Затова се получава. Варианти: да отвориш файла с nano като root, да отвориш файла с графична програма от потребителския профил (без право на запис), да конфигурираш sudo за потребителя си, да позволиш на root да ползва графични приложения и да влиза в графичната среда. За всички тези варианти е писано във форума. Най-лесния вариант е да ползваш nano:
# nano /var/log/lynis.log
Hear the cry of War
Louder than before
With his sword in hand
to control the land
Crushing metal strikes
on this frightening night
Fall onto your knees
For the Phantom Lord
Аватар
phantomlord
Шеф
 
Мнения: 1517
Регистриран на: Пет 03, Мар, 2006 2:16
Местоположение: София


Назад към Мрежови настройки

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта

cron