Jump to content

PPPoE - Server + Radius + Nacctd +htb+squid+billin


Veselin
 Share

Recommended Posts

Итак разбираемся с тем что у нас имеется:

1. Сервер с Suse 9.x только что поднятый.

2. Куча клиентских машин в рабочей группе настроенных на получение адреса по DHCP.

3. /dev/hands требуется, желательно версией попрямее.

4. Пакеты rp-pppoe, freeradius, radiusclient, pppd(с поддержкой radius(библиотека radius.so)), nacctd, iptables, htb(со скриптом запуска), dhcp-server, named, mysql, также потребуется биллинг, который работает с radius.(FreeNIBS, UTM(кстати в случае с UTM лучше использовать его radius-server(тогда freeradius не нужен)Но UTM платный и это его главный минус :|)).

5. Опыт в редактировании конфигов, пользования MySQL, опыт в первоначальной настройке сервера: сетевые интерфейсы и .т.п.

Ставим пакеты, перечисленные в пункте 4 , удовлетворяем все зависимости которые они запросят. Надеюсь с установкой пакетов все справятся. Тем более что почти все они есть в Suse.

Условимся, что ip интерфейса eth0 сервера, который смотрит в инет, 21x.9x.1xx.23.

Условимся, что ip интерфейса eth1 сервера, который смотрит в локалку, 192.168.1.1.

Условимся, что локальный домен: byte.local

Сеть 192.168.2.10/24 будет использоваться для pppoe.

Настройка DHCP сервера.

Если кому хочется бегать от машины к машине и прописывать на них ip адреса, то можно пропустить данных шаг. Но я человек ленивый и считаю, что на клиентских машинах никаких настроек не должно быть ;) Чтобы не бегать =)

Ставим dhcp-server. Конфиг /etc/dhcpd.conf делаем примерно таким:

*******Начало /etc/dhcpd.conf********

authoritative;

default-lease-time 259200; # 3 days

max-lease-time 604800; # 1 week

option domain-name "byte.local"; #имя локального домена

option routers 192.168.1.1; #маршрут по умолчанию

option domain-name-servers 192.168.1.1; #DNS сервер

option broadcast-address 192.168.1.255; #Адрес широковещательных пакетов

subnet 192.168.1.0 netmask 255.255.255.0 { # Подсеть

range 192.168.1.10 192.168.1.254; #С какого по какой ip выделять адреса.

# записи ниже нужны если вдруг у кого есть жгучее желание иметь постоянный ip в

# локалке

host baltazar.byte.local { #имя хоста

hardware ethernet 00:50:BF:44:27:D5; # MAC адрес клиента

fixed-address 192.168.1.10; # ip который хотим ему давать.

}

}

*******Конец /etc/dhcpd.conf********

Вот и все.

Запускаем демон dhcpd: /etc/init.d/dhcpd start

Если что не так – смотрим логи, ищем ошибки.

Кого мучает паранойя или есть умники в сети c DHCP-серверами =), кое-что в конфиг придется добавить. Search Google.

Настройка DNS-сервера.

Зачем DNS? Ну во-первых кеш, во-вторых удобно, если есть биллинг юзер заходит stat.byte.local, вводит логин\пасс, попадает на статистику. Красиво… Можно также поставить апач и сделать небольшую информ-страничку с новостями для юзеров, типа [ch9562]с 00:00 до 02:00 в пятницу будет проходить профилактика[ch9577], ну и т.п.

Итак ставим named, идем править /etc/named.conf

********Начало named.conf***********

options {

directory "/var/lib/named";

dump-file "/var/log/named_dump.db";

statistics-file "/var/log/named.stats";

!!!!!!!!!!!!forwarders { ЗДЕСЬ IP ВАШЕГО ПРОВА; 192.168.1.1; };

forward first;

listen-on port 53 { any; };

notify no;

};

zone "." in {

type hint;

file "root.hint";

};

zone "localhost" in {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" in {

type master;

file "127.0.0.zone";

};

zone "byte.local" in {

type master;

file "byte.local.zone";

};

zone "1.168.192.in-addr.arpa" in {

type master;

file "192.168.1.zone";

};

