Навигация
Категории
Top Hьюсмекеров
zenj68
Репутация: 0
Пол: Мужчина
Новости: 5396
Miracle
Репутация: 5
Пол: Мужчина
Новости: 4494
Gunpowder
Репутация: 0
Пол: Мужчина
Новости: 4024
x7Post7x7x
Репутация: 7
Пол: Женщина
Новости: 2784
Magik
Репутация: 0
Пол: Мужчина
Новости: 2567
Рекламка
Тут ваша реклама
Помощь сайту
webmoney





Рекламодатели
Главная » »
Собственно вопрос встал ребром по одной причине - у меня на мониторе вечно бегут логи серваков, на всякий случай, мало ли чё упадёт, или случится. Полдня наблюдал как какой-то придурок пытался найти пользователей и пароль к серваку. От нечего делать просканил его машину nmap`ом, посмотрел, что за ось, какие порты открыты, какие приложения их слушают..../usr/home/lissyara/>nmap -A 203.124.250.113

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-11-22 16:00 MSK
sendto in send_ip_packet: sendto(3, packet, 328, 0, 203.124.250.113, 16) =>
 Permission denied
send_ip_packet in send_closedupd_probe: Permission denied
sendto in send_ip_packet: sendto(3, packet, 328, 0, 203.124.250.113, 16) =>
 Permission denied
send_ip_packet in send_closedupd_probe: Permission denied
Interesting ports on 203.124.250.113:
(The 1665 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.4p1 (protocol 1.99)
111/tcp open rpcbind 2 (rpc #100000)
6000/tcp open X11 (access denied)
Device type: general purpose|broadband router
Running: Linux 2.4.X|2.5.X|2.6.X, D-Link embedded
OS details: Linux 2.4.0 - 2.5.20, Linux 2.4.18 - 2.4.20, 
Linux 2.4.26, Linux 2.4.27 or D-Link DSL-500T (running linux 2.4), 
Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Service Info: OS: Unix

Nmap finished: 1 IP address (1 host up) scanned in 34.421 seconds
/usr/home/lissyara/>


Это был шлюз, на линухе, а сам чувак сидел за шлюзом. Причём шлюз не на обычном PC а d-link`овский роутер - железяка с операционкой. Вначале это меня веселило, как и обычно, но этот, оказался толи упрямым, толи тупым - к вечеру его сканер уже нарезал третий круг по одним и тем же пользователям. Мне это надоело, и я добавил в файрволл правило: /usr/>ipfw add 1 deny ip from 203.124.250.113 to me
00001 deny ip from 203.124.250.113 to me
/usr/>


Всё. Мудазвон был свободен как ветер до первой перезагрузки, или до того как я вспомню про это правило, и уберу его. Вероятность второго была исчезающе мала, по причине моей короткой памяти, а первое произойдёт нескоро, самое частое я его перезагружаю раз в три месяца. Когда случайно провод питания ногой зацеплю :)))
  В общем-то на этом моменте про происшествие можно было забыть, но, не давало покоя то, что методы вроде примитивные, но могут и сработать - мало ли, я пользователя заведу без пароля, или со слишком простым, да забуду у него поставить /sbin/nologin... Чего тока не бывает спьяну-то :) Короче, было принято решение о прмитивном, но усилении безопастности. Файрволл стоял давно, а вот ssh прикрыть снаружи я не мог - пару раз сталкивался, что что-то забыл из конфига, и чтобы посмотреть на рабочем серваке приходилось заходить на него с самых неожиданных IP. Если б не это то задача бы свелась к закрыванию ssh снаружи, или к разрешению ходить по нему определённому набору хостов.
  Для начала решил поковырять конфиг sshd - может там что есть? Конфиг sshd живёт в /etc/ssh/sshd_config Удалось нарыть следующую опцию:AllowUsers lissyara


- что означает, что по ssh можно ходить тока мне. Внёс эту строку, сделал killall -1 sshd


и проверил - и вправду, других пользователей не пускал. Это было уже неплохо. Но - душа хотела большего. Тогда вспомнилось, что существуют скрипты, которые добавляют в файрволл запрещающие правила, в случае, если с какого-то IP сканят порты, или ещё как развлекаются. Скрипты эти я даже искать не стал, порты меня не волновали, это забота файрволла и приложений, что их слушают, зато это воспоминание подтолкнуло мысль в верном направлении - надо написать свой скрипт, который будет лопатить логи авторизации в /var/log/auth.log
  Сказано - сделано. Написал.#!/bin/sh

# если два часа ночи - удаляем предыдущие правила
if [ `date +%H` -eq 02 ]
then
/sbin/ipfw delete 1 >/dev/null 2>&1
fi

#
day=`date +%d`
month=`date +%m`
year=`date +%Y`
log_dir="/var/old_log/${year}/${month}"
# создаём папку для логов
mkdir -p ${log_dir}
log_file="${log_dir}/${day}_auth.log"

