|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> Security
—> немного о безопасности
Вопросы безопасности при работе во внешних сетях (INTERNET)
Автор: lissyara.
Собственно вопрос встал ребром по одной причине - у меня на мониторе вечно бегут логи серваков, на всякий случай, мало ли чё упадёт, или случится. Полдня наблюдал как какой-то придурок пытался найти пользователей и пароль к серваку. От нечего делать просканил его машину 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 Удалось нарыть следующую опцию:
- что означает, что по ssh можно ходить тока мне. Внёс эту строку, сделал
и проверил - и вправду, других пользователей не пускал. Это было уже неплохо. Но - душа хотела большего. Тогда вспомнилось, что существуют скрипты, которые добавляют в файрволл запрещающие правила, в случае, если с какого-то 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
| Всё остальное соответственно - по умолчанию.
размещено: 2005-11-22,
последнее обновление: 2010-02-04,
автор: lissyara
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
|
Комментарии пользователей [23 шт.]