zone "2.168.192.in-addr.arpa" in {

type master;

file "192.168.2.zone";

};

********Конец named.conf***********

Теперь идем создавать файлы в директории “/var/lib/named”

byte.local.zone

192.168.1.zone

192.168.2.zone

Короче те, что описали с named.conf.

Итак содержимое этих файлов:

*************** byte.local.zone****************

$TTL 1W

@ IN SOA @ root (

42 ; serial (d. adams)

2D ; refresh

4H ; retry

6W ; expiry

1W ) ; minimum

IN NS @

IN A 192.168.1.1

ice A 192.168.1.1

ns1 CNAME ice

ns2 A 192.168.2.1

stat CNAME ns2

*************** byte.local.zone****************

*************** 192.168.1.zone****************

$TTL 1W

@ IN SOA ice. root.ice. (

42 ; serial (d. adams)

2D ; refresh

4H ; retry

6W ; expiry

1W ) ; minimum

IN NS ice.

1 IN PTR ice-ns1.

2 IN PTR ap2100-1

*************** 192.168.1.zone****************

*************** 192.168.2.zone****************

$TTL 1W

@ IN SOA ice. root.ice. (

42 ; serial (d. adams)

2D ; refresh

4H ; retry

6W ; expiry

1W ) ; minimum

IN NS ice.

1 IN PTR stat-pppoe.

*************** 192.168.2.zone****************

Вот и все.

Запускаем демон named: /etc/init.d/named start

Если что не так – смотрим логи, ищем ошибки.

Повторюсь, что кого мучает паранойя или есть умники в сети, кое-что для безопасности в конфиг named придется добавить. Search Google.

Настройка PPPoE-сервера и демона pppd.

Здесь начинается самое сложное ;) А именно найти radius.so под Вашу версию pppd. В принципе можно пересобрать pppd из сырцов c поддержкой mschap,mppe и библиотеку тоже. Короче эту часть я оставляю на откуп Вам.

Вот линк: http://www.opennet.ru/base/net/pptp_mppe_mppc.txt.html. Хоть там и про pptpd, но установка pppd таким же образом.

Если у вас лежит в /usr/lib/pppd/версия pppd/ библиотека radius.so, то можно не беспокоиться и спокойно продолжать настройку дальше.

Ставим rp-pppoe.

Конфиг /etc/ppp/pppoe-server-options:

***************pppoe-server-options****************

# PPP options for the PPPoE server

# LIC: GPL

logfile /var/log/pppoe.log

debug

mtu 1472

mru 1472

auth

require-pap

#require-chap

default-asyncmap

ktune

lcp-echo-interval 20

lcp-echo-failure 2

ms-dns 192.168.1.1

ms-dns ЗДЕСЬ IP ВАШЕГО ПРОВА

plugin radius.so

plugin radattr.so

192.168.2.1:

nobsdcomp

noccp

noendpoint

noipdefault

noipx

novj

receive-all

***************pppoe-server-options****************

К конфиге /etc/ppp/options: lock

Для запуска сервера pppoe создадим скриптик pppoed запуска в /etc/init.d

Скриптик для Suse. Для других систем подгоняйте сами ;)

**************pppoed********************

#!/bin/bash

# init file for rp-pppoe server

#

# description: PPPOE kernel mode server

#

# processname: pppoe-server

# chkconfig: - 45 45

# source function library

. /etc/rc.status

case "$1" in

start)

echo -n "Starting PPPOE server: "

/usr/sbin/pppoe-server -I eth1 -L 192.168.2.1 -R 192.168.2.10

#Здесь eth1 - ваш pppoe server интерфейс

#192.168.2.1 - IP PPPoE сервера

#192.168.2.10 - Первый IP адрес клиента

touch /var/lock/subsys/pppoed

rc_status -v

;;

stop)

echo -n "Shutting down PPPOE server: "

killproc pppoe-server

rm -f /var/lock/subsys/pppoed

rc_status -v

;;

restart)

$0 stop

$0 start

;;

status)

status pppoe-server

;;

*)

echo "Usage: pppoed {start|stop|restart|status}"

exit 1

esac

exit 0

**************pppoed********************

При желании вместо pppoe-server можно использовать pptpd. Опции практически те же ;)

