Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Обсуждаем сайт и форум.

Модератор: f0s

tuneil
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-12-20 22:54:56

Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Непрочитанное сообщение tuneil » 2008-11-08 17:39:53

Приветствую.

Недавно, руководство поставило задачу - организовать сервер доступа. Выделили для этого дела Cisco 2651.
В результате получился nas с базой пользователей, ip (фейковых и реальных) в MySQL + rate-limits на виртуальных интерфейсах.
Итак, поэтапно:

I ) Инсталяция Freeradius 1.17

Код: Выделить всё


# cd /usr/ports/net/freeradius

# make config

[ ] KERBEROS      With Kerberos support                        
[ ] HEIMDAL       With Heimdal Kerberos support              
[ ] LDAP          With LDAP database support                   
[X] MYSQL         With MySQL database support                  
[ ] PGSQL         With PostgreSQL database support             
[ ] FIREBIRD      With Firebird database support (EXPERIMENTAL) 
[ ] SNMP          With SNMP support                            
[ ] EDIR          With Novell eDirectory support                
[ ] NOPERL        Do not require perl (use only if necessary)   
[ ] EXPERIMENTAL  Build experimental modules      
 
# make; make install clean
Правим конфиг-файлы

Код: Выделить всё


# cd /usr/local/etc/raddb
radiusd.conf
Снимаем комменты

Код: Выделить всё

1)	#  See "Authorization Queries" in sql.conf
  	  sql


2)	sql_log {
    	path = ${radacctdir}/sql-relay
    	acct_table = "radacct"
  	postauth_table = "radpostauth"

	Start = "INSERT INTO ${acct_table} (AcctSessionId, UserName, \
    	NASIPAddress, FramedIPAddress, AcctStartTime, AcctStopTime, \
    	AcctSessionTime, AcctTerminateCause) VALUES                 \
    	('%{Acct-Session-Id}', '%{User-Name}', '%{NAS-IP-Address}', \
    	'%{Framed-IP-Address}', '%S', '0', '0', '');"
    	Stop = "INSERT INTO ${acct_table} (AcctSessionId, UserName,  \
    	NASIPAddress, FramedIPAddress, AcctStartTime, AcctStopTime, \
    	AcctSessionTime, AcctTerminateCause) VALUES                 \
    	('%{Acct-Session-Id}', '%{User-Name}', '%{NAS-IP-Address}', \
    	'%{Framed-IP-Address}', '0', '%S', '%{Acct-Session-Time}',  \
    	'%{Acct-Terminate-Cause}');"
    	Alive = "INSERT INTO ${acct_table} (AcctSessionId, UserName, \
    	NASIPAddress, FramedIPAddress, AcctStartTime, AcctStopTime, \
    	AcctSessionTime, AcctTerminateCause) VALUES                 \
    	('%{Acct-Session-Id}', '%{User-Name}', '%{NAS-IP-Address}', \
    	'%{Framed-IP-Address}', '0', '0', '%{Acct-Session-Time}','');"

    	Post-Auth = "INSERT INTO ${postauth_table} (id, user, pass, reply, \
    	date) VALUES \
    	('','%{User-Name}', '%{User-Password:-Chap-Password}', \
    	'%{reply:Packet-Type}', '%S');"
	}

3)	#  Log traffic to an SQL database.
	#
	#  See "Accounting queries" in sql.conf
	#
	  sql

	#
	#  Instead of sending the query to the SQL server,
	#  write it into a log file.
	#
	  sql_log

4)	session {
	   radutmp

	#
	#  See "Simultaneous Use Checking Querie" in sql.conf
	  sql
	}	

5)	#  See "Authentication Logging Queries" in sql.conf
	  sql
	#  Instead of sending the query to the SQL server,
	#  write it into a log file.
	#
	  sql_log


Комментируем  files (по желанию)
	#  Read the 'users' file
	#   files

clients.conf
Указываем наш Cisco NAS:

Код: Выделить всё

