Скажи «Нет!» взломщику
Защищаем компьютер от проникновения путём подбора пароля
Устав от того, что ко мне на компьютер ломятся всякие придурки юные кулхацкеры, я решил принять меры. Товарищи кулхацкеры лезут в систему с трёх сторон: Путем подбора пароля на SSH. Путем подбора пароля на FTP. Пытаясь использовать компьютер в качестве релея (это уже спамеры). Есть и другие поползновения (например, попытки достучаться до MySQL, к которому [...]
← Вернуться к полной версии записи «Скажи «Нет!» взломщику»…
Автор: Vladimir; опубликовано в: Безопасность; метки: iptables, Linux, swatch, безопасностьИюн
2008
Комментарии к статье «Скажи «Нет!» взломщику» (15) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Скажи «Нет!» взломщику»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Бонус: парочка скриптов для анализа логов.
if [ x$1 = x ]; then
FILE=/var/log/auth.log
else
FILE=$1
fi
cat $FILE | grep " sshd\[" > /tmp/sshd.log
# Левые пользователи
cat /tmp/sshd.log | grep "Invalid user " | awk '{ print $10 }' | sort | uniq > /tmp/sshd_user
# Неверные пароли для существующих пользователей
cat /tmp/sshd.log | grep -E "Failed password for [a-zA-Z0-9_-]+ from " | awk '{ print $11 }' | sort | uniq > /tmp/sshd_pass
# Кто нас проверял на наличие SSH
cat /tmp/sshd.log | grep "Did not receive" | awk '{ print $12 }' | sort | uniq > /tmp/sshd_noident
[ -s /tmp/sshd_user ] && echo "Intruders" && cat /tmp/sshd_user
[ -s /tmp/sshd_pass ] && echo "Wrong password" && cat /tmp/sshd_pass
[ -s /tmp/sshd_noident ] && echo "No identification string" && cat /tmp/sshd_noident
rm -f /tmp/sshd.log /tmp/sshd_user /tmp/sshd_pass /tmp/sshd_name /tmp/sshd_noident
exit 0
vsftpd):if [ x$1 = x ]; then
FILE=/var/log/vsftpd.log
else
FILE=$1
fi
# cat $FILE | grep "FAIL LOGIN: Client" | awk '{ print $12 }' | sed s/\"//g | sort | uniq
cat $FILE | grep -E -o 'FAIL LOGIN: Client "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"' | awk '{ print $4 }' | sed 's/"//g' | sort | uniq
exit 0
Courier):if [ x$1 = x ]; then
FILE=/var/log/mail.err
else
FILE=$1
fi
cat $FILE | grep relay | awk '{ print $6 }' | sed s/error,relay=::ffff:// | sed s/,.*// | sort | uniq
exit 0
Postfix):if [ x$1 = x ]; then
FILE=/var/log/mail.log
else
FILE=$1
fi
cat $FILE | grep -o -E '\[[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\]:' | grep -o -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq
exit 0
Надеюсь, кому-нибудь пригодится.
scripts.tar.bz2
[...] Пример подобного скрипта я уже приводил в статье «Скажи “Нет!” взломщику». Вся почта хранилась на рабочих станциях сотрудников, [...]
как вариант против кул-хацкеров из рецептов от одного знакомого админа: запускаем sshd на каком-то другом порту 1234, а за коннект в 22му сразу в blacklist. очень помагает
Это да, главное самому номер порта помнить
А вообще — аутентификация по ключу, а за попытку логина по паролю в бан.
Еще один красивый способ:
iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 600 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 22 -i eth0 -j ACCEPT
[...] Продолжение статьи Скажи «Нет!» взломщику. [...]
мой рецепт на пункты 1,2:
отказаться от ftp вообще, перейдя на sftp + chroot (штатные средства openssh-server) + нестандартный легкозапоминающийся порт, например 2222. Эту схему легко помнить и легко развернуть на новом сервере, кол-во софта уменьшается.
Почти так и делаю. При использовании SFTP настраиваю iptables так, что любое соединение с портами 20–21 воспринимается как сканирование портов с последующим баном.
Но иногда приходится вместо SFTP использовать FTPES, ибо не хочется давать пользователям никакой шелл.
shell: /bin/false
sshd_config:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
и никакого шела
Хм, у меня с /bin/false не получалось.
Спасибо, буду пробовать
Владимир, где находится этот пакет swatch?
http://ua.archive.ubuntu.com/ubuntu/pool/universe/s/swatch/
Спасибо вам за отличную дыру – теперь я знаю как забанить кого угодно на вашем серваке
На здоровье. Всё равно не получится.
[...] предыдущих частях статей цикла «Скажи «Нет!» взломщику» со [...]