Конфиги даны только с поддержкой PAP. При желании и возможностях можно прикрутить и CHAP(MSCHAP).

Для проверки работает ли pppoe-сервер можно в файле /etc/ppp/pppoe-server-options закомментировать строку “plugin radius.so” и в файле /etc/ppp/pap-secrets написать

test * test 192.168.2.10

Запускаем pppoe-server: /etc/init.d/pppoed start

На любом клиенте создаем PPPoE соединение и используя логин\пароль test подключаемся. Смотрим дал ли нам сервер ip 192.168.2.10, и есть ли DNS-сервера и есть ли default route на 192.168.2.1

Если что не так копаем логи. После экспиримента строчку из pap-secrets удалить, в файле /etc/ppp/pppoe-server-options строку “plugin radius.so” разкомментировать и перезапустить pppoed.

Link to comment
Share on other sites

Настройка HTB.

Подробнее о htb можно узнать здесь: http://www.opennet.ru/base/net/htb_saga.txt.html

Скрипт запуска htb можно скачать здесь:

http://freshmeat.net/projects/htb.init

Копируем этот скрипт в /etc/init.d

Создаем директорию /etc/sysconfig/htb

Создаем там файлы:

ppp0

ppp0-2.root

ppp0-2:10.ppp

тут и прописывается ограничение пропускной способности для клиентов.

*********ppp0*******

DEFAULT=30

R2Q=10

*********ppp0*******

*****ppp0-2.root*******

RATE=96Kbit

BURST=9k

*****ppp0-2.root*******

*****ppp0-2:10.ppp*****

RATE=96Kbit

BURST=9k

LEAF=sfq

RULE=*,192.168.2.0/24

*****ppp0-2:10.ppp*****

Эти файлы рассчитаны на пропуск примерно 11-12 kb\sec. Я не буду рассказывать про то, как настраивается htb. Про это отлично написано в статье, указанной выше.

Также я написал небольшой скриптик для того, чтобы создавать такие файлы для всех интерфейсов ppp с 0 по 254

*************create.ppp.shapers*************

#!/bin/bash

COUNTER=1

while [ $COUNTER -lt 254 ]; do

echo Shaper for interface ppp$COUNTER created!

rm -f /etc/sysconfig/htb/ppp$COUNTER

rm -f /etc/sysconfig/htb/ppp$COUNTER-2.root

rm -f /etc/sysconfig/htb/ppp$COUNTER-2:10.ppp

cp /etc/sysconfig/htb/ppp0 /etc/sysconfig/htb/ppp$COUNTER

cp /etc/sysconfig/htb/ppp0-2.root /etc/sysconfig/htb/ppp$COUNTER-2.root

cp /etc/sysconfig/htb/ppp0-2:10.ppp /etc/sysconfig/htb/ppp$COUNTER-2:10.ppp

let COUNTER=COUNTER+1

done

/etc/init.d/htb.init restart

*************create.ppp.shapers*************

Т.е. для того чтобы изменить пропускную способность для всех, изменяем всё что относится к ppp0, а потом запускаем скрипт.

Для того чтобы правила применялись при подключении клиента, необходимо создать в директории /etc/ppp/ip-up.d скрипт shaper.start

********shaper.start******

#!/bin/bash

/etc/init.d/htb.init restart

********shaper.start******

а в директории /etc/ppp/ip-down.d скрипт shaper.stop

********shaper.stop******

#!/bin/bash

/etc/init.d/htb.init restart

********shaper.stop******

Настройка Iptables.

Вот скрипт, который я использую для настройки файрволла.

****************main.rules.iptables****************

#!/bin/sh

iptables --flush

iptables -t nat --flush

clear

###########################################################################

#

# 1. Configuration options.

#

#

# 1.1 Internet Configuration.

#

INET_IP="21x.9x.1xx.23"

INET_IFACE="eth0"

#

# 1.2 Local Area Network configuration.

#

#

LAN_IP="192.168.1.1"

LAN_IP_RANGE="192.168.1.0/24"

LAN_IFACE="eth1"

#

# 1.3 VPN Configuration.

#

VPN_IP="192.168.2.1"