client 192.168.0.254 {
        secret      = abcd
        shortname   = NAS
        nastype     = cisco
        require_message_authenticator = yes
}
sql.conf

Предполагается, что MySQL установлено, посему пропишем инфу о будущей базе и пользователе базы.

Код: Выделить всё

sql {
        # 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 = "yourlogin"
        password = "yourpassword"

        # Database table configuration
        radius_db = "radius"
}

Создадим пользователя в базе:

Код: Выделить всё

# mysql -u root -p

mysql> CREATE DATABASE IF NOT EXISTS radius;

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, 
  -> CREATE, DROP, INDEX, ALTER on `yourlogin`.* to 
  -> yourlogin@localhost IDENTIFIED BY 'yourlogin';

mysql> quit
Зальем в базу референсный темпл.

Код: Выделить всё

# cd /usr/ports/net/freeradius
# make extract
# cd work/freeradius-1.1.7/doc/examples/
# mysql -u root -p radius < mysql.sql

II ) Также было организована "нарезка" канала пользователям, посредством передачи AV пар. (в dictionary надо прописать поддержку)

Код: Выделить всё

mysql> INSERT INTO radgroupreply (id, GroupName, Attribute, op, Value) VALUES (NULL, 'pppoe', 'Framed-Protocol', '=', 'PPP');

mysql> INSERT INTO radgroupreply (id, GroupName, Attribute, op, Value) VALUES (NULL, 'pppoe', 'Service-Type', '=', 'Framed-User')

mysql> INSERT INTO radgroupreply (id, GroupName, Attribute, op, Value) VALUES (NULL, 'pppoe', 'Cisco-Avpair', '=', 'interface-config#1=rate-limit output 64000 12200 24400 conform-action continue exceed-action drop')

mysql> INSERT INTO radgroupreply (id, GroupName, Attribute, op, Value) VALUES (NULL, 'pppoe', 'Cisco-Avpair', '+=', 'interface-config#2=rate-limit input 64000 12200 24400 conform-action continue exceed-action drop')


mysql> INSERT INTO usergroup (UserName, GroupName, priority) VALUES ('yourname', 'pppoe', 1)



mysql> INSERT INTO radreply (id, UserName, Attribute, op, Value) VALUES (NULL, 'yourname', 'Framed-IP-Address', '=', '10.10.15.6')


mysql> INSERT INTO radcheck (id, UserName, Attribute, op, Value) VALUES (NULL, 'yourname', 'Password', '==', 'yourpass') 



INSERT INTO radgroupcheck (id, GroupName, Attribute, op, Value) VALUES (NULL, 'pppoe', 'Simultaneous-Use', ':=', '1')
Пользователь yourname с паролем yourpass при успешной авторизации получает ip из сети 10.10.15.0/27, принадлежит к групе pppoe для которой пропускная способность канала - 64кб/с.

Стоит также обратить внимание на то, что Cisco-Avpair состоит из показателей normal burst и maximum burst, которые (по дефолту) просчитывают по таким формулам:

normal burst - 1024000/8*1.5
maximum burst - (1024000/8*1.5)*2


III ) Конфиг cisco 2651

Код: Выделить всё

!
! Last configuration change at 10:21:41 UTC Fri Feb 22 2008
! NVRAM config last updated at 10:11:17 UTC Fri Feb 22 2008
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname pppoe-tor
!
aaa new-model
aaa authentication login default local
aaa authentication ppp default group radius local
aaa authorization exec default local
aaa authorization network default group radius group radius
aaa accounting delay-start
aaa accounting update periodic 5
aaa accounting network default start-stop group radius
enable secret ***************

!
username tfwr password 0 *******
clock timezone Kiev 2
ip subnet-zero
no ip source-route
no ip rcmd domain-lookup
ip rcmd rcp-enable
ip rcmd rsh-enable
!
!
ip domain-name pppoe.domain.com.ua
ip name-server ***.**.*.***
ip name-server 172.18.15.2
!
ip audit notify log
ip audit po max-events 100
virtual-profile virtual-template 1
vpdn enable
!
vpdn-group 1
 accept-dialin
  protocol pppoe
  virtual-template 1
