Месяц: Март 2015

ssh geoip freebsd

Здравствуйте товарищи !

Сегодня речь пойдет о том как во FreeBSD сделать блокировку по стране то есть например я хочу что бы к серверу могли подключиться только из Украины в этом случае мне нужно во первых либо добавлять каждый раз все адреса этих стран в фаервол либо интерактивно блокировать тех кому доступ запрещен что у нас и будет сделано так как я хочу видеть список адресов которые меня брутят.

Все мы знаем о возможности freebsd блокировать хосты посредством файла hosts.allow ) о нем и пойдет речь

для решения данной задачи нам понадобиться фаервол это либо pf либо ipfw кому как удобнее, кусок скрипта на sh или bash

и собственно установленный geoip на нашем сервере.

и так перейдем к делу

cd /usr/ports/net/GeoIP

make && make install

дальше обновляем базу адресов

/usr/local/bin/geoipupdate.sh

так после обновления базы приходит время написать скрипт который будет опеределять ип и банить в случае необходимости :

создаем сам файл скрипта

touch  /usr/local/bin/brute_ssh.sh

даем ему право исполняться

chmod +x /usr/local/bin/brute_ssh.sh

Вносим сам код в скрипт с помощью редактора vi

vi  /usr/local/bin/brute_ssh.sh

 

#!/bin/sh

# UPPERCASE space-separated country codes to ACCEPT
ALLOW_COUNTRIES=»UA»

if [ $# -ne 1 ]; then
echo «Usage: `basename $0` <ip>» 1>&2
exit 0 # return true in case of config issue
fi

COUNTRY=`/usr/local/bin/geoiplookup $1 | awk -F «: » ‘{ print $2 }’ | awk -F «,» ‘{ print $1 }’ | head -n 1`

if [ $ALLOW_COUNTRIES == $COUNTRY ]; then
RESPONSE=»ALLOW»
else
RESPONSE=»DENY»
fi
if [ $RESPONSE == «ALLOW» ]; then
logger «$RESPONSE sshd connection from $1 ($COUNTRY)»
exit 0
else
logger «$RESPONSE sshd connection from $1 ($COUNTRY)»
/sbin/pfctl -t badhosts -T add $1
exit 1

fi

exit

Так теперь необходимо добавить в /etc/pf.conf

таблицу :

table <badhosts> persist

и правило :

block in quick from <badhosts> to any

сохраняем  и переходим к конфигурированию /etc/hosts.allow

добавляем разрешения на диапазон адресов которые не пройдут проверку то есть «серые сети» :

sshd: 127.0.0.0/255.0.0.0 : ALLOW
sshd: 172.16.101.0/255.255.255.0 : ALLOW

и само правило для блокировки не желательных гостей

sshd: ALL : spawn /usr/local/bin/brute_ssh.sh %a

сохраняем и применяем конфигурацию фаервола :

pfctl -f /etc/pf.conf

Готово enjoy !

Зарядить телефон от солнца

Здравствуйте товарищи !

Сегодня речь пойдет как вы догадались о зарядке телефона от солнечных элементов )

Когда то мой друг Вася поспорил со мной сказал что не реально зарядить телефон 1 элементом что даже зарядка не начнеться и так пришло время доказать что это реально вот фотки :

вся конструкция приметивна и состоит из одного транзистора,самого элемента и usb входа… ))

Bind named 9 ограничение запросов

Здравствуйте !
Сегодня речь пойдет об ограничении запросов к DNS серверу средствами самого DNS сервера )
что мы имеем BIND 9.10.1-P1.
что мы хотим сделать ?) ограничить количество запросов от тех нехороших товарищей которые хотят уложить нам DNS сервер и тем самым лишить нас привычного вида интернета )) по факту это спасет отца русской демократии от DDoS или например скажем DNS amplification attack !

Оговорюсь сразу что режима работы данной фичи есть 2 можно либо дропать запросы от «клиентов» либо записывать их в лог без дропов.

Что юзать выбирать вам я же покажу лишь принципы по которым настроить это все хозяйство :

вариант с дропами :
нужно записать в секции options добавляется секция «rate-limit» с ограничением на количество ответов от DNS сервера в секунду.

options {

rate-limit {
responses-per-second 25;
window 5;
};

};

вариант без дропов  с записью в лог:

нужно записать в секции options добавляется секция «rate-limit» с ограничением на количество ответов от DNS сервера в секунду.

rate-limit {

responses-per-second 25;

log-only yes;

};

На этом все 😉