VPN_IP_RANGE="192.168.2.0/24"

VPN_IFACE="ppp+"

#

# 1.4 Localhost Configuration.

#

LO_IFACE="lo"

LO_IP="127.0.0.1"

#

# 1.5 IPTables Configuration.

#

IPTABLES="iptables"

###########################################################################

#

# 2. Module loading.

#

/sbin/depmod -a

#

# 2.1 Required modules

#

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_state

#

# 2.2 Non-Required modules

#

#/sbin/modprobe ipt_owner

#/sbin/modprobe ipt_REJECT

#/sbin/modprobe ipt_MASQUERADE

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

###########################################################################

#

# 3. /proc set up.

#

#

# 3.1 Required proc configuration

#

echo "1" > /proc/sys/net/ipv4/ip_forward

#

# 3.2 Non-Required proc configuration

#

#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp

#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

###########################################################################

#

# 4. rules set up.

#

######

# 4.1 Filter table

#

#

# 4.1.1 Set policies

#

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

#

# 4.1.2 Create userspecified chains

#

$IPTABLES -N bad_tcp_packets

#

# Create separate chains for ICMP, TCP and UDP to traverse

#

$IPTABLES -N allowed

$IPTABLES -N tcp_packets

$IPTABLES -N udp_packets

$IPTABLES -N icmp_packets

#

# 4.1.3 Create content in userspecified chains

#

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#

# allowed chain

#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT

$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A allowed -p TCP -j DROP

#

# TCP rules

#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed

#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

#

# UDP ports

#

#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT

#

# ICMP rules

#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#

# 4.1.4 INPUT chain

#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#

# Rules for special networks not part of the Internet

#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

#$IPTABLES -A INPUT -p ALL -i $VPN_IFACE -s $VPN_IP_RANGE -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $VPN_IP -j ACCEPT

#

# Special rule for DHCP requests from LAN, which are not caught properly

# otherwise.

#

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

#

# Rules for incoming packets from the internet.

#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets

$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

#

#SQUID

#

$IPTABLES -A INPUT -s 192.168.1.0/24 -p tcp --dport 3128 -j DROP

#$IPTABLES -A INPUT -p tcp --dport 3128 -s 192.168.2.0/24 -j ACCEPT

#

# Log weird packets that don't match the above.

#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

#

# 4.1.5 FORWARD chain

#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#

# Accept the packets we actually want to forward

#

$IPTABLES -A FORWARD -s 192.168.1.10 -d 192.168.0.1 -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#

# Log weird packets that don't match the above.

#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "

#

# 4.1.6 OUTPUT chain

#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#

# Special OUTPUT rules to decide which IP's to allow.

#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $VPN_IP -j ACCEPT

#

# Log weird packets that don't match the above.

#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

######

# 4.2 nat table

#

#

# 4.2.1 POSTROUTING chain

#

#

# Enable simple IP Forwarding and Network Address Translation

#

$IPTABLES -t nat -A POSTROUTING -o $INET

Link to comment
Share on other sites

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

$IPTABLES -t nat -A PREROUTING -i $VPN_IFACE -d ! $VPN_IP_RANGE -p tcp --dport 80 -j REDIRECT --to-port 3128

****************main.rules.iptables****************

Кроме того, чтобы пользователя пускало в сеть надо добавлять при каждом его входе правило в FORWARD и INPUT цепочки с его ip адресом, а также удалять их, когда пользователь отсоеденился. Для этого делаем скрипты:

*******/etc/ppp/ip-up.d/iptables*************

#!/bin/bash

IPT=/usr/sbin/iptables

UIP=$5

$IPT -A FORWARD -s $UIP -j ACCEPT

$IPT -A INPUT -s $UIP -j ACCEPT

*******/etc/ppp/ip-up.d/iptables*************

*******/etc/ppp/ip-down.d/iptables************

#!/bin/bash

IPT=/usr/sbin/iptables

UIP=$5

$IPT -D FORWARD -s $UIP -j ACCEPT

$IPT -D INPUT -s $UIP -j ACCEPT

*******/etc/ppp/ip-down.d/iptables************

