PDF de programación - Configuración ODBC en el 2.1 ISE con PostgreSQL

Imágen de pdf Configuración ODBC en el 2.1 ISE con PostgreSQL

Configuración ODBC en el 2.1 ISE con PostgreSQLgráfica de visualizaciones

Publicado el 6 de Abril del 2018
725 visualizaciones desde el 6 de Abril del 2018
813,5 KB
17 paginas
Creado hace 2a (11/10/2017)
Configuración ODBC en el 2.1 ISE con
PostgreSQL

Contenido

Introducción
prerrequisitos
Requisitos
Componentes Utilizados
Configurar
Paso 1. Configuración básica de PostgreSQL
Paso 2. Configuración ISE
Paso 3. Autenticación de usuario de la configuración
Paso 4. Extracción del grupo de la configuración
Paso 5. La configuración atribuye la extracción
Verificación
Troubleshooting
Referencias

Introducción

Este documento describe cómo configurar el Identity Services Engine (ISE) con el servidor de
PostgreSQL para la autenticación ISE usando la Conectividad abierta de base de datos (ODBC).

Nota: La autenticación de la Conectividad abierta de base de datos (ODBC) requiere el ISE poder
traer una contraseña del usuario del sólo texto. La contraseña se puede cifrar en la base de
datos, pero tiene que ser desencriptada por el procedimiento almacenado.

Prerrequisitos

Requisitos

Cisco recomienda que tenga conocimiento sobre estos temas:

2.1 del Cisco Identity Services Engine
Base de datos y conceptos ODBC
PostgreSQL 

l

l

l

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y
hardware.

2.1 del Identity Services Engine
Centos 7
PostgreSQL 9.2

l

l

l

Configurar

Nota: Código de la invitación SQL en este documento como un ejemplo. Generalmente hay
más de una manera de cifrar deseó las funciones y todas tienen sus ventajas y desventajas.

Paso 1. Configuración básica de PostgreSQL

Los pasos para la configuración incluyen la creación de la base de datos y a un usuario para el
ISE con los permisos para acceder esa base de datos.

1. Del usuario del postgres cree al usuario del isedb:

$ createuser --interactive
Enter name of role to add: isedb
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
Password:
2. Cree una base de datos

$ createdb isedb
o con el SQL:

CREATE DATABASE isedb WITH TEMPLATE = template0 OWNER = isedb;
REVOKE ALL ON DATABASE isedb FROM PUBLIC;
REVOKE ALL ON DATABASE isedb FROM postgres;
GRANT CONNECT,TEMPORARY ON DATABASE isedb TO PUBLIC;
GRANT ALL ON DATABASE isedb TO isedb;
3. Permita el acceso a PostgreSQL

sudo vi /var/lib/pgsql/data/pg_hba.conf
Encuentre las líneas que parece el, cerca de la parte inferior del archivo:

host all all 127.0.0.1/32 ident
host all all ::1/128 ident
Entonces substituya la identificación por el md5, así que parecen esto:

host all all 127.0.0.1/32 md5
host all all 10.0.0.0/8 md5
4. Permita las conexiones remotas a PgSQL

Usted necesita abrir el archivo de configuración /var/lib/pgsql/data/postgresql.conf de
PostgreSQL. Línea de configuración del hallazgo que lee:

listen_addresses='localhost'
 y cambio a

listen_addresses='*'

Permita las conexiones de todos los direccionamientos. Línea de la configuración del puerto de
Uncomment (si está comentado):

port = 5432
5. Reinicio PgSQL:

$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql

Paso 2. Configuración ISE

Cree una fuente de la identidad ODBC en la administración > fuente externa de la identidad >
ODBC y conexión de prueba:

Paso 3. Autenticación de usuario de la configuración

La autenticación ISE al ODBC utiliza los procedimientos almacenados. Es posible seleccionar el
tipo de procedimientos. En este ejemplo utilizamos los parámetros como vuelta. Para otros
procedimientos, refiera a la guía de administración del 2.1 del Cisco Identity Services Engine