!
!
!
call rsvp-sync
!
!
!
interface Loopback1
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
 no ip address
 duplex auto
 speed auto
!
interface FastEthernet0/0.445
 encapsulation dot1Q 445
 ip address 192.168.0.254 255.255.255.0
 ip nat inside
 pppoe enable
!
interface FastEthernet0/0.455
 encapsulation dot1Q 455
 ip address 172.18.53.242 255.255.255.0
 ip nat inside
 pppoe enable
!
interface FastEthernet0/0.15
 encapsulation dot1Q 15
 ip address 195.9*.**.*** 255.255.255.224
 ip nat outside
!
interface Virtual-Template1
 ip unnumbered Loopback1
 ip nat inside
 ppp authentication chap callin
!
ip nat inside source list nat interface FastEthernet0/0.15 overload
ip classless
ip route 0.0.0.0 0.0.0.0 195.9*.**.***
ip http server
!
!
ip access-list extended nat
 permit   ip  10.10.15.0 0.0.31.255 any
ip radius source-interface FastEthernet0/0.445
!
radius-server configure-nas
radius-server host 192.168.0.250 auth-port 1812 acct-port 1813 key abcd
radius-server attribute 6 on-for-login-auth
radius-server attribute 8 include-in-access-req
radius-server attribute 32 include-in-access-req
radius-server attribute 44 include-in-access-req
radius-server attribute 44 extend-with-addr
radius-server attribute nas-port format d
radius-server vsa send authentication
!
line con 0
line aux 0
!
line vty 5 15 
 transport preferred ssh
 transport input ssh
!
end
Для поддержки шифрования можно прописать:

Код: Выделить всё

interface Virtual-Template1
 ppp encrypt mppe 128 required
 ppp authentication chap

Всё это каcалось PPPoE сервера, с его главным недостатком - работа только в одноранговой сети. Когда же сеть сегментирована, и второй уровень не всегда можно обезпечить, на помошь приходит VPN, который с легкостью конфигурируется тут:

vpdn-group 1
accept-dialin

Тут protocol pppoe меняем на pptp. На интерфейсе убираем pppoe enable.

Отладка

Просмотр сессий

Код: Выделить всё

sh vpdn session
Сброс сессий

Код: Выделить всё

clear vpdn tunnel [pppoe, pptp]
Отладочная инфа Cisco:

Код: Выделить всё

debug aaa authentication
debug aaa authorization
debug vpdn error
debug vpdn packet
Отладочная инфа Freeradius:
Запуск радиуса с параметрами:

Код: Выделить всё

radiusd -X
radiusd -XXX

Вроде всё. Если кому пригодилось - отписывайте.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
m0ps
лейтенант
Сообщения: 986
Зарегистрирован: 2008-05-08 20:18:06
Откуда: Chernigov (Ukraine)
Контактная информация:

Re: Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Непрочитанное сообщение m0ps » 2008-11-08 22:31:38

подробно не вникал, но вполне интересная статейка!.. думаю е стоит запостить на сайте.

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Непрочитанное сообщение Al » 2008-11-10 13:24:20

m0ps писал(а):вполне интересная статейка!.. думаю е стоит запостить на сайте.
+1.
Сам когда-то разбирался с этой темой,но до радиуса не дошел.
Закинь статейку на сайт - я думаю,многие спасибо скажут.

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Непрочитанное сообщение Al » 2008-11-10 13:56:00

http://forum.lissyara.su/viewtopic.php?f=48&t=12282
Ну ты дал. Обычно делают наоборот.
Убери линк оттуда и оформи нормально статью, а то как-то некрасиво получается.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Cisco PPPoE/PPTP сервер с RADIUS авторизацией

Непрочитанное сообщение zingel » 2009-07-03 17:56:48

а в чем проблема то
Z301171463546 - можно пожертвовать мне денег