Кстати, мысль для создания собственного биллинга: громим правило из скрипта(который кроном проходит по базе трафика и лимитов) при привышении лимита, пишем в базу пользователей что этот юзер залочен. Трафик перестает бежать, пользователь пытается переподключится и получает ошибку о неправильном логине\пароле, т.к. его аккаунт заблокирован. Я так и сделал, возможно, даже выложу скрипты и Web-интерфейс как только приведу в божеский вид. Проект типа сделаю. :)

Настройка прозрачного прокси SQUID.

В принципе эту часть можно и пропустить, если вам не интересно кеширование и блокирование баннеров, порно, а также статистика по посещенным адресам. Вот конфиг моего сквида, здесь все просто.

***********squid.conf**************

#Порт HTTP-PROXY

http_port 3128

#Порт ICP

icp_port 0

#Не кешировать скрипты

acl QUERY urlpath_regex cgi-bin/?

no_cache deny QUERY

#Кол-во ОЗУ для SQUID

cache_mem 128 MB

#Путь к директории кеша и его размер(1000)

cache_dir ufs /var/cache/squid 10000 16 256

#Путь к лог-файлу доступа к SQUID(Статистика работы через SQUID)

cache_access_log /var/log/squid/access.log

#Путь к лог-файлу SQUID - в нем события запуска SQUID и дочерних программ

cache_log /var/log/squid/cache.log

#Путь к лог-файлу Strore

cache_store_log /var/log/squid/store.log

#Ротация логов

logfile_rotate 10

#Таблица MIME-типов для SQUID

mime_table /etc/squid/mime.conf

#PID-файл SQUID

pid_filename /var/run/squid.pid

#Пользователь для анонимного доступа к FTP

ftp_user anonymous@

#SQUID формирует страницу с папками на FTP - этот параметр - кол-во папок

ftp_list_width 32

#Пассивный режим FTP

ftp_passive on

#Проверка подлинности FTP

ftp_sanitycheck on

#redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/rejik.conf #это для режика

#Списки контроля доступа

acl server src 192.168.1.1/255.255.255.255 #Наш сервер

acl clients src 192.168.2.1-192.168.2.254/255.255.255.255

#Стандартные ACL

acl all src 0.0.0.0/0.0.0.0 #Все

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255 #Адрес localhost

acl SSL_ports port 443 563 #Порты SSL

acl SMTP port 25 #Для защиты от спама ;) Оказывается SQUID может делать relay

#Служебные ACL

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 563 # https, snews

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

#Теперь разрешаем доступ тому, кто указан в ACL

http_access allow server

http_access allow clients

http_access deny !Safe_ports

http_access deny SMTP

http_access deny all

#Разрешаем ICP-доступ всем

icp_access deny all

error_directory /etc/squid/errors

#Акселерация(для transparent прокси)

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

***********squid.conf**************

На этом настройка squid завершена, его можно запустить. Если нужна статистика по посещенным URL, советую использовать SARG (он есть в дистрибутиве)

Link to comment
Share on other sites

Настройка FreeRADIUS(NetUP Radius)+RadiusClient

Решил написать различные варианты настройки с 2-мя серверами radius. Вы можете выбрать один из них. Хочу напомнить, что NetUP Radius входит в состав платного биллинга UTM. Поэтому советую использовать его, только если он куплен у производителя, а не украден в ближайшем варезнике. Тем более самописных биллинг можно очень легко заточить под свои задачи и сеть.

Итак, настраиваем radius client. Правим /etc/radiusclient/servers и /etc/radiusclient/radiusclient.conf

******servers********

127.0.0.1 oh2iFa

******servers********

Последовательность символов после ip это секрет для соединения сервера и клиента. Т.е. на сервере и на клиенте последовательность должна быть одинаковой.

********radiusclient.conf***************

auth_order radius,local

login_tries 4

login_timeout 60

nologin /etc/nologin

issue /etc/radiusclient/issue

# RADIUS settings

authserver localhost:1812

acctserver localhost:1812

servers /etc/radiusclient/servers

dictionary /etc/radiusclient/dictionary

login_radius /usr/sbin/login.radius

# RADIUS server

seqfile /var/run/radius.seq

mapfile /etc/radiusclient/port-id-map

default_realm