Consejo: Es posible volver los parámetros Nombrados en vez del resultset. Es apenas un tipo
diferente de salida, las funciones es lo mismo.

1. Cree la tabla. Aseegurese le fijan las configuraciones de la identidad en la Clave primaria

CREATE TABLE "ISE_Users" (
user_id uuid NOT NULL,
username character varying NOT NULL,
password character varying NOT NULL
);

ALTER TABLE public."ISE_Users" OWNER TO isedb;
ALTER TABLE ONLY "ISE_Users"
ADD CONSTRAINT "ISE_Users_pkey" PRIMARY KEY (user_id);
2. Funcione con esta interrogación para insertar a un usuario

INSERT INTO "ISE_Users" VALUES ('8cc4b9b9-117a-46c4-879e-d764c9685e80', 'user1', 'password1');
O

INSERT INTO "ISE_Users" VALUES (uuid_generate_v1(), 'user1', 'password1');
Y aprenda y salve UUID generado de un usuario nuevo con esta interrogación

SELECT user_id FROM "ISE_Users" WHERE username = 'user1';
3. Cree un procedimiento para la autenticación de contraseña del sólo texto (usada para el
método interno PAP, EAP-GTC, el TACACS)

CREATE FUNCTION iseauthuserplainreturnsparameters(ise_username text, ise_password text, OUT
result integer, OUT ise_group text, OUT acctinfo text, OUT errorstring text) RETURNS record
LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER
AS $$
DECLARE
c int;
BEGIN
select count(*) into c from "ISE_Users" where username = ise_username and password =
ise_password;
IF c > 0 THEN
result := 0;
ise_group := cast ('11' as text);
acctinfo := cast ('This is a very good user, give him all access' as text);
errorstring := cast ('No error' as text);
else
result := 3;
ise_group := cast ('11' as text);
acctinfo := cast ('User is unknown or invalid password' as text);
errorstring := cast ('User is unknown or invalid password' as text);
END IF;
END;
$$;

ALTER FUNCTION public.iseauthuserplainreturnsparameters(ise_username text, ise_password text,
OUT result integer, OUT ise_group text, OUT acctinfo text, OUT errorstring text) OWNER TO isedb;
4. Cree un procedimiento para la recogida de la contraseña del sólo texto (usada para la GRIETA,
MSCHAPv1/v2, EAP-MD5, SALTO, método interno del EAP MSCHAPv2, el TACACS)

CREATE FUNCTION isefetchpasswordreturnsparameters(ise_username text, OUT result integer, OUT
ise_group text, OUT acctinfo text, OUT errorstring text, OUT ise_password text) RETURNS record
LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER
AS $$
DECLARE
c int;
BEGIN

select count(*) into c from "ISE_Users" where username = ise_username;
IF c > 0 THEN
result := 0;
ise_group := cast ('11' as text);
acctinfo := cast ('This is a very good user, give him all access' as text);
errorstring := cast ('no error' as text);
select password into ise_password from "ISE_Users" where username = ise_username;
else
result := 3;
ise_group := cast ('11' as text);
acctinfo := cast ('User is unknown' as text);
errorstring := cast ('User is unknown' as text);
END IF;
END;
$$;

ALTER FUNCTION public.isefetchpasswordreturnsparameters(ise_username text, OUT result integer,
OUT ise_group text, OUT acctinfo text, OUT errorstring text, OUT ise_password text) OWNER TO
isedb;
5. Cree un procedimiento para el nombre de usuario del control o la máquina existe (utilizado para
el MAB, rápido vuelva a conectar del PEAP, del EAP-FAST y del EAP-TTLS)