# переносим логи
cat /var/log/auth.log > /tmp/auth.log
cat /dev/null > /var/log/auth.log
cat /tmp/auth.log >> ${log_file}

# Вначале отлавливаем IP с которых пытаются залогинится
# под несуществующими пользователями
cat /tmp/auth.log | \
grep Illegal | awk '{print $10}' | sort | uniq -c | sort |
{
while read count_IP
do
count_deny=`echo ${count_IP} | awk '{print $1}'`
IP=`echo ${count_IP} | awk '{print $2}'`
if [ ${count_deny} -ge 10 ]
then
#echo "IP address = ${IP} deny count = ${count_deny}"
/sbin/ipfw add 1 deny ip from ${IP} to me >/dev/null 2>&1
fi
done
}

# отлавливаем IP c которых лезут под системными
# пользователями (с учётом того, что сделали раньше,
# ходить разрешили только описанным в sshd_conf)
cat /tmp/auth.log | \
grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort |
{
while read count_IP
do
count_deny=`echo ${count_IP} | awk '{print $1}'`
IP=`echo ${count_IP} | awk '{print $2}'`
if [ ${count_deny} -ge 5 ]
then
#echo "IP address = ${IP} deny count = ${count_deny}"
/sbin/ipfw add 1 deny ip from ${IP} to me >/dev/null 2>&1
fi
done
}


Такой вот несложный скриптик, который заодно переносит логи в другое место. Можно сделать и лучше, но, лучшее - враг хорошего. Заносим его запуск в рутовый crontab, на запуск раз в 10 минут.
  Заодно решил обновить sshd - больно уж у меня старая и версия стояла./usr/home/lissyara/>/usr/ports/security/openssh-portable/>sshd -v
sshd: illegal option -- v
sshd version OpenSSH_3.5p1 FreeBSD-20030924
Usage: sshd [options]
Options:
  -f file Configuration file (default /etc/ssh/sshd_config)
  -d Debugging mode (multiple -d means more debugging)
  -i Started from inetd
  -D Do not fork into daemon mode
  -t Only test configuration file and keys
  -q Quiet (no logging)
....................................
/usr/home/lissyara/>cd /usr/ports/security/openssh-portable/
/usr/ports/security/openssh-portable/>make && make install && make clean
....................................
....................................
===> Compressing manual pages for openssh-portable-4.2.0.0,1
===> Registering installation for openssh-portable-4.2.0.0,1
===> SECURITY REPORT:
  This port has installed the following binaries which execute with
  increased privileges.
/usr/local/libexec/ssh-keysign

  This port has installed the following files which may act as network
  servers and may therefore pose a remote security risk to the system.
/usr/local/bin/ssh-keyscan
/usr/local/bin/ssh
/usr/local/sbin/sshd
/usr/local/libexec/ssh-keysign
/usr/local/bin/ssh-agent

  This port has installed the following startup scripts which may cause
  these network services to be started at boot time.
/usr/local/etc/rc.d/sshd.sh.sample
.........................................


Из опций, что предлагались при установке я не выбрал ничего. Итак, всё инсталлировано, но согласно секьюрити репорту, установился он не вместо системного, а сам по себе. Ладно. Не страшно. Для начала копируем скрипт запуска:

/usr/ports/security/openssh-portable/>cd /usr/local/etc/rc.d/

/usr/local/etc/rc.d/>cp sshd.sh.sample sshd.sh
/usr/local/etc/rc.d/>


Удаляем строку sshd_enable="YES" из файла /etc/rc.conf. Если есть локальный доступ к машине - убиваем sshd и запускаем скрипт /usr/local/etc/rc.d/sshd.sh Должно работать. У меня локального доступа ко всем машинам нет (вернее он есть, но до некоторых добираться по часу - некогда), потому я перезагружаюсь.
  Всё работает. Конфиг у меня получился такойPermitRootLogin no
MaxAuthTries 2
ChallengeResponseAuthentication no
MaxStartups 2
Subsystem sftp /usr/local/libexec/sftp-server
AllowUsers lissyara


Всё остальное соответственно - по умолчанию.





1022     16:52 21.05.2024     0
Всего комментариев: 0

Kомментарии
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]


Последние сообщения на форумах
Календарь
Реклама
Здесь может быть ваша реклама
Top 5 Коментаторов
lanx
Репутация: 211
Пол: Мужчина
Комментoв:  17
mars
Репутация: 0
Пол: Мужчина
Комментoв:  3
denis
Репутация: 0
Пол: Мужчина
Комментoв:  2
royss
Репутация: 2
Пол: Мужчина
Комментoв:  2
cube
Репутация: 28
Пол: Мужчина
Комментoв:  2
Кто с нами
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Друзья сайта
Рекламодатели

Хостинг от uCoz