radius_timeout 10

radius_retries 3

login_local /bin/login

********radiusclient.conf***************

Настройка сервера NetUP Radius:

В /netup/utm/utm.cfg добавляем строки:

radius_port=1812

radius_host=127.0.0.1

radius_secret_key=oh2iFa

password_store_method=plain_text

и в автозагрузку добавляем /netup/utm/bin/netup_radius/netup_radiusd

Настройка сервера FreeRADIUS(с поддержкой MySQL).

Конфиг радиус сервера следующий(взято и опробовано из статьи Алекса Б. Юдкина):

************ radiusd.conf**********

prefix = /usr

exec_prefix = ${prefix}

sysconfdir = /etc

localstatedir = /var

sbindir = ${exec_prefix}/sbin

logdir = ${localstatedir}/log/radius

raddbdir = ${sysconfdir}/raddb

radacctdir = ${logdir}/radacct

# Месторасположение конфигурационных и лог файлов.

confdir = ${raddbdir}

run_dir = ${localstatedir}/run/radiusd

# Каталог с подгружаемыми модулями.

libdir = ${exec_prefix}/lib

# Месторасположение pid-файла. Содержащего идентификатор процесса.

pidfile = ${run_dir}/radiusd.pid

# Имя пользователя и группа от которых запускается FreeRADIUS

user = radius

group = radius

# Максимальное время (в секундах) используемое для обработки запроса.

max_request_time = 30

# Удалить запросы которые обрабатываются более чем max_request_time

delete_blocked_requests = no

# Время ожидания (в секундах) перед очисткой reply запроса отправленного NAS.

cleanup_delay = 5

# Максимальное количество запросов хранимых сервером. Это число должно быть равно

# количеству клиентов помноженному на 256.

# К примеру для четырех клиентов оно будет 1024.

max_requests = 5120

# Закрепить за ip адресом. По умолчанию RADIUS сервер при старте принимает

# запросы со всех ip адресов.

bind_address = 127.0.0.1

# Закрепить за FreeRADIUS конкретный port. Если указан ноль,

# то значение берется из /etc/services

port = 0

# Запретить/разрешить ip адреса в dns имена.

# Включение этой опции может сильно снизить производительность.

hostname_lookups = no

# Создавать/несоздавать отладочные файлы при падении сервера.

allow_core_dumps = no

# Разрешить использование регулярных выражений.

regular_expressions = yes

extended_expressions = yes

# Записывать полный User-Name аттрибут если найден в запросе.

log_stripped_names = no

# Записывать в лог попытки авторизации.

log_auth = yes

# Записывать в логи пароли при авторизации.

# log_auth_badpass - не корректные пароли

# log_auth_goodpass - корректные пароли

log_auth_badpass = yes

log_auth_goodpass = no

# Включить/выключить коллизию пользователей.

usercollide = no

# конвертировать логин и/или пароль до или после авторизации.

lower_user = no

lower_pass = no

# удалить пробелы в логине и/или пароле.

nospace_user = no

nospace_pass = no

# настройки безопасности от возможных DoS аттак.

security {

# Максимальное допустимое количество аттрибутов в RADIUS пакете.

max_attributes = 200

# Задержка (в секундах) перед отправкой Access-Reject пакета.

reject_delay = 1

# Не отвечать на запросы Status-Server

status_server = no

}

# Конфигрурация клиентов RADIUS сервера.

# Описывается в отдельном файле.

$INCLUDE ${confdir}/clients.conf

# Отключить snmp поддержку.

snmp=no

# Настрока пула процессов.

thread pool {

# количество первоначально запущенных процессов.

start_servers = 5

# Максимально возможное количество процессов.

max_servers = 32

# Динамическая регулировка количества процессов.

min_spare_servers = 3

max_spare_servers = 10

# Количество принимаемых запросов процессом. МОжет помочь при утечках памяти в

# RADIUS сервере. Если выставить 300, процессы будут периодически перегружаться

# для уборки мусора.

max_requests_per_server = 0

}

# Секция конфигурации динамических модулей.

modules {

# Модуль PAP авторизации.

# Необходим для обработки запросов с PAP авторизацией.

# encryption_scheme указывает в каком виде хранятся пароли.

# clear - подразумевает в открытом виде.

pap {

encryption_scheme = clear

}

# Модуль CHAP авторизации.

# Необходим для обработки запросов с CHAP авторизацией.

# authtype подразумевает обработку запросов только с аттрибутом Auth-Type=CHAP

chap {

authtype = CHAP

}

# Модуль преобработки запросов.

# Т.е. перед авторизацией пакета.

preprocess {

# huntgroups - хинт группы см. файл huntgoups.

# hints - хинты.

huntgroups = ${confdir}/huntgroups

hints = ${confdir}/hints

# Обработка Cisco VSA.

with_cisco_vsa_hack = no

}

# Модуль Microsoft CHAP авторизации.

# Поддерживает так же еще и Microsoft CHAP v2

# authtype подразумевает обработку запросов только с аттрибутом Auth-Type=MS-CHAP

# use_mppe = no указывает на отсутствие компресии VPN туннеля.

mschap {

authtype = MS-CHAP

use_mppe = no

}

# Модуль записей Livingston RADIUS типа.

# usersfile содержит авторизационные записи пользователей.

# Рекомендуется использовать только для тестов и выставления значений по умолчанию.

# acctusersfile содержит пользователей подлежащих учету (аккаунтингу).

# compat - совместимость. При использовании файлов только FreeRADIUS можно отключить.

files {

usersfile = ${confdir}/users

compat = no

}

# Запись детального лога аккаунтинговых пакетов.

detail {

detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d

detailperm = 0600

}

# Запись детального лога пакетов авторизации.

detail auth_log {

detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d

detailperm = 0600

}

# Запись детального лога reply пакетов.

detail reply_log {

detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d

detailperm = 0600

}

# Создать уникальный ключ для аккаунтинг сессии.

# Многие NAS повторно используют Acct-Session-ID.

# key перечисление аттрибутов для генерации Acct-Session-ID

acct_unique {

key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"

}

# Конфигурация авторизации и аккаунтинга посредством СУБД

# содержится в отдельном файле cakesql.conf

$INCLUDE ${confdir}/sql.conf

}

# Авторизация

# сначала идет пакет передается в preprocess

# где может быть модифицирован.

# Далее chap mschap обрабатывают chap и mschap авторизацию.

authorize {

preprocess

chap

mschap

# Не ведем логи пакетов авторизации.

# auth_log

files

mysql

}

# Аунтификация

# Секция содержит модули доступные, для аунтификации.

authenticate {

Auth-Type PAP {

pap

}

Auth-Type CHAP {

chap

}

Auth-Type MS-CHAP {

mschap

}

}

# Преобразование аккаунтинговых пакетов.

preacct {

preprocess

}

# Секция ведения аккаунтинга.

accounting {

# Создание Acct-Session-Id если ваш NAS генрит их вполне корректно можете убрать

Link to comment
Share on other sites

# Создание Acct-Session-Id если ваш NAS генрит их вполне корректно можете убрать.

acct_unique

# Не создаем detail лог.

detail

# Помещать аккаунтинговые пакеты в СУБД

mysql

}

# Секция ведения логов reply-пакетов.

post-auth {

# Не ведем детальный лог репли пакетов.

reply_log

}

Редактируем sql.conf:

************** sql.conf***************

sql mysql {

# Database type

# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,

# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds

driver = "rlm_sql_mysql"

# Connect info

server = "localhost"

login = "root"

password = "ВАШ ПАРОЛЬ НА MySQL"

# Database table configuration

radius_db = "radius"

************** sql.conf***************

Файл naslist:

localhost local other

Файл clients:

localhost oh2iFa

В пакете с радиусом идет дамп базы для него:

/usr/share/doc/freeradius/db_mysql.sql

Создаем базу данных radius и применяем sql-файл к ней.

Теперь в базу можно забивать пользователей. Руками или через самописный Web-интерфейс :). Описание полей БД можно найти в документации по FreeRADIUS.

Настройка NetAcct

Скачать netacct можно здесь: http://netacct-mysql.gabrovo.com/?section=download&PHPSESSID=a1ad535ef569bfb3a0bc2c3885578c7c

Рекомендую скачать последний stable. Там же есть русская дока по нему.

Для пользователей NetUP UTM рекомендую использовать именно этот коллектор. Подробно о его конфигурировании можно прочитать в документации по UTM.

Net-acct необходимо сконфигурировать с опцией "--with-mysql" с указанием пути к mysql(для UTM собираем без поддержки mysql).

После компиляции и установки программы создаем базу данных для net-acct с помощью sql-файла netacct.sql, который присутствует в архиве. Также можно добавить пользователя netacct в MySQL и предоставить ему права на базу netacct.

Правим конфиг

**************/etc/naccttab**************

flush 60 #Через какой интервал кидать в базу инфу(сек)

fdelay 60 #Время (cек),через которое, после завершения сетевой активности, #данные о трафике могут быть записаны в базу.

database mysql

mysql_user netacct #пользователь в MySQL

mysql_password netacct #пароль пользователя для базы

mysql_host localhost #хост

mysql_database netacct #имя базы данных

mysql_table accounting #имя таблицы

notdev eth0 #какой интерфейс не слушать, что бы не было двойного обсчета

device eth1 #интерфейс на котором будет считаться трафик

ignoremask 255.255.255.0 # исключить из подсчета трафик идущий внутри сети

ignorenet 127.0.0.0 255.0.0.0 # игнор для loopback

debug 2 # уровень отладки

debugfile /tmp/nacctd.debug # куда класть лог отладки

headers tr 40 38

headers lo 14 12

headers isdn 4 0

headers eth 14 12

headers plip 14 12

# For dynamic slip/ppp

dynamicip /var/run # где хранятся файлы динам. ip

dynamicnet 202.36.94.0 255.255.255.0

exclude-name-lookup 202.36.94.1 255.255.255.255

exclude-name-lookup 202.36.94.253 255.255.255.255

# For disabling certain fields

# This is commented out by default

# Field 7 is disabled by default so we match the old (pre 0.5) output format

# disable 2 # disable output of protocol

# disable 3 # disable output of source address

# disable 4 # disable output of source port

# disable 5 # disable output of destination address

# disable 6 # disable output of destination port

disable 7 # disable output of packets count

# disable 8 # disable output of byte count

# disable 9 # disable output of device name

# disable 10 # disable output of user name

**************/etc/naccttab**************

Запускаем nacctd. В случае проблем проверяем права на базу, и копаем логи.

Link to comment
Share on other sites

  • 2 years later...

Публикувам тази статия защото смятам че ще помогне на много хора .

на този линк има добра и безплатна билинг система http://lms.rulez.pl/download.php

Колега, ползвал ли си тази система за билинг, и как.

Сега докато я гледам ми се върти из главата една идея, но незнам дали ще се получи. И така идеята ми е на машина със Server 2003/2008 едно от двете( PHP, MySQL и другите изисквания като Пърл не са ограничение или спънка). DHCP и DNS отново са лесни, чудно ми е само дали ще се получи накрая работеща система. Не ми се работи с линукс или други дестрибуции, за да мога да пусна на 1 сървър билинга, ексчейндж, уеб и т.н.

Поздрави!!!

Link to comment
Share on other sites

  • Administrator

На сървър 2008 R2 затова има сървиз за виртуални машини за да палиш каквото си искаш на една машина

@Veselin нямаше ли да е по лесно да го форматираш малко или направо да дадеш едно текстово фаелче

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Link to comment
Share on other sites

На сървър 2008 R2 затова има сървиз за виртуални машини за да палиш каквото си искаш на една машина

Колега не си ми разбрал въпроса според мен. Гледайки изискванията всичко от което имам нужда го има в сървър дистрибуциите на уиндоус, защо ми е да паля виртуална машина с микротик или линукс. Не съм го пробвал дали става по този начин.

Link to comment
Share on other sites

LMS си е чудесен, ма от какъв точно зор искаш да го слагаш на Уиндоус???!! Да разглеждаш сайта ли?... да не съм проспал излизането на iptables за Уиндоус...

Edited by gbdesign
Link to comment
Share on other sites

Явно всички сме го проспали.. :) а и няма много голяма логика с тоя униндоус ама както и да е :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.