CREATE FUNCTION iseuserlookupreturnsparameters(ise_username text, OUT result integer, OUT
ise_group text, OUT acctinfo text, OUT errorstring text) RETURNS record
LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER
AS $$
DECLARE
c int;
BEGIN
select count(*) into c from "ISE_Users" where username = ise_username;
IF c > 0 THEN
result := 0;
ise_group := cast ('11' as text);
acctinfo := cast ('good user' as text);
errorstring := cast ('no error' as text);
else
result := 3;
ise_group := cast ('11' as text);
acctinfo := cast ('bad user' as text);
errorstring := cast ('bad password' as text);
END IF;
END;
$$;

ALTER FUNCTION public.iseuserlookupreturnsparameters(ise_username text, OUT result integer, OUT
ise_group text, OUT acctinfo text, OUT errorstring text) OWNER TO isedb;
6. Configure los procedimientos en el ISE y sálvelos

7. Cree una regla de la autenticación simple usando el ODBC y pruébela

BAHAMUT#test aaa group ISE user1 password1 legacy
Attempting authentication test to server-group ISE using radius
User was successfully authenticated.

Paso 4. Extracción del grupo de la configuración

1. Cree las tablas que contienen a los grupos de usuarios y otras usadas para la asignación
múltiple

CREATE TABLE "Groups" (
group_id uuid NOT NULL,
group_name character varying(255) NOT NULL,
group_description text
);

ALTER TABLE public."Groups" OWNER TO isedb;

ALTER TABLE ONLY "Groups"
ADD CONSTRAINT "Groups_pkey" PRIMARY KEY (group_id);

CREATE TABLE "User_Groups_Mapping" (
user_id uuid,
group_id uuid
);

ALTER TABLE public."User_Groups_Mapping" OWNER TO isedb;

ALTER TABLE ONLY "User_Groups_Mapping"
ADD CONSTRAINT "User_Groups_Mapping_group_id_fkey" FOREIGN KEY (group_id) REFERENCES
"Groups"(group_id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE ONLY "User_Groups_Mapping"
ADD CONSTRAINT "User_Groups_Mapping_user_id_fkey" FOREIGN KEY (user_id) REFERENCES
"ISE_Users"(user_id) ON UPDATE CASCADE ON DELETE CASCADE;
2. Agregue los grupos y las asignaciones, de modo que el user1 pertenezca a dos grupos

INSERT INTO "Groups" VALUES ('f7dfee5c-bd06-4703-9de0-4d334ea5ec02', 'Admins', 'Group for
administrators');
INSERT INTO "Groups" VALUES ('51fc0ccd-caf8-4585-ba20-6596948c879d', 'Users', 'Group for
users');

INSERT INTO "Groups" VALUES ('7b7e72bc-ea22-470c-8578-1dd86b1a1843', 'Laptops', 'Group for users
with laptops');

INSERT INTO "User_Groups_Mapping" VALUES ('8cc4b9b9-117a-46c4-879e-d764c9685e80', 'f7dfee5c-
bd06-4703-9de0-4d334ea5ec02');
INSERT INTO "User_Groups_Mapping" VALUES ('8cc4b9b9-117a-46c4-879e-d764c9685e80', '7b7e72bc-
ea22-470c-8578-1dd86b1a1843');
O genere nuevo UUIDs, no obstante usted necesitará aprenderlos con las interrogaciones
SELECTAS.

3. Cree el tipo de valor devuelto y un procedimiento de la extracción del grupo

CREATE TYPE g4type AS (
result integer,
group_n text
);

ALTER TYPE public.g4type OWNER TO isedb;

CREATE FUNCTION isegroupsh(ise_username text) RETURNS SETOF g4type
LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER
AS $$
DECLARE
c int;
i int;
r g4type%rowtype;
BEGIN
if ise_username = '*' then
for r in select 0, cast(group_name as text) from "Groups"
loop
return next r;
end loop;
else
select count(*) into c from "ISE_Users" where username = ise_username;
IF c > 0 THEN
for r in select 0, c
  • Links de descarga
http://lwp-l.com/pdf10234

Comentarios de: Configuración ODBC en el 2.1 ISE con PostgreSQL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad