Скрипты для системы Netams
Создано: 04-06-2009 12:48:25  Метки: netams
в статье "Учет трафика локальной сети на основе netams" есть нюанс - учет трафика ведется, а вот о квотировании нет ни слова.
Для того чтоб блокировать/разблокировать пользователей в линуксе можно или заворачивать весь трафик средствами iptables в netams и предоставлять блокировать трафик ему:

iptables -A count -j QUEUE

либо как в статье использовать библиотеку libpcap и воспользоваться следующим скриптом:


## ставим пакет для обрыва TCP/IP соединений
aptitude install cutter
cat /root/lockuser
#!/bin/bash
action=$1       # Действие(DENY|ALLOW)
oid=$2
ip_user=$3
why=$4          #  Причина(QUOTA|LOGIN|...)

case "$action" in
    DENY)
        /sbin/iptables -A FORWARD -s $ip_user -j DROP
        /sbin/iptables -A FORWARD -d $ip_user -j DROP
        #/sbin/shorewall drop $ip_user # если стоит shorewall
        /usr/sbin/cutter $ip_user    # оборвать соединения
        logger -t NETAMS "Blocked $ip_user by $why..."
        echo "NETAMS Blocked $ip_user by $why...`LANG=C date`"|mail -s "NETAMS Blocked $ip_user by $why..." root
        ;;
    ALLOW)
        /sbin/iptables -D FORWARD -s $ip_user -j DROP
        /sbin/iptables -D FORWARD -d $ip_user -j DROP
        #/sbin/shorewall allow $ip_user # если стоит shorewall
        logger -t NETAMS "Unblocked $ip_user by $why..."
        echo "NETAMS Unblocked $ip_user by $why...`LANG=C date`"|mail -s "NETAMS Unblocked $ip_user by $why..." root
        ;;
    *)  
        logger -t NETAMS "Unknown option..."
        echo "NETAMS Unknown option...`LANG=C date`"|mail -s "NETAMS Unknown option..." root
        ;;
esac

для управления netams удобно использовать телнет-клиент netamsctl, для его использования надо создать файл:

cat /etc/.netamsctl.rc

login=admin
password=pass
host=127.0.0.1
port=20001

не забудьте
chmod 600 /etc/.netamsctl.rc && chown root: /etc/.netamsctl.rc !!!

далее можно к примеру командой netamsctl 'show config'|less посмотреть текущий конфиг программы.
Для того чтобы netams мог блокировать при наступлении события пользователей, надо дать команды:

netamsctl 'service processor && access-script "/root/lockuser" && exit'
netamsctl 'save'

затем можно задавать квоты, к примеру, следующим скриптом:

#! /bin/bash
if [ $# -lt 2 ] ; then
    echo -e "usage `basename $0` IP QUOTA_MB"; exit 1
fi
ip_client=$1
quota=$2
ip_client=`echo $ip_client|awk -F. '{print "ip_"$1"_"$2"_"$3"_"$4}'`
netamsctl "service quota 0 && set name $ip_client month ${quota}M in && exit"

квоты НЕ храняться в конфиге, они сохраняются в базу. Посмотреть их можно так:
netamsctl 'show quota'

или через веб-интерфейс.
1213 просмотров комментировать