Отсылка RADIUS CoA пакетов из командной строки | Linux
Категория: system
RADIUS CoA (Change of Authorization) - это механизм изменения AAA сессий после ее установления, другими словами путем отсылки CoA пакетов можно на лету изменять параметры/атрибуты сессии не прибигая к остановке сессии и последующего старта с необходимыми атрибутами. При отладке приложений удобно подобные запросы отправлять непосредственно с командной строки. В Linux есть необходимая утилита, обычно применяющаяся для отладки FreeRADIUS сервера - radclient, с ее помощью можно непосредственно с командной строки выполнить CoA запрос:
echo User-Name="10.10.14.161", Nas-Identifier="192.168.122.111" | radclient -d /opt/raddb/ -sx 127.0.0.1:3799 coa testpassword
Синтаксис, думаю, не требует разъяснений, но хотелось бы отметить пару моментов:
- необходимые атрибуты и их значения указываются через запятую
- опция -d - указывает путь до папки со словарем. в этой папке читается только один файл с именем dictionary, при необходимости подключения нескольких словарей, необходимо делать "include"ы непосредственно в этом файле (напр: $INCLUDE dictionary.cisco)
- атрибуты передаваемые в radclient должный быть прописаны в словаре. Если при выполнении команды встречается неизвестный атрибут - он и последующие атрибуты не отправляются
- не забывайте про кавычки в значениях атрибутов (например, таких как МАС-адрес)
При выполнении CoA запроса можно увидеть результат его выполнения, в частности переданные атрибуты и ответ:
Sending CoA-Request of id 169 to 127.0.0.1 port 3799
User-Name = "10.10.14.161"
NAS-Identifier = "192.168.122.111"
rad_recv: CoA-NAK packet from host 127.0.0.1 port 3799, id=169, length=26
Error-Cause = NAS-Identification-Mismatch
Таким образом получаем простой способ для отладки RADIUS CoA приложений, так же данный способ удобен в применении в различных скриптах, если не хочется тратить время на написание обертки скажем на Perl или Phyton с применением RADIUS библиотек.
Теги: radius SoA AAA dictionary
library 'crypto' is required for OpenSSL
Категория: system
При сборке из исходников с последующем использованием SSL в пакете при возникновении ошибки "library 'crypto' is required for OpenSSL", обычно достаточно установить пакет libssl-dev, но не всегда это помогает. Для сборки, бывает необходимо доустановить еще пару пакетов:
apt-get install devscripts build-essential
SquidGuard не делает редирект
Категория: system
В случае использования связки SQUID + SquidGuard, бывает, что для некоторых URL, запрашиваемых клиентом не срабатывает редирект (в случае обращения к запрещенному адресу), хотя в access логах сквида идет перенаправление "....HIER_DIRECT....", а в логах Guard`a видно отработку редиректа. На лицо глюк rewrite`ора. Проблема решилась, добавлением в конфиг кальмара правила:
url_rewrite_access allow all
Теги: squid squidguard
SQUID | ERROR: URL-rewrite produces invalid request
Категория: system
Данная ошибка возникает в старых версиях SQUID`а. Накатите более новую версию 3.4.х+. Имейте ввиду, что конфиги у разных версий немного различаются.
Теги: squid
Топ процессов по потреблению памяти в Linux
Категория: system
Кто сжирает всю память? Какой процесс больше всего потребляет памяти? Сколько процесс занимает оперативной памяти? - частые вопросы системного администратора Linux. Существует множество утилит выводящие информацию о процессах в системе с указанием их параметров, в том числе и занимаемой памяти. А ведь в подавляющем большинстве дистрибутивов предустановленна программа ps - выводящая информацию о запущенных процессах в системе. С помощью нее легко получить ответы на наши вопросы:
ps -eo size,pid,user,command --sort -size | awk '{ ms=$1/1024 ; printf("%.1f Mb ",ms) } {print $0}'
Данная команда построчно выведет список процессов, отсортированных по объему занимаемой памяти. Так же будут указаны PID процесса, от какого пользователя запущен процесс и его команда запуска:
SIZE(Mb) SIZE PID USER COMMAND
1040.26 Mb 1065224 28599 username /usr/lib/firefox/firefox
и т.д
Чтобы отобразить только топ 10, скармливаем вывод утилите head:
ps -eo size,pid,user,command --sort -size | awk '{ ms=$1/1024 ; printf("%.1f Mb ",ms) } {print $0}' | head
Поиск левых DHCP в сети
Категория: system
Бывает, что в локальных сетях заводится некорректно настроенное оборудование или кто-то решил себя потешить, отвечая всем желающим на их DHCP DISCOVER запросы. Чаще всего, в таких случаях, сетевое устройство получает неправильные настройки, тем самым блокируется его работа в сети. Можно, конечно, воспользоваться tcpdump`ом и проанализировать OFFER ответы и определить негодяя, но не всегда это удобно. Тем более если для этого есть специализированные утилиты, хоть их и единицы. В своей практике, для поиска "левого" DHCP я использую программу dhcpdrop тем еще приятную - с открытым исходным кодом. Утилита может использоваться как для анализа, так и для непосредственного подавления левого DHCP сервера - делается это путем забивания всего ip пула мещающего работе dhcp сервера, вследствие отсылки запросов к этому серверу на получение адреса/настроек со случайно сгенерированным MAC адресом, пул заполняется и сервер перестает отвечать на запросы. Более детальное описание см. на странице проекта.
dhcdrop -i eth0 -t -T 10 "fc:cc:cc:cc:cc:aa"
Вышеприведенная команда отправит DISCOVER запросы с МАСом "fc:cc:cc:cc:cc:aa" с интерфеса eth0 с таймаутом 10 секунд. Таймаут не следует задавать слишком малым, ибо не все сервера быстро отвечают, да и не обязаны - т.к. по спецификации, на сколько мне известно, время ответа на запросы не ограничивается каким-либо значением и даже при необходимости dhcp сервер имеет право "молча" дропнуть пакет, скажем если он перегружен. Как поведет себя dhcp клиент в таких случаях зависит от его алгоритмов работы. После отсылки запроса, происходит прослушка интерфеса на предмет OFFER пакетов - и на выходе утилиты мы получаем информацию (IP и MAC) ответивших на запрос серверах:
DHCP--SRV: 10.0.0.1 (IP-hdr: 10.0.0.1) SRV ether: 11:22:33:44:55:66, YIP: 10.0.0.189
Так же рассматриваемая утилита, пригодилась мне для мониторинга скорости ответов DHCP серверов посредством zabbix, я слегка модифицировал исходный код - теперь на выходе отображается и интервал между discover и offer пакетами. Затем значение парсится и отпрвляется в заббикс. Если нужны исходники, пишите в комментариях - поделюсь.
Проксируем трафик Firefox через SSH
Категория: system
При необходимости использования удаленного сервера в качестве web proxy проще всего воспользоваться SSH туннелем, используя его в качестве SOCKS proxy.
ssh -D localhost:6666 login@remote_server
После подключения, на локальном хосте по адресу localhost:6666 имеем собственный SOCKS5 прокси сервер. Для перенаправления всего трафика Firefox`a через прокси необходимо воспользоваться аддоном, я использую "Socks Proxy". В настройках указываем адрес прокси сервера, в нашем случае локального и, при необходимости, исключаем хосты к которым будем ходить напрямую - минуя прокси.