scieee Science in your language
[es] (orig)

Implementación de un laboratorio mediante contenedores

Abstract

Los laboratorios docentes son una parte esencial de la formación de los estudiantes en las titulaciones de Informática, ya que permiten poner en práctica los conocimientos aprendidos en las clases teóricas. En muchas de las asignaturas de estas titulaciones se requiere el uso de virtualización para poder trabajar en entornos aislados, con el fin de poder probar programas o comandos peligrosos sin poner en riesgo la integridad del laboratorio, así como para poder recrear infraestructuras de red completas. Habitualmente, la virtualización se efectúa a través de máquinas virtuales, lo que supone una gran sobrecarga y un bajo rendimiento durante la realización de las prácticas. Por ello, en este Trabajo Fin de Grado se pretende evaluar la puesta en funcionamiento de un laboratorio docente mediante contenedores. Se realizará un estudio del funcionamiento de los contenedores, así como de las necesidades que poseen los laboratorios docentes, para así diseñar una propuesta, utilizando Docker como programa de gestión de los contenedores, que se adecúe a los requisitos exigidos y que permita realizar las prácticas de forma satisfactoria. Esta propuesta será evaluada en una prueba de concepto consistente en realizar una práctica de la asignatura Redes y Seguridad II del Grado en Ingeniería Informática de la Universidad Complutense de Madrid. Además, se comparará esta propuesta con el despliegue actual para determinar si efectivamente se produce una mejora de rendimiento, y se realizará un análisis de seguridad que verifique que no existen riesgos derivados de la ejecución de contenedores.

Read accessible full text

Implementación de un laboratorio mediante contenedores

Author: Román Dono, Mario
Year: 2022
Source: https://docta.ucm.es/bitstreams/9d0b166e-cb06-4ddb-b7ad-52798b43c28e/download
Implemen ación de un labo a o io
median e con enedo es
Implemen a ion o a labo a o y using con aine s
Ma io Román Dono
T abajo Fin de G ado
G ado en Ingenie ía In o má ica
Facul ad de In o má ica
Di igido po
Inmaculada Pa dines Lence y Ma cos Sánchez-Élez Ma ín
Mad id, 2021–2022
Implemen ación de un labo a o io
median e con enedo es
Memo ia pa a el T abajo de Fin de G ado
Ma io Román Dono
Di igido po
Inmaculada Pa dines Lence y Ma cos Sánchez-Élez Ma ín
Depa amen o de A qui ec u a de Compu ado es y Au omá ica
Facul ad de In o má ica
Uni e sidad Complu ense de Mad id
Mad id, 2021 – 2022
Ag adecimien os
No malmen e es e espacio suele es a ese ado pa a ag adece a odas aquellas pe sonas
impo an es en la ida del au o que le han acompañado y ayudado a lo la go de la
elabo ación del TFG, y si lo hacemos más ex enso, a lo la go de odo el g ado: pad es,
he manos, o os amilia es, amigos del ins i u o, compañe os de acul ad... Y, ob iamen e,
en mi caso no es pa a menos, y se ía egoís a po mi pa e no aco da me de ellos cuando
me han co egido abajos, me han dado suge encias cuando lo necesi aba o, simplemen e,
me han apoyado du an e es os cua o años.
Pe o pienso que, como es e abajo signi ica el in de mi e apa como es udian e —al
menos po el momen o—, lo que ealmen e iene sen ido es que es e espacio es é dedicado
especialmen e a las siguien es pe sonas:
Lola, Ja ie , Luis, Julia, Se gio, Ana, Juan, Julio, Cla a, Gonzalo, Raquel, Juan Ca los
y, cómo no, Ma cos e Inma.
Todos ellos, p o eso es que he enido a lo la go de oda mi ida, desde p ima ia has-
a es e úl imo año de ca e a. Ya sea po habe se es o zado pa a acili a me las cosas
en momen os complicados, po habe log ado asmi i sus conocimien os pa a que me
pudie a con e i en una pe sona más comple a o, sencillamen e, po habe hecho que
aya a gua da innume ables buenos ecue dos de mi paso po el colegio, el ins i u o y la
uni e sidad.
Po es os mo i os, muchas g acias po odo, po que sin oso os no hab ía podido llega
has a donde es oy hoy, e minando es e abajo.
i
Resumen
Los labo a o ios docen es son una pa e esencial de la o mación de los es udian es en las
i ulaciones de In o má ica, ya que pe mi en pone en p ác ica los conocimien os ap endi-
dos en las clases eó icas. En muchas de las asigna u as de es as i ulaciones se equie e el
uso de i ualización pa a pode abaja en en o nos aislados, con el in de pode p oba
p og amas o comandos pelig osos sin pone en iesgo la in eg idad del labo a o io, así co-
mo pa a pode ec ea in aes uc u as de ed comple as. Habi ualmen e, la i ualización
se e ec úa a a és de máquinas i uales, lo que supone una g an sob eca ga y un bajo
endimien o du an e la ealización de las p ác icas. Po ello, en es e T abajo Fin de G a-
do se p e ende e alua la pues a en uncionamien o de un labo a o io docen e median e
con enedo es. Se ealiza á un es udio del uncionamien o de los con enedo es, así como
de las necesidades que poseen los labo a o ios docen es, pa a así diseña una p opues a,
u ilizando Docke como p og ama de ges ión de los con enedo es, que se adecúe a los
equisi os exigidos y que pe mi a ealiza las p ác icas de o ma sa is ac o ia. Es a p o-
pues a se á e aluada en una p ueba de concep o consis en e en ealiza una p ác ica de
la asigna u a Redes y Segu idad II del G ado en Ingenie ía In o má ica de la Uni e sidad
Complu ense de Mad id. Además, se compa a á es a p opues a con el despliegue ac ual
pa a de e mina si e ec i amen e se p oduce una mejo a de endimien o, y se ealiza á
un análisis de segu idad que e i ique que no exis en iesgos de i ados de la ejecución de
con enedo es.
Palab as cla e: con enedo es, Docke , labo a o ios docen es, i ualización.
ii
Abs ac
Teaching labo a o ies a e an essen ial pa o he educa ion o s uden s in Compu e
Science deg ees, since hey allow hem o pu in o p ac ice he knowledge lea ned in
heo e ical classes. Many o he subjec s o hese deg ees equi e he use o i ualiza-
ion o be able o wo k in isola ed en i onmen s, in o de o es dange ous p og ams o
commands wi hou comp omising he in eg i y o he labo a o y, as well as o be able o
ec ea e comple e ne wo k in as uc u es. Usually, i ualiza ion is done h ough i ual
machines, which means a g ea o e load and a low pe o mance du ing he ealiza ion
o he p ac ices. Fo his eason, he aim o his Final Deg ee P ojec is o e alua e he
implemen a ion o a eaching labo a o y using con aine s. A s udy o he unc ioning o
he con aine s will be ca ied ou , as well as o he needs o he eaching labo a o ies,
in o de o design a p oposal, using Docke as he con aine managemen p og am, ha
mee s he equi emen s demanded and ha allows o pe o m he p ac ices in a sa is-
ac o y way. This p oposal will be e alua ed in a p oo o concep consis ing o ca ying
ou a p ac ice o he subjec Compu e Ne wo ks Secu i y II o he Deg ee in Compu e
Science Enginee ing o he Complu ense Uni e si y o Mad id. In addi ion, his p oposal
will be compa ed wi h he cu en deploymen o de e mine i he e is indeed a pe o -
mance imp o emen , and a secu i y analysis will be pe o med o e i y ha he e a e
no isks de i ed om he execu ion o con aine s.
Keywo ds: con aine s, Docke , eaching labo a o ies, i ualiza ion.
iii

Sob e T
EF
L
O
NX
Te lon X(cc0 1.0(documen ación) MIT(código))es una plan illa de L
A
T
EX
c eada po Da id Pacios Izquie do con echa de Ene o de 2018. Con a i-
buciones de uso CC0.
Es a plan illa ue desa ollada pa a acili a la c eación de documen ación p o esional
pa a T abajos de Fin de G ado, T abajos de Fin de Más e o Doc o ados. La e sión
usada es la X
V:X O e lea V2 wi h XeLaTeX, ma gin 1in, bib
Con ac o
Au o : Da id Pacios Izquie do
Co eo: [email p o ec ed]
ASCII: [email p o ec ed]
Despacho 110 - Facul ad de In o má ica
i
Índice gene al
Página
1. In oducción 1
1.1. Mo i ación .................................. 1
1.2. Obje i osdel abajo............................. 3
1.3. Es adodela e ................................ 3
1.4. Plani icación de las a eas . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. O ganización de la memo ia . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. In oduc ion 6
1.1. Mo i a ion................................... 6
1.2. Objec i e o he p ojec . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3. S a e-o - he-a ................................ 8
1.4. Plannning o he asks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5. O ganiza ion o he epo . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2. Vi ualización 11
2.1. O ígenes.................................... 11
2.2. Tipos de i ualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1. Vi ualización comple a . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2. Pa a i ualización . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3. Vi ualización a ni el de sis ema ope a i o . . . . . . . . . . . . . 14
2.3. Vi ualización a ni el de sis ema ope a i o y con enedo es . . . . . . . . 14
2.3.1. Repaso his ó ico . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2. So wa e de con enedo es disponible . . . . . . . . . . . . . . . . 17
2.3.3. Ejemplos de casos de uso . . . . . . . . . . . . . . . . . . . . . . 19
2.3.4. Rendimien o ............................. 21
2.3.5. Segu idad............................... 22
3. Implemen ación basada en las necesidades de los labo a o ios docen es 25
3.1. Si uaciónac ual................................ 25
3.2. Ca ac e ís icas de los con enedo es de eemplazo . . . . . . . . . . . . . . 27
3.2.1. Diseño de los con enedo es . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2. Imagen base de los con enedo es . . . . . . . . . . . . . . . . . . 28
3.2.3. Conexión de ed en e los con enedo es . . . . . . . . . . . . . . . 29
3.2.4. Uso de aplicaciones de in e az g á ica . . . . . . . . . . . . . . . 30
3.2.5. Compa ición de a chi os en e con enedo es . . . . . . . . . . . . 31
3.3. Elección del so wa e de con enedo es . . . . . . . . . . . . . . . . . . . . 31
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
3.4. Despliegue de los con enedo es pa a las p ác icas . . . . . . . . . . . . . 32
3.5. Imágenes disponibles pa a las p ác icas . . . . . . . . . . . . . . . . . . . 34
3.6. Ejecución de los con enedo es: ¿na i a o sob e una máquina i ual? . . . 34
3.6.1. Elección del hipe iso . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6.2. Elección del sis ema ope a i o de la máquina i ual . . . . . . . 36
4. C eación del en o no de con enedo es 41
4.1. Ins alación y con igu ación de Alpine . . . . . . . . . . . . . . . . . . . . 41
4.1.1. C eación de la máquina i ual . . . . . . . . . . . . . . . . . . . 41
4.1.2. Ins alación básica de Alpine . . . . . . . . . . . . . . . . . . . . . 41
4.1.3. Con igu ación g á ica . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.4. Ins alación de Docke y ajus es adicionales . . . . . . . . . . . . . 42
4.2. Desa ollo de la he amien a de despliegue de con enedo es . . . . . . . . 45
4.2.1. Ve sión p elimina de la he amien a . . . . . . . . . . . . . . . . 45
4.2.2. Ve sión inal de la he amien a . . . . . . . . . . . . . . . . . . . 45
5. Resul ados 60
5.1. En o nodep uebas.............................. 60
5.2. P uebadeconcep o.............................. 60
5.3. E aluación del endimien o . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3.1. Espacio de disco u ilizado . . . . . . . . . . . . . . . . . . . . . . 67
5.3.2. Tiempo de c eación . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3.3. Uso de CPU, memo ia y en ada/salida . . . . . . . . . . . . . . 70
5.3.4. Discusión ............................... 71
5.4. Análisis de segu idad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6. Conclusiones y abajo u u o 74
6.1. Conclusiones ................................. 74
6.2. T abajo u u o ................................ 75
6. Conclusions and u u e wo k 76
6.1. Conclusions.................................. 76
6.2. Fu u ewo k.................................. 77
7. Bibliog a ía y enlaces de e e encia 78
Apéndice A. Código de la e sión p elimina de la he amien a de desplie-
gue 89
Apéndice B. Manual de uso de la he amien a de despliegue de con ene-
do es 99
Apéndice C. Resul ado de Docke Bench o Secu i y 101
i
Capí ulo 1
In oducción
1.1. Mo i ación
Los labo a o ios docen es son una pa e esencial de la o mación de los es udian es en
las i ulaciones de In o má ica, ya que pe mi en pone en p ác ica los conocimien os
ap endidos en las clases eó icas. Desde el pun o de is a más básico, un labo a o io
docen e no es más que una sala de o denado es si uada en una acul ad de In o má ica,
cuyos sis emas pueden se u ilizados po los es udian es pa a ealiza las p ác icas de
las asigna u as que es én cu sando. Sin emba go, dependiendo de cada asigna u a, las
ca ac e ís icas de los labo a o ios pueden a ia signi ica i amen e.
Po ejemplo, pa a ealiza p ác icas en asigna u as de p og amación, los es udian es pue-
den abaja di ec amen e con los en o nos de desa ollo y los compilado es o in é p e es
que se encuen en ins alados en los o denado es del labo a o io. Po el con a io, en aque-
llas asigna u as elacionadas con la segu idad de sis emas y edes, es necesa io emplea
algún ipo de aislamien o que pe mi a que se puedan p oba p og amas o comandos
pelig osos sin pone en iesgo la in eg idad del labo a o io.
El mé odo más comúnmen e u ilizado en la ac ualidad pa a a aja es e p oblema es ecu-
i a la i ualización, en conc e o, al uso de máquinas i uales, que pe mi en la c eación
de subsis emas aislados en e sí y del p opio o denado an i ión. Es o ab e un amplio
abanico de opo unidades: desde la posibilidad de p oba un sis ema ope a i o di e en e
has a la ejecución de so wa e malicioso o la ep oducción de a aques in o má icos con
el in de es udia su compo amien o, pasando po la ins alación de nue os p og amas
en caso de no ene pe misos pa a hace lo sob e la máquina an i iona. Po o a pa e,
dado que es posible ejecu a a ias máquinas i uales den o de un mismo sis ema, se
pueden llega a cons ui in aes uc u as de ed comple as, ec eando clien es, ou e s y
se ido es de mane a iel a como se compo a ían en un en o no eal. Todo ello mien as
se ga an iza que la in aes uc u a subyacen e no se llega á a e a ec ada en ningún
caso.
No obs an e, las máquinas i uales ienen una no able des en aja, y es que su u ilización
conlle a una g a e penalización en el endimien o del sis ema debido a que es necesa io
i ualiza comple amen e el sis ema ope a i o de cada en o no. La sob eca ga es oda ía
mayo en aquellos casos donde sea necesa io ejecu a más de una máquina i ual al mismo
1
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
1.2. Objec i e o he p ojec
The objec i e o his p ojec is o e alua e he implemen a ion o a eaching labo a o y
using con aine s ins ead o i ual machines, checking i i is possible o ca y ou he
p ac ices o he sys ems and ne wo ks subjec s o he deg ees o he Facul y o Compu e
Science o he Complu ense Uni e si y o Mad id and analyzing i s beha io in e ms o
pe o mance and secu i y.
Speci ically, we in end o analyze wha cha ac e is ics he con aine s mus ha e o se e
as a eplacemen o i ual machines, s udy which con aine so wa e is he mos ap-
p op ia e o implemen his p ojec , de e mine which en i onmen is mo e bene icial o
he execu ion o he con aine s —na i e execu ion o on a i ual machine— and inally,
compa e he designed p oposal wi h he cu en deploymen , bo h a pe o mance and
secu i y le el.
1.3. S a e-o - he-a
The p oblem desc ibed in sec ion 1.1 is common o almos all labo a o ies whe e classical
i ualiza ion is used, he e o e he e a e many ela ed wo ks ha explo e he di e en
possibili ies o eplace he use o i ual machines, ei he h ough cloud compu ing o
h ough he use o con aine s. Focusing on his second al e na i e, [6] p esen s he mi-
g a ion p ocess om i ual machines o con aine s in Tele-Lab, an e-lea ning pla o m
specialized in cybe secu i y. The implemen a ion o con aine s was ca ied ou success-
ully and i was possible o inc ease he scalabili y and pe o mance o he en i onmen
wi hou eso ing o o he mo e expensi e al e na i es such as he public cloud. How-
e e , in ha wo k i was necessa y o u he e alua e and co ec he secu i y o he
con aine s, as hey we e unning in p i ileged mode.
Howe e , he mos ad anced p ojec in his ield is undoub edly Lab aine s [7] [8]. This
p ojec allows he au oma ed deploymen o dis ibu ed con aine s in i ual ne wo ks o
he p ac ice o cybe secu i y exe cises. Bu unlike he p e ious wo k, in which use s had
o connec o a pla o m o access he i ualized en i onmen s, in his case he con aine s
un on he use ’s machine, ei he on he compu e ’s own ope a ing sys em o encapsula ed
in a i ual machine. This amewo k includes mo e han 50 eady-made exe cises, among
which a e p ac ices on bu e o e low ulne abili ies, SQL injec ion o i ual p i a e
ne wo k (VPN) con igu a ion. In addi ion, he exe cises can be cus omized o each
s uden and au oma ically co ec ed based on he ac ions pe o med in he con aine s. I
is also possible o c ea e new exe cises, bu i is no possible o deploy con aine s ha a e
no associa ed wi h a pa icula exe cise, which limi s o some ex en he cases in which
i can be used.
Finally, C Labs [9] also allows o pe o m cybe secu i y exe cises on con aine s, bu again
op s o he use o a se e o which use s mus connec ia he In e ne . Con aine s a e
c ea ed h ough a web in e ace, and in e nally a e managed by a con aine o ches a o
o con ol scaling a all imes. C Labs can be deployed on a physical machine, in a i ual
machine, in a p i a e cloud o in a public cloud.
In his p ojec we will ollow a simila app oach o Lab aine s, whe eby he con aine s
will be un on he labo a o y machines o on he s uden s’ compu e s. This a oids he
8

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
equi emen o an addi ional pla o m, which is a bene i bo h in e ms o in as uc u e
cos s and in e ms o a oiding he need o s uden s o always be connec ed o he
co esponding se e .
Howe e , he igid app oach o his p ojec , in which he eache s o each subjec mus
c ea e he con aine s uc u e be o ehand, will no be main ained. The s uden s hem-
sel es will be o ced o de ine he co esponding ne wo k opology, make he necessa y
changes in he con aine s’ con igu a ion and ins all he so wa e equi ed in each p ac-
ice. Thus, s uden s will be able o s eng hen hei knowledge o ope a ing sys ems and
ne wo ks, in addi ion o being able o use hese en i onmen s in a mo e a ied ange o
subjec s.
1.4. Plannning o he asks
Fi s o all, a s udy o he unc ioning o he con aine s was conduc ed and he cha ac e -
is ics o he eaching labo a o ies we e analyzed in o de o design a p oposal ha would
mee hei equi emen s.
Once hese equi emen s we e es ablished, a i s app oach was ca ied ou wi h he
objec i e o de e mining whe he i was possible o pe o m a p ac ice o a sys ems
and ne wo ks cou se using con aine s in a sa is ac o y way. The op ions wi h which
he con aine s should be c ea ed we e s udied, as well as he p ope ies wi h which he
execu ion en i onmen should be con igu ed.
A e his i s es , he implemen a ion o he solu ion was e iewed o see i i was
possible o apply unc ional, secu i y o pe o mance imp o emen s.
Finally, he inal e sion o he p oposal was compa ed wi h he cu en deploymen o
i ual machines o e alua e whe he he e was indeed a pe o mance gain. A secu i y
analysis was also pe o med o de e mine i he e we e any isks de i ed om he use
o con aine s and o e i y ha he designed solu ion complied wi h he desi ed equi e-
men s.
1.5. O ganiza ion o he epo
This epo is o ganized in six chap e s. The i s chap e includes he mo i a ion o
his wo k, i s objec i e, he s a e-o - he-a and he planning o he asks ca ied ou
h oughou he p ojec .
The second chap e con ains a heo e ical in oduc ion abou i ualiza ion and con-
aine s. The mos popula i ualiza ion echnologies cu en ly a ailable a e desc ibed,
wi h special emphasis on OS-le el i ualiza ion. In addi ion, he possible uses o his
echnique and ce ain conside a ions ega ding i s pe o mance and secu i y a e ex-
plained.
The hi d chap e shows in de ail he cha ac e is ics o he eaching labo a o ies in he
Facul y o Compu e Science o he Complu ense Uni e si y o Mad id. Speci ically, he
p ope ies o he i ualiza ion so wa e and he i ual machines ha a e cu en ly used
o he ealiza ion o he p ac ices a e explained. Then, i is speci ied how he con aine s
ha will se e as eplacemen o he i ual machines should be designed, he con aine
9
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
managemen p og am ha will be used and he cha ac e is ics o he en i onmen whe e
he con aine s will be deployed.
The ou h chap e de ails he p ocess o c ea ing he con aine s en i onmen . Fi s o
all, i is explained how he ins alla ion and con igu a ion o he Alpine i ual machine
was pe o med in o de o be able o un Docke co ec ly. Subsequen ly, he ea u es
o he ool de eloped in his p ojec o he au oma ed deploymen and managemen o
con aine s a e explained.
The i h chap e de ails he esul s o he p oo o concep ca ied ou , which consis ed
in he implemen a ion o a p ac ice o he Compu e Ne wo ks Secu i y II subjec o he
Deg ee in Compu e Science Enginee ing o he Complu ense Uni e si y o Mad id, using
se e al con aine s. A pe o mance compa ison be ween he use o con aine s and he
en i onmen based on i ual machines is also included, as well as a secu i y analysis o
he designed solu ion.
Finally, he six h chap e p esen s he conclusions o his p ojec and he possible u u e
wo k ha could be done based on he p og ess achie ed in his p ojec .
10
Capí ulo 2
Vi ualización
2.1. O ígenes
An es de explica qué son los con enedo es y po qué pueden esul a a ac i os como al-
e na i a pa a implemen a labo a o ios docen es, es in e esan e ealiza un b e e epaso
de la ecnología en la que es án basados, la i ualización, y cómo ha ido e olucionando a
lo la go de la his o ia has a llega al pun o en el que se encuen a en la ac ualidad.
La i ualización consis e en el epa o de los ecu sos ha dwa e de un sis ema in o má ico
median e so wa e con el obje i o de c ea uno o a ios subsis emas aislados en e sí y
del sis ema an i ión. Es o pe mi e que den o de una única máquina se puedan gene a
a ios en o nos i uales di e en es que se compo an de idén ica mane a a como si se
ejecu asen en una máquina ísica.
Dependiendo del ipo de i ualización, el epa o y pa icionado de ha dwa e se ealiza
de o mas dis in as, pe o en gene al odas coinciden en que, g acias a una capa de so wa e
conocida comúnmen e como hipe iso , se consigue que odos los disposi i os del sis ema
sean is os po el sis ema i ual como si es u ie an disponibles únicamen e pa a él
solo, con independencia del uso adicional que ealice el sis ema an i ión u o os posibles
sis emas i ualizados que exis an en la máquina.
Es a ecnología u o sus o ígenes en el año 1968 de la mano de IBM con la c eación del
sis ema ope a i o CP/CMS [10]. Es aba undamen ado en la idea de iempo compa i-
do, que pe mi ía que múl iples usua ios pudie an lle a a cabo sus ca gas de abajo de
o ma aislada sob e una misma máquina median e la simulación de un sis ema ope a i o
comple o pa a cada uno de ellos. Es e concep o p opo cionaba dos impo an es en ajas:
pa a los p opie a ios de los main ames ab icados po IBM, implicaba que sus sis emas
pudie an se ap o echados en aquellos momen os en los que no es u ie an siendo u iliza-
dos; po o a pa e, ab ía la posibilidad de que aquellos usua ios que no podían ealiza el
eno me desembolso que suponía la comp a de uno de es os o denado es pudie an accede
de una o ma más económica a es os.
Aunque la idea del iempo compa ido siguió madu ando a lo la go de la década de los
70, llegando a se sopo ada po más o denado es y po sis emas ope a i os como Mul ics
y su suceso Unix, a pa i de los años 80 empezó a cae en desuso debido a la apa ición
11
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
del o denado pe sonal, p omo iendo que cada usua io pudie a ealiza su abajo en
su máquina indi idual en luga de que odos ellos se u ie an que conec a a un único
main ame [10].
A inales de los años 90 y p incipios de los 2000 la i ualización expe imen ó un esu -
gimien o, siendo des acable el lanzamien o en 1999 de VMWa e Wo ks a ion, el p ime
so wa e capaz de i ualiza la a qui ec u a x86 [11]. A pa i de en onces los a ances
ealizados en es e campo se sucedie on ápidamen e, como el sopo e ha dwa e a la i -
ualización po pa e de In el y AMD con In el VT-X y AMD-V en 2005 [12], [13] o el
desa ollo de nue os p og amas de i ualización ampliamen e u ilizados hoy en día, co-
mo po ejemplo Xen en 2003, c eado en la Uni e sidad de Camb idge [14]; KVM —siglas
de Ke nel-based Vi ual Machine— en 2006, que inco po aba es a ecnología como un
módulo del ke nel de Linux [15]; o Vi ualBox en 2007, que se ía adqui ido po O acle
poco iempo después [16].
G acias a es os p og esos, la i ualización pudo empeza a se más ampliamen e u ilizada
y a o ece más posibilidades. Ya no se ía únicamen e pa a compa i el ha dwa e de un
sis ema como en el caso del CP/CMS, sino que pe mi ía u iliza sis emas ope a i os di e-
en es sin necesidad de modi ica el ya exis en e, ins ala aplicaciones no compa ibles con
el sis ema an i ión, p oba so wa e sin miedo a que el o denado se ea dañado...
Uno de los casos más no ables es el del cloud compu ing, undamen ado en g an medida
en la i ualización. Po ejemplo, la mayo ía de los se icios disponibles en el mayo
p o eedo de compu ación en la nube, Amazon Web Se ices, se basan en la c eación de
en o nos i ualizados al amen e elás icos y escalables den o de sus se ido es. A su ez,
dos de sus se icios de compu ación sin se ido , AWS Lambda y AWS Fa ga e, u ilizan
Fi ec acke como c eado y ges o de es os en o nos i ualizados, empleando pa a ello
KVM [17].
2.2. Tipos de i ualización
Una ez de inida qué es la i ualización, podemos analiza los dis in os ipos que exis en,
en qué se di e encian unos de o os y en qué si uaciones puede se más en ajoso op a
po cada uno de ellos [18], [19]:
2.2.1. Vi ualización comple a
Figu a 2.1: Funcionamien o de la i ualización
comple a con sopo e de ha dwa e. Ob enido de [18]
Es a écnica de i ualización simula com-
ple amen e el ha dwa e subyacen e, de ma-
ne a que los en o nos i ualizados, am-
bién conocidos como máquinas i uales,
no ienen cons ancia de que es án sien-
do ejecu ados sob e una máquina an i ión.
En sus comienzos, es a ecnología u iliza-
ba una doble ác ica pa a ejecu a las ins-
ucciones del sis ema ope a i o in i ado:
las ins ucciones no i ualizables e an a-
ducidas po el hipe iso median e un p o-
cedimien o conocido como aducción bi-
12
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
na ia, mien as que las ins ucciones del espacio de usua io se ejecu aban di ec amen e
sob e el p ocesado . Sin emba go, g acias a la apa ición de las adap aciones ha dwa e de
In el y AMD mencionadas an e io men e —y ob iando el caso del IBM Sys em/370, que
en 1972 ya se encon aba adap ado pa a la i ualización del CP/CMS [20]—, la aduc-
ción bina ia ue eemplazada po un nue o modo de ejecución en la CPU, de al o ma
que aquellas ins ucciones p i ilegiadas son cap u adas di ec amen e po el hipe iso ,
mejo ando así el endimien o. En la igu a 2.1 podemos e un esquema que mues a
el uncionamien o de la i ualización comple a asis ida po ha dwa e. Es a écnica de
i ualización es empleada po la mayo ía de aplicaciones de VMWa e o po KVM, po
ejemplo.
2.2.2. Pa a i ualización
Figu a 2.2: Funcionamien o de la
pa a i ualización. Ob enido de [18]
En es e caso, las ins ucciones no i ualizables
se eemplazan po hype calls, pe mi iendo la co-
municación di ec a del sis ema ope a i o in i a-
do con el hipe iso , lo que mejo a el endimien-
o en algunas ocasiones. La igu a 2.2 p esen a
cómo unciona la pa a i ualización. Pa a pode
emplea es a écnica, el núcleo del sis ema ope a-
i o debe es a adap ado pa a la pa a i ualiza-
ción. En sus p ime as e apas, es o suponía una
impo an e limi ación debido a que exigía que
exis ie a una e sión del ke nel pa a cada hipe i-
so ; no obs an e, es o ue sol en ado en la e sión
2.6.23 del núcleo de Linux g acias a la apa ición
de pa a i -ops, posibili ando que el mismo ke -
nel pudie a se ejecu ado en cualquie hipe iso
que admi iese pa a i ualización así como en ba e me al sin ealiza ninguna modi icación
adicional [21]. En el caso de Windows, no es posible u iliza lo como sis ema ope a i o
in i ado debido a que no sopo a la pa a i ualización [22]. Xen es el hipe iso más
popula que u iliza exclusi amen e es a ecnología. Además, algunos hipe iso es de i -
ualización comple a como Vi ualBox, Hype -V o VMWa e Wo ks a ion habili an la
pa a i ualización pa cialmen e pa a la ealización de a eas especí icas, ob eniendo las
en ajas de ambos en oques.
An es de pasa al e ce y úl imo ipo de i ualización, es necesa io especi ica que,
an o en el caso de la pa a i ualización como en el de la i ualización comple a, los
hipe iso es se di iden en dos ca ego ías [19]:
Tipo 1: También denominados como hipe iso es na i os, se ca ac e izan po que se
ejecu an di ec amen e sob e el ha dwa e del sis ema, y los ecu sos u ilizados po las
máquinas i uales son asignados di ec amen e po el hipe iso , que ac úa como
el sis ema ope a i o an i ión. Po es e mo i o, su e iciencia es supe io debido a
que no exis en in e media ios. Algunos ejemplos son KVM [23], Xen [24], Mic oso
Hype -V [25] o VMWa e ESXi [26].
Tipo 2: En es a clase de hipe iso es, conocidos como hipe iso es alojados, la
ges ión del ha dwa e es lle ada a cabo po el sis ema ope a i o de la máquina
an i ión, que ac úa como in e media io en e el ha dwa e y el hipe iso . Suelen se
13

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
usados en en o nos donde el endimien o no es c í ico, ya que la capa del sis ema
ope a i o an i ión supone una sob eca ga adicional. Sin emba go, ienen como
en aja que suelen se más áciles de ins ala y ges iona pa a usua ios menos
expe imen ados que los de ipo 1. Las al e na i as más popula es ac ualmen e son
O acle VM Vi ualBox [16], VMWa e Wo ks a ion P o [27] y Pa allels Desk op
[28].
2.2.3. Vi ualización a ni el de sis ema ope a i o
Es a écnica es adicalmen e di e en e a las an e io es debido a que en es e caso no exis e
un hipe iso ni máquinas i uales, sino que los en o nos i ualizados son ins ancias
c eadas a ni el de usua io que no incluyen un sis ema ope a i o comple o, ya que hacen
uso del ke nel del o denado an i ión pa a sus ope aciones.
Los con enedo es se basan en la i ualización a ni el de sis ema ope a i o, siendo es a
la ecnología p incipal de es e abajo. Es po ello que se dedica la siguien e sección
a ealiza una explicación más de allada, necesa ia pa a en ende mejo el alcance del
abajo desa ollado en es e p oyec o.
2.3. Vi ualización a ni el de sis ema ope a i o y
con enedo es
Como ya hemos expues o, la i ualización a ni el de sis ema ope a i o se basa en c ea
en o nos aislados de la máquina an i ión en el ni el de usua io, sin necesidad de i ua-
liza comple amen e el sis ema ope a i o in i ado ya que odos los en o nos compa en
el ke nel an i ión. Po o a pa e, en es a clase de i ualización los hipe iso es son
sus i uidos po aplicaciones denominadas mo o es que ges ionan la c eación y ida de los
en o nos. Dependiendo de la ecnología conc e a, es os en o nos eciben un nomb e di e-
en e —zonas, se ido es p i ados i uales, jaulas...—, pe o ac ualmen e el nomb e más
común es el de con enedo es. En la igu a 2.3 se puede e la di e encia de diseño en e
las máquinas i uales y los con enedo es, que eemplazan el hipe iso po un mo o y
p escinden del sis ema ope a i o in i ado.
14
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Figu a 2.3: Compa ación en e hipe iso es y con enedo es. Ob enido de [29]
Al no exis i hipe iso es ni ene que emplea un sis ema ope a i o in i ado comple o,
la sob eca ga que implica i ualiza un sis ema u ilizando es a écnica es no ablemen e
in e io a la que esul a ía de u iliza i ualización comple a o pa a i ualización. Ade-
más, no solamen e epe cu e en un meno uso de los ecu sos del sis ema, sino que el
iempo de c eación y pues a en ma cha de es os en o nos es ambién muy in e io al de
las máquinas i uales, debido a que el núcleo del sis ema ope a i o ya es á ca gado en
memo ia y se ejecu an menos a eas du an e la e apa de a anque. Es os aspec os se án
is os con más de alle en la sección 2.3.4.
Es as azones son algunas de las causas po las que es a clase de i ualización ha ganado
especial ele ancia en los úl imos años, pe o no las únicas. Sin emba go, an es de con inua
explicando cuáles son los ac o es adicionales exis en es, es ele an e hace un epaso
his ó ico, mos ando desde sus p ime os pasos has a el es ado ac ual de es a ecnología
[30].
2.3.1. Repaso his ó ico
Aunque no se a a de i ualización como al, el p ime a ance conside ado como p e-
cu so de es a ecnología ue la inco po ación de la llamada de sis ema ch oo al núcleo
de UNIX en 1979 [31]. Es a llamada cambia apa en emen e el di ec o io aíz de un p o-
ceso y de sus hijos, de al o ma que se consigue un aislamien o pa cial del sis ema de
a chi os, imposibili ando el acceso a o os a chi os ue a del di ec o io especi icado en la
llamada.
F eeBSD in odujo en su e sión 4.0, publicada en el año 2000, las jails o jaulas. Ex-
endiendo la uncionalidad de ch oo , se i ualizan además los sis emas de usua ios y
de ed, de al o ma que las jaulas sí se conside an como i ualización a ni el de sis e-
ma ope a i o [32]. En 2001 es e concep o llegó a Linux de la mano de Linux-VSe e ,
cambiando en es e caso la denominación de jaulas a se ido es p i ados i uales [33].
No obs an e, pa a su uncionamien o se eque ía que el ke nel es u ie a pa cheado p e-
iamen e, lo cual p o ocó que su adopción uese bas an e limi ada. O as al e na i as
15
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
simila es apa ecie on en años sucesi os, como Sola is Con aine s en 2004 pa a Sola is u
OpenVZ en 2005 pa a Linux —en el caso de es e úl imo, ambién eque ía de un núcleo
modi icado al y como sucedía con Linux-VSe e —.
En 2006 se p odujo un a ance sus ancial en la i ualización a ni el de sis ema ope a i o
con la c eación de los P ocess Con aine s, que más a de se ían enomb ados a con ol
g oups, más comúnmen e conocidos como cg oups. Desa ollados po Paul Menage, se
a aban de modi icaciones añadidas a la e sión 2.6 del ke nel de Linux que posibili aban
la c eación de g upos de p ocesos que ecibie an un uso equi a i o del ha dwa e del
sis ema, de al o ma que ninguno de ellos pudie a acapa a odo el uso de los ecu sos
disponibles [34].
Po o o lado, en e las e siones 2.4 y 3.8 del ke nel —y p incipalmen e en la e sión 2.6—
se añadie on los namespaces, una ca ac e ís ica esencial pa a mejo a el aislamien o de
los con enedo es. Cada namespace pe mi e «en ol e un ecu so global del sis ema en una
abs acción que pe mi e que los p ocesos den o del namespace lo ean como si u ie an
su p opia ins ancia aislada del ecu so» [35]. De es a mane a, cada en o no i ualizado
podía dispone de su p opio sis ema de iche os, pila de ed o á bol de p ocesos —en e
o os—, sin que ue a posible que los p ocesos den o de un namespace pudiesen e los
ecu sos ue a de es e.
Es as dos unciones ue on ap o echadas po LXC —siglas de Linux Con aine s—, el p i-
me so wa e de ges ión de con enedo es disponible en Linux sin necesidad de p e iamen e
aplica cambios al núcleo [36]. Su desa ollo comenzó en 2008 po pa e de ingenie os de
IBM, pe o ac ualmen e se a a de un p oyec o de so wa e lib e man enido p incipal-
men e po Canonical, emp esa esponsable de la dis ibución de Linux Ubun u.
Sin emba go, no ue has a 2013 cuando los con enedo es empeza on a oma la amplia
dimensión que ienen en la ac ualidad, lo cual se debe en g an medida a la apa ición
de Docke [37]. Docke empezó como una he amien a basada en LXC pe o con ando
con una in e az de usua io más simpli icada, de mane a que el p oceso de c eación y
ges ión de con enedo es se hacía mucho más sencillo. Po o a pa e, o a de las cla es
de su éxi o ue la inco po ación de con enedo es con un sis ema de a chi os po capas,
lo que pe mi ía que los con enedo es pudie an se c eados a pa i de imágenes. Es as
imágenes, c eadas a pa i de a chi os de ex o denominados Docke iles o desca gadas
de egis os como Docke Hub, posibili aban que, a pa i de una imagen base, se pudie a
añadi so wa e u o os a chi os de una o ma sencilla. La g an en aja de es e en oque
es que así se podían c ea y dis ibui con enedo es exac amen e idén icos en en o nos
muy di e en es en e sí, odo ello de o ma ápida y sencilla [38].
En ma zo de 2014 Docke dejó de u iliza LXC como biblio eca pa a in e uac ua con
el ke nel de Linux po de ec o, sus i uyéndose po libcon aine , desa ollada po los
p opios ingenie os de Docke [39]. Al mes siguien e, Amazon Web Se ices se con e -
i ía en uno de los p ime os p o eedo es de compu ación en la nube en da sopo e a
Docke , conc e amen e en su se icio AWS Elas ic Beans alk [40], lo que p opicia ía que
la adopción de los con enedo es uese cada ez mayo . Ese mismo año Google anunció
Kube ne es [41], una aplicación de o ques ación de con enedo es que pe mi ía la ges ión
y escalado de con enedo es a g an escala.
En 2015 Docke donó su o ma o de con enedo y su un ime a la Open Con aine Inicia-
i e (OCI), un p oyec o con el espaldo de la Linux Founda ion y o mado po Docke ,
16
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Co eOS, Red Ha , Amazon y o as muchas emp esas elacionadas con el cloud compu-
ing y la i ualización [42]. Es o gene ó que en 2017 ue a posible la publicación de la
OCI Image Fo ma Speci ica ion [43] y la OCI Run ime Speci ica ion [44], dos es ánda-
es abie os que de inían las ca ac e ís icas que debían cumpli los con enedo es y las
he amien as elacionadas pa a su c eación y ejecución. La adopción de es os es ánda es
posibili aba que, en caso de que cualquie usua io desease deja de usa algún so wa e
de con enedo es y sus i ui lo po o o, la ansición se ealizase de o ma luida y sin
di icul ades.
Po úl imo, podemos ce a es e epaso his ó ico con la llegada de los con enedo es a
Windows de la mano de Docke en 2016, con la posibilidad de ejecu a en o nos basados
an o en Linux como en Windows [45].
2.3.2. So wa e de con enedo es disponible
Docke
C eado po Solomon Hykes en 2013, Docke [37] es el so wa e de con enedo es más u i-
lizado y conocido en la ac ualidad. Pa a di e encia lo de o os p oyec os de la compañía,
su nomb e comple o es Docke Engine, pe o ambos nomb es se suelen u iliza indis in a-
men e. El mo o de Docke es á o mado po es elemen os [46]: un se ido o demonio
—docke d— que se enca ga de la c eación y ges ión de los con enedo es, un clien e que
in e ac úa con el se ido y una API que si e de puen e en e ambos elemen os. Es á
disponible an o pa a Linux como pa a Windows y macOS, a a és de Docke Desk op
pa a los dos úl imos.
Docke de ine dos obje os p incipales en su ciclo de uncionamien o: las imágenes, que
son plan illas de solo lec u a que si en pa a de ini la c eación de un con enedo y
que pueden se cons uidas a pa i de un a chi o de ex o denominado Docke ile o
desca gadas di ec amen e de egis os como Docke Hub, y los con enedo es, que son las
ins ancias ejecu ables c eadas a pa i de una imagen a la que se le ha añadido una capa
de lec u a/esc i u a. El o ma o de las imágenes empleadas po Docke cumple con la
OCI Image Fo ma Speci ica ion.
El demonio de Docke u iliza con aine d como en o no de ejecución, el cual «ges iona el
ciclo de ida comple o de los con enedo es de un sis ema, desde la ob ención y almace-
namien o de imágenes has a la ejecución y supe isión de los con enedo es, pasando po
el almacenamien o a bajo ni el, la ges ión de ed y mucho más» [47]. A más bajo ni el,
con aine d emplea unc como sis ema pa a la c eación de los con enedo es, si iéndose
de libcon aine —mencionado an e io men e— pa a la in e acción con el ke nel de
Linux [48]. unc cumple con lo desc i o en la OCI Run ime Speci ica ion y o ma pa e
de la Open Con aine Inicia i e, mien as que con aine d es á man enido po la Linux
Founda ion.
Desde ab il de 2017 g an pa e de los componen es del se ido de Docke pasa on a
o ma pa e de Moby P ojec , un p oyec o que ac úa como ups eam de Docke y que
pe mi e que se puedan c ea nue as he amien as de ges ión de con enedo es dis in as a
Docke a pa i de su ecnología [49].
17
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
que pueden inclui ulne abilidades o pue as ase as. Es a amenaza se puede en en a
median e el análisis de posibles ulne abilidades p esen es en las imágenes —po ejemplo
con el comando docke scan [78]— y median e el uso de imágenes con iables. Docke
Con en T us [79] es una uncionalidad de Docke que pe mi e i ma imágenes y en ia las
a egis os como Docke Hub. G acias a es a i ma, el usua io inal puede e i ica que la
imagen no ha sido modi icada po un a acan e du an e el p oceso de desca ga.
Finalmen e, cabe des aca la posibilidad de que exis a una ulne abilidad en el p opio
so wa e de con enedo es o en el ke nel de Linux. Es a e en ualidad sí puede supone un
iesgo mayo en el caso de los con enedo es en e a las máquinas i uales, ya que si la
ulne abilidad uese explo ada desde den o del con enedo , el a acan e end ía acceso
al sis ema an i ión, mien as que en el caso de la máquina i ual oda ía end ía que
supe a la ba e a del hipe iso . No obs an e, exis en mane as de educi es a amenaza:
po un lado, median e los use namespaces pa a que, en caso de que el a acan e escapase
del con enedo , no u ie a p i ilegios en el sis ema an i ión; po o o lado, aplicando los
pa ches de segu idad necesa ios de mane a inmedia a en caso de que se descub a una
ulne abilidad de es a clase.
24

Capí ulo 3
Implemen ación basada en las
necesidades de los labo a o ios
docen es
3.1. Si uación ac ual
En el ámbi o de las i ulaciones de la Facul ad de In o má ica de la Uni e sidad Complu-
ense de Mad id, los labo a o ios desempeñan un papel p eeminen e en g an pa e de las
asigna u as impa idas. Los es udian es ealizan p ác icas de p og amación, undamen os
de ha dwa e o ges ión de bases de da os a lo la go de su e apa o ma i a, en e o as á eas;
sin emba go, en es e apa ado nos amos a cen a especialmen e en la si uación ac ual
en las asigna u as de sis emas y edes de dichas i ulaciones, debido a que sus p ác icas
suelen eque i del uso de i ualización de o ma obliga o ia al y como se ha explicado
en el apa ado 1.1.
Den o de las asigna u as de sis emas y edes se ealizan p ác icas que aba can desde
la p og amación de sis emas de iche os, la con igu ación de in aes uc u as de ed o la
pues a en ma cha de se ido es has a la ec eación de a aques in o má icos, an o locales
como emo os. Con el obje i o de aco a aún más la desc ipción de la si uación ac ual,
amos a oma como ejemplo la p oblemá ica ac ual de la asigna u a Redes y Segu idad II,
op a i a de i ine a io del G ado en Ingenie ía In o má ica de la Uni e sidad Complu ense
de Mad id, ya que sus p ác icas no malmen e exigen la u ilización de a ias máquinas
i uales al mismo iempo. No obs an e, es a p oblemá ica se puede hace ex ensible al
es o de asigna u as de sis emas y edes impa idas.
Las p ác icas de Redes y Segu idad II es án concebidas con el p opósi o de a ianza los co-
nocimien os is os en las sesiones eó icas sob e segu idad en en o nos con a ios sis emas
conec ados a a és de una o más edes. De es a mane a, en las sesiones p ác icas se a an
concep os como la con igu ación co ec a de i ewalls, el despliegue de p oxys, la pues a
en ma cha de edes p i adas i uales (VPN) o la ealización de a aques in o má icos a
se icios ulne ables den o de una ed.
Pa a lle a a cabo es as p ác icas, en la ac ualidad se sigue un modelo basado en i ua-
25
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
lización con máquinas i uales. La máquina i ual que se usa p incipalmen e en es a
asigna u a es una máquina con Debian 9 [80] como sis ema ope a i o base, en la que se
encuen an ins alados di e sos p og amas de cibe segu idad, como pueden se Wi esha k
[81] pa a moni o ea el es ado de la ed, ip ables [82] pa a la con igu ación de i ewalls,
OpenVPN [83] pa a la c eación de edes p i adas i uales o Apache HTTP Se e [84]
pa a abaja la o i icación de se ido es web. Además, suele se habi ual el uso de o a
máquina i ual con Kali Linux [85], una dis ibución de Linux en ocada a la cibe segu i-
dad y al pen es ing, que cuen a con aplicaciones como nmap [86] o ZAP [87]. Po úl imo,
en algunas p ác icas ambién se emplea Me asploi able 2 [88], una máquina i ual que
incluye de o ma in encionada ulne abilidades pa a pode es udia su explo ación. Todas
es as máquinas i uales se ejecu an sob e O acle VM Vi ualBox, aunque ambién son
compa ibles con o os hipe iso es de ipo 2 como VMWa e Wo ks a ion P o.
La dinámica de es as p ác icas suele consis i en c ea una in aes uc u a de ed con
a ias ins ancias de cada máquina i ual, de al mane a que, dependiendo del caso,
unas ins ancias ac ua án como clien es o a acan es, o as como ou e s que conec a án
edes di e en es y, inalmen e, o as que desempeña án el papel de se ido o de máquina
a acada. Po ello, lo más no mal es que a lo la go de una p ác ica sea necesa io desplega
más de una máquina i ual sob e el sis ema an i ión, llegando incluso a u iliza cinco
máquinas i uales al mismo iempo como en el caso de la p ime a p ác ica de Redes y
Segu idad II.
Asimismo, es ele an e señala que, en cada una de las p ác icas, el p oceso de c eación y
despliegue de las máquinas i uales se ealiza de o ma in e ac i a po pa e de los es u-
dian es. Es deci , es e p oceso no se encuen a au oma izado a a és de una he amien a
osc ip , sino que son los es udian es quienes deben clona las máquinas y con igu a sus
in e aces de ed una a una. Si bien es cie o que es e hecho puede se ap o echado pa a
que los es udian es ap endan nociones de adminis ación de máquinas i uales y edes,
el p oceso puede se la go y p openso a que se p oduzcan allos humanos, lo que educe
el iempo disponible pa a ealiza la p ác ica en sí.
Como ya se había an icipado en el capí ulo an e io , el uso de máquinas i uales puede
supone una g a e penalización al endimien o debido a la sob eca ga que eje ce el hi-
pe iso y a la necesidad de ejecu a un sis ema ope a i o comple o en cada una de las
máquinas i uales. Es e hecho esul a especialmen e no able en las p ác icas de Redes
y Segu idad II, en las que el endimien o dis a mucho de se óp imo a causa de ene
que emplea a ias máquinas i uales al mismo iempo, aumen ando aún más la a-
len ización del sis ema. Además, cabe des aca que, en la ac ualidad, la mayo ía de los
o denado es disponibles en los labo a o ios de la Facul ad de In o má ica no cuen an con
discos de es ado sólido (SSD), un hecho que con ibuye a que el endimien o sea oda ía
peo debido a que la en ada/salida suele se uno de los mayo es cuellos de bo ella en la
i ualización [63] [89]. Todo ello ha supues o que du an e es e cu so la expe iencia de
uso haya sido muy nega i a pa a los es udian es, con unos iempos de encendido de las
máquinas i uales muy ele ados y un endimien o po debajo de lo acep able.
Es os hechos hacen pa en e la necesidad de es udia la iabilidad de implemen a las
p ác icas de las asigna u as de sis emas y edes eemplazando las máquinas i uales po
con enedo es, al y como se había expues o en el apa ado 1.1, sin ol ida el es o de
en ajas de i adas de su implemen ación mencionadas en dicha sección y que pod ían se
ap o echadas en las p ác icas de o as asigna u as.
26
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
3.2. Ca ac e ís icas de los con enedo es de
eemplazo
En es a sección se desc iben qué ca ac e ís icas deben ene los con enedo es pa a que
puedan se i de eemplazo a las máquinas i uales usadas en las p ác icas de las asig-
na u as mencionadas en el apa ado an e io .
3.2.1. Diseño de los con enedo es
En p ime luga , se debe decidi cómo se an a diseña los con enedo es. El en oque que
p oponen Docke y Podman pa a sus con enedo es de aplicación es ejecu a un único p o-
ceso en cada uno de los con enedo es. De es e modo, en una p ác ica habi ual de Redes y
Segu idad II se debe ían ene , po ejemplo, unos con enedo es que ac úen exclusi amen-
e como ou e s, o os que si an únicamen e pa a ejecu a p og amas como Wi esha k,
o os en los que se encuen e desplegado so wa e como se ido es web y, inalmen e,
o os que dispongan de una shell pa a ejecu a comandos que in e ac úen con el es o de
con enedo es.
Es a es icción de ejecu a un único p oceso po con enedo , que eco demos que no es
es ic a al y como se había explicado en la sección 2.3.3, iene sen ido cuando lo que
se desea es «con ene iza » una aplicación, es deci , que la aplicación se ejecu e en un
con enedo con el obje i o de ga an iza que el en o no es siemp e el mismo indepen-
dien emen e de dónde se ealice el despliegue. Sin emba go, c eemos que en es e p oyec o
esul a más bene icioso aplica un en oque más lexible y que sea más pa ecido a las má-
quinas i uales ac uales, ya que se simpli ica ía el p oceso de despliegue y el diseño de
las p ác icas, además de que pa a los es udian es esul a ía mucho más sencillo u iliza
un único con enedo poli alen e que c ea a ios que es én especializados en una única
a ea.
Pa a ello, una opción pod ía se u iliza con enedo es de sis ema a a és de LXC. No
obs an e, los con enedo es de LXC suelen se más pesados que sus homólogos de Docke
o Podman, ya que in en an emula la u ilización de un sis ema ope a i o comple o, po
lo que incluyen y ejecu an una can idad de se icios y aplicaciones bas an e supe io a
lo que suele se habi ual en los con enedo es de aplicación, como po ejemplo demonios
ini , edi o es de ex o o incluso clien es SSH [90].
O a al e na i a se ía u iliza con enedo es de aplicación c eando una imagen especializa-
da pa a cada asigna u a. Po ejemplo, pa a c ea un con enedo simila a la máquina de
Debian u ilizada en Redes y Segu idad II, se pod ía pa i de la imagen de Debian 9 dis-
ponible en Docke Hub [91], ins ala algunos p og amas habi uales en odas las p ác icas
como Wi esha k, con igu a un usua io di e en e a oo pe o que pueda emplea sudo,
y es ablece bash como el p og ama po de ec o al inicia el con enedo . El Docke ile
esul an e se ía el siguien e:
FROM debian:9
# Pa a e i a que salgan mensajes de la con igu ación de Wi esha k
ENV DEBIAN_FRONTEND=nonin e ac i e
RUN ap -ge upda e && ap -ge ins all -y wi esha k
RUN g oupadd -g 1000 usua io && use add -m -u 1000 -g usua io usua io
27
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
&& echo usua io:usua io | chpasswd && echo "usua io ALL=(ALL) ALL"
>> /e c/sudoe s && echo "De aul s lec u e = ne e " >> /e c/sudoe s
USER usua io
WORKDIR /home/usua io
CMD bash
De es a mane a, odos los con enedo es emplea ían es a imagen como base, y los es u-
dian es pod ían ejecu a odas las a eas eque idas en cada p ác ica u ilizando bash. Si
se desea a añadi so wa e adicional como, po ejemplo, ip ables pa a la ealización de la
p ác ica de con igu ación de i ewalls, se pod ía ins ala a a és de ap -ge den o del
con enedo o, ap o echando el sis ema po capas de las imágenes OCI, c ea una nue a
imagen pa iendo de esa imagen base. Si suponemos que dicha imagen se ha cons uido
con el nomb e ys, el Docke ile de la imagen nue a pod ía se :
FROM ys:la es
# Necesi amos ol e a se oo pa a ins ala el paque e
USER oo
RUN ap -ge upda e && ap -ge ins all -y ip ables
USER usua io
Así, se puede dispone de unos con enedo es poli alen es que si en pa a ealiza odas
las a eas eque idas en las p ác icas, con un peso más educido que si se u ilizasen
con enedo es de sis ema y con el añadido de la modula idad po capas pa a adap a es a
imagen base dependiendo de la p ác ica o de la asigna u a. Po ello, se op a á po es a
opción en es e abajo.
Pa a que los con enedo es uncionen co ec amen e, debe án se c eados con la opción
--ini , que inse a á den o de los con enedo es un sis ema ini educido, enca gado
de la ges ión de los p ocesos zombie y el een ío de señales al es o de p og amas en
ejecución.
3.2.2. Imagen base de los con enedo es
La imagen base que se u iliza á en es e p oyec o, denominada ys, es á diseñada pa a
se i como eemplazo de la máquina i ual de Debian de la asigna u a de Redes y Segu-
idad II, po lo que es muy simila a la desc i a en el an e io apa ado, pe o incluyendo
además los siguien es p og amas:
i e ox-es : Du an e el desa ollo de las p ác icas suele se necesa io usa un
na egado web pa a desca ga a chi os desde el Campus Vi ual de la asigna u a
o pa a accede a los se ido es web desplegados en o as ins ancias. Po ello, se ha
op ado po Fi e ox ESR debido a que es el na egado que se u iliza ac ualmen e en
la máquina i ual de Redes y Segu idad II.
wi esha k: Wi esha k es u ilizado en la mayo ía de las p ác icas de Redes y Se-
gu idad II pa a moni o ea el es ado de la ed y es udia los paque es en iados y
ecibidos en cada máquina.
28
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
nano: La imagen de Debian no incluye ningún edi o de ex o, po lo que esul a
necesa io ins ala uno pa a pode modi ica a chi os a lo la go de la p ác ica.
ipu ils-ping: Una de las a eas habi uales en odas las p ác icas de Redes y
Segu idad II es usa ping pa a comp oba la conec i idad de ed, pa a lo que se
debe ins ala es e p og ama.
ip ou e2: Es e paque e es imp escindible pa a pode c ea las in aes uc u as
de ed eque idas en las p ác icas, ya que pa a lle a a cabo es a a ea se deben
modi ica las di ecciones IP y las ablas de en u amien o de los con enedo es.
sudo: Pa a emula la con igu ación de la máquina i ual de Debian, se debe c ea
un usua io di e en e a oo pe o que pueda ob ene pe misos de supe usua io a
a és de sudo.
El Docke ile inal es el siguien e:
FROM debian:9
# Pa a e i a que salgan mensajes de la con igu ación de Wi esha k
ENV DEBIAN_FRONTEND=nonin e ac i e
RUN ap -ge upda e && ap -ge ins all -y i e ox-es wi esha k
ipu ils-ping ip ou e2 sudo nano
RUN g oupadd -g 1000 usua io && use add -m -u 1000 -g usua io usua io
&& echo usua io:usua io | chpasswd && echo "usua io ALL=(ALL) ALL"
>> /e c/sudoe s && echo "De aul s lec u e = ne e " >> /e c/sudoe s
USER usua io
WORKDIR /home/usua io
CMD bash
3.2.3. Conexión de ed en e los con enedo es
Pa a pode ec ea las opologías de ed de las p ác icas, se necesi a que los con enedo es
es én si uados en edes aisladas de In e ne e independien es en e sí, y que es as edes
se in e conec en median e o os con enedo es que ac úen como ou e s.
La c eación de es as edes es posible an o en Docke como en Podman, a a és del co-
mando <docke |podman> ne wo k c ea e <nomb eRed>. Luego, cada con enedo pue-
de se conec ado a una o a ias edes ejecu ando <docke |podman> ne wo k connec
<nomb eRed> <nomb eCon enedo >. Es as edes son idén icas a la ed b idge a la que
se conec an los con enedo es po de ec o du an e su c eación, po lo que se puede accede
a In e ne desde den o del p opio con enedo incluso si solamen e es á conec ado a es a
ed pe sonalizada. Pa a in e umpi la conexión a In e ne , an solo es necesa io elimina
la u a po de ec o a la pue a de enlace de la ed en cada uno de los con enedo es.
Los con enedo es pueden desempeña el papel de ou e s con el mismo p ocedimien o
que en las máquinas i uales, es deci , ac i ando el een ío de paque es con sysc l
-w ne .ip 4.con .all. o wa ding=1 y cambiando las ablas de en u amien o de los
con enedo es pa a que los paque es de ed se di ijan a los ou e s. Es e a ibu o del
ke nel suele es a ya ac i ado en los sis emas con Docke o Podman ins alado, pues o
que es necesa io pa a que los con enedo es puedan dispone de conexión a In e ne . Si
no es u iese habili ado, se end ía que modi ica desde el sis ema an i ión, ya que la
29

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
modi icación del núcleo del sis ema ope a i o desde los con enedo es es á es ingida, a
menos que se habili e la opción insegu a --p i ileged.
De o ma p ede e minada, no se pe mi e cambia la con igu ación de ed desde los con-
enedo es, po lo que no se pod ían lle a a cabo las a eas p opias de la p ác icas como
es ablece nue as di ecciones IP o cambia las ablas de en u amien o. No obs an e, es-
a limi ación puede se eliminada si los con enedo es se c ean ag egando la capabili y
adicional NET_ADMIN.
3.2.4. Uso de aplicaciones de in e az g á ica
La mayo ía de las máquinas i uales u ilizadas en las asigna u as de sis emas y edes
cuen an con un sis ema de en anas y un en o no de esc i o io comple o, con el in de que
la in e acción con el sis ema po pa e del es udian e sea más sencilla. Sin emba go, es o
no es así en el caso de los con enedo es, ya que, debido a su ca ác e educido, no suelen
inclui ningún sis ema de en anas. Es e hecho hace que, a p io i, no sea posible ejecu a
aplicaciones g á icas como Wi esha k o Fi e ox den o de un con enedo . Sin emba go,
exis en a ias posibilidades pa a sol en a es e p oblema.
Una opción pod ía se u iliza un sis ema de en anas X como X.O g [92] den o del
con enedo , al igual que sucede en el caso de las máquinas i uales. De o ma simila ,
ambién se pod ía ins ala un se ido SSH o VNC pa a pode accede emo amen e a las
aplicaciones g á icas desde el sis ema an i ión. Si bien es as opciones pod ían unciona
sin complicaciones, ienen el incon enien e de que el peso de los con enedo es aumen a ía
no ablemen e, además de que es posible que el endimien o disminuyese debido a que se
ejecu a ían más p ocesos den o del con enedo .
Exis e una posibilidad que no implica aumen a el amaño de los con enedo es, que con-
sis e en compa i el socke de X11 de la máquina an i iona con los con enedo es [93].
G acias a los bind moun s de Docke y Podman, que pe mi en compa i a chi os en e
el hos y los con enedo es [94], se puede consegui que las ins ancias i uales puedan
hace uso del sis ema de en anas X del an i ión de o ma di ec a. Además de compa i
el socke , ambién es necesa io es ablece la a iable de en o no DISPLAY den o de los
con enedo es.
Es a al e na i a cuen a con un incon enien e, y es que, si no se con igu a co ec amen e
la segu idad del sis ema X, es posible que un a acan e pudie a accede al es o de en a-
nas de la máquina, incluyendo las del an i ión. Pa a e i a es a amenaza, la opción más
segu a es c ea una un us ed cookie pa a cada con enedo , compa ida con ellos a a és
de bind moun s [95]. De es a mane a, se ga an iza que el aislamien o de los con enedo es
sigue siendo pleno, además de e i a a aques po pa e de o os usua ios. Pa a que es a
al e na i a uncione, apa e de compa i la cookie ambién se debe con igu a la a iable
de en o no XAUTHORITY en cada con enedo , que debe se igual a la u a donde se en-
cuen a la cookie compa ida. La c eación de la cookie se ealiza ejecu ando los siguien es
comandos, siendo necesa io que xau h se encuen e ins alado en el sis ema:
Cookie ile=~/con aine cookie
:> $Cookie ile
xau h - $Cookie ile gene a e $DISPLAY . un us ed imeou 3600
Cookie="$(xau h - $Cookie ile nlis $DISPLAY | sed -e 's/^..../ /')"
30
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
echo "$Cookie"| xau h - "$Cookie ile"nme ge -
3.2.5. Compa ición de a chi os en e con enedo es
En muchas p ác icas esul a con enien e que exis a una mane a de pode en ia y ecibi
a chi os en e las dis in as ins ancias. Un caso eal puede se las p ác icas de con igu ación
de un únel VPN con cla e es á ica p e iamen e compa ida, donde se debe ealiza el
in e cambio de la cla e en e los ex emos del únel. En la ac ualidad, es a a ea se ealiza
median e SCP, una u ilidad de copia de a chi os a a és de SSH, pe o si se op ase po
es a misma opción, se debe ía con a con un clien e y un se ido SSH en cada con enedo ,
aumen ando su peso.
La opción más con enien e uel e a se hace uso de los bind moun s. Po ejemplo, se
pod ía mon a la ca pe a de usua io del an i ión en odos los con enedo es de la p ác ica
en una u a como /mn /sha ed. Así, cada ez que se quisie a compa i un a chi o en e
los con enedo es, o en e un con enedo y el sis ema an i ión, solo hab ía que copia el
a chi o a es e di ec o io.
3.3. Elección del so wa e de con enedo es
Una ez que se han de e minado las ca ac e ís icas que deben ene los con enedo es
pa a pode ealiza las p ác icas de una mane a idén ica a como se ealizan con máquinas
i uales, se debe elegi el so wa e de ges ión de con enedo es que se a a u iliza en es e
p oyec o.
Como ya se había expues o en la sección 2.3.2, en la ac ualidad las aplicaciones de con e-
nedo es más popula es son Docke , Podman y LXC. Las dos p ime as es án cen adas en
la c eación de con enedo es de aplicaciones, mien as que LXC u iliza con enedo es de sis-
ema. Tal y como se ha desc i o en la sección 3.2.1, se a a op a po u iliza con enedo es
de aplicaciones, po lo que LXC queda desca ado.
En e Docke y Podman no exis en muchas di e encias, ya que Podman cuen a con una
in e az de línea de comandos compa ible con Docke que le pe mi e ealiza las mismas
acciones [50]. Un aspec o que di e enciaba a Podman de Docke has a hace pocos años
e a que el p ime o pe mi ía la c eación de con enedo es sin necesidad de se oo , pe o
es a opción ambién se encuen a disponible en Docke desde la e sión 19.03, como se
ha explicado en el apa ado 2.3.2. Po o a pa e, Podman cuen a con la capacidad de
c ea pods, mien as que Docke no, pe o es a he amien a no esul a de u ilidad en es e
p oyec o. En cuan o al endimien o, an o en los es udios mencionados en el apa ado 2.3.4
como en las p uebas ealizadas a lo la go de es e abajo no se han de ec ado di e encias
signi ica i as en e ambos p og amas.
El único mo i o que puede hace que Docke sea una mejo opción es que su uso es á
mucho más ex endido que Podman. Además, Docke lle a más años disponible, ya que
su desa ollo comenzó casi cinco años an es. Es os dos hechos suponen que exis a una
mayo can idad de documen ación y de ecu sos disponibles pa a su consul a en el caso de
Docke , así como más he amien as compa ibles con es e p og ama y que pueden esul a
de u ilidad en es e p oyec o, como analizado es de segu idad y ulne abilidades.
31
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Po es a azón, se elige Docke como so wa e pa a la c eación y ges ión de los con ene-
do es.
3.4. Despliegue de los con enedo es pa a las
p ác icas
En Docke , la o ma más común de c ea y ejecu a nue os con enedo es es a a és del
comando docke con aine un. Un ejemplo básico de su uncionamien o puede se el
siguien e comando: docke con aine un -i - ubun u. Si se consul a la documen-
ación de es e comando [96], emos que se ealiza una desca ga de la imagen de Ubun u
desde Docke Hub [97] y a con inuación se c ea un con enedo que ejecu a á la aplicación
po de ec o de la imagen —en es e caso, Bash— con las opciones -i y- , consis en es
en man ene la en ada es ánda abie a y asocia un pseudo- e minal espec i amen e,
de o ma que se pe mi a la in e acción con el con enedo .
Si bien es cie o que es e comando es sencillo y ácil de eco da , puede ol e se bas an e
ex enso si se añaden opciones adicionales como el ipo de ed del con enedo , la de inición
de a iables de en o no o la c eación de olúmenes pa a compa i iche os, y si se desea
c ea más de un solo con enedo a la ez, la a ea se con e i á en muy compleja y pesada
pa a el usua io. Po ello, es necesa io au oma iza es e p oceso pa a que el despliegue de
a ios con enedo es sea ápido y ácil.
Además, la au oma ización de es e p oceso supond ía una en aja con espec o a la
implemen ación con máquinas i uales, pues o que, si eco damos lo expues o sob e
la si uación ac ual al comienzo de es e capí ulo, ac ualmen e el p ocedimien o en cada
p ác ica consis e en clona las máquinas i uales base an as eces como sea necesa io,
con igu a las edes a las que debe es a conec ada cada ins ancia y encende las máqui-
nas. Si es e p oceso se au oma iza, se puede ob ene una ganancia de iempo que puede
se ap o echada po los es udian es pa a cen a se en los con enidos de la p ác ica en
cues ión.
Docke ya p opo ciona una he amien a pa a lle a a cabo es e come ido: Docke Compo-
se [98]. Su uncionamien o consis e en de ini los con enedo es deseados en un a chi o con
o ma o YAML denominado docke -compose.yml, pa a pos e io men e ejecu a el co-
mando docke compose up que c ea á los con enedo es de o ma au omá ica según lo es-
peci icado en el a chi o. Po ejemplo, si se quisie a c ea es con enedo es idén icos al que
se había indicado al comienzo de la sección, el o ma o del iche o docke -compose.yml
se ía el siguien e:
se ices:
p ime -con enedo :
image: ubun u
s din_open: ue
y: ue
segundo-con enedo :
image: ubun u
s din_open: ue
y: ue
32
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
e ce -con enedo :
image: ubun u
s din_open: ue
y: ue
Como se puede e , Docke Compose es una he amien a muy ú il que acili a eno me-
men e la c eación de a ios con enedo es al mismo iempo. Sin emba go, no se e mina de
ajus a bien a nues o p oyec o po una azón, y es que su uso eque i ía que los es udian-
es u ie an que ap ende la sin axis de los comandos de Docke y las opciones necesa ias
pa a c ea los con enedo es con odo lo necesa io pa a ealiza las p ác icas.
Debido a es e mo i o, la au oma ización del despliegue se lle a á a cabo median e una
nue a he amien a c eada especí icamen e pa a es e p opósi o, que pe mi i á que los
es udian es puedan p opo ciona cie os pa áme os especí icos pa a cada p ác ica pe o
abs ayendo el uso de Docke .
Es a he amien a unciona á de una o ma simila a Docke Compose, po lo que pa a
cada p ác ica se end á que p epa a un a chi o de ex o en el que se desc iban las
ca ac e ís icas de los con enedo es eque idos. Es os a chi os debe án es a esc i os en
o ma o YAML —seleccionado po su legibilidad en compa ación a o os como JSON—,
y end án una es uc u a simila a la siguien e:
nomb e_p ac ica: ejemplo
con enedo es:
- nomb e: maquina1
imagen: ys
edes:
- nomb e: 1
ip: 192.168.1.10/24
backg ound: ue
- nomb e: ou e
imagen: ys
edes:
- nomb e: 1
- nomb e: 2
ip: 192.168.2.10/24
- nomb e: maquina2
imagen: ys
edes:
- nomb e: 2
En p ime luga , se debe es ablece el nomb e de la p ác ica pa a pode ag upa pos e-
io men e odos los con enedo es según es e nomb e. A con inuación, en el campo con e-
nedo es se debe esc ibi la lis a de ins ancias eque idas, y en cada uno de los elemen os
de la lis a se deben es ablece como mínimo los campos nomb e,imagen y edes. Es e
úl imo campo uel e a se una lis a, en la que se debe especi ica el nomb e de las edes a
las que se desea que cada con enedo es é conec ado y, opcionalmen e, la di ección IP que
33
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
En el caso de Fedo a Sil e blue, su mayo i ud es la inmu abilidad del sis ema y la
posibilidad de pode hace ollback ácilmen e as una ac ualización. Es as ca ac e ís icas
son muy ú iles en el caso de en o nos de desa ollo con el obje i o de man ene sis emas
idén icos y minimiza la apa ición de posibles bugs. Sin emba go, en nues o p oyec o
no se an a eque i en o nos exac amen e iguales pa a ejecu a los con enedo es de
las p ác icas ni ampoco es necesa io con a con un sis ema siemp e ac ualizado, po
lo que no es á cla o que se les aya a saca pa ido a es as unciones. Po el con a io,
Sil e blue es la dis ibución más exigen e de las es en cuan o a eque imien os de disco y
memo ia RAM, aspec o que se debe alo a nega i amen e debido a que, como el sis ema
ope a i o se a a ejecu a de o ma i ualizada, supone una mayo sob eca ga, dejando
menos ecu sos disponibles pa a los con enedo es. Po úl imo, es in e esan e des aca que,
si bien no supone una des en aja como al, el u iliza pm-os ee y Fla pak en luga de
un ges o de paque es es ánda supone una di e encia a la que los adminis ado es del
sis ema se end ían que adap a .
Po úl imo, Alpine des aca po se la dis ibución más lige a de la compa a i a, algo muy
ele an e po las azones ya mencionadas en el pá a o an e io . Además, es posible eali-
za la ins alación usando un ke nel op imizado pa a se ejecu ado en máquinas i uales,
lo que educe el espacio ocupado en disco. El mayo incon enien e puede se que, debido
a su p opio diseño, cuen a con muy poco so wa e p eins alado —ni siquie a iene un
en o no de esc i o io—, pe o es posible ins ala odo lo necesa io pa a la c eación del a
a és de apk, su ges o de paque es.
En conclusión, conside ando que las p opiedades especí icas de Fedo a Sil e blue no se án
de u ilidad en el ámbi o de es e abajo, Alpine se mues a como la mejo elección posible,
especialmen e po su lige eza que le hace di e encia se de las dis ibuciones de p opósi o
gene al como Debian. Po ello, inalmen e se á Alpine el sis ema ope a i o que se i á
como base del en o no pa a el uso de los con enedo es.
40

Capí ulo 4
C eación del en o no de
con enedo es
4.1. Ins alación y con igu ación de Alpine
4.1.1. C eación de la máquina i ual
En p ime luga , es necesa io desca ga la imagen de ins alación de Alpine desde su página
web [112]. Escoge emos la e sión i debido a que, al y como se ha is o en el an e io
capí ulo, es á op imizada pa a el uso en máquinas i uales.
Una ez desca gada, c eamos una máquina i ual en Vi ualBox. En cuan o a la con i-
gu ación de la máquina, el único aspec o eseñable es el ipo y e sión, po que Alpine no
es á incluido en la lis a de e siones de Vi ualBox, a di e encia de o as dis ibuciones
más popula es como Ubun u o Red Ha . Debido a es o, se end á que selecciona O he
Linux (64 bi s).
Sob e la memo ia RAM y el núme o de p ocesado es asignados, de momen o se es a-
blece án 1024 megaby es y un solo p ocesado , lo que es su icien e pa a lle a a cabo la
ins alación y con igu ación de Alpine, incluyendo en o no g á ico. Es as especi icaciones
pueden se cambiadas en un u u o, y de hecho se debe ían de ajus a al ha dwa e de
las máquinas en donde aya a se ejecu ado es e en o no. No obs an e, es os alo es se
man end án a lo la go de odo el p oyec o debido a que coinciden con las ca ac e ís icas
de la máquina i ual de Debian de Redes y Segu idad II. Así, se pod á ealiza una
compa a i a más equi a i a en e ambas opciones.
4.1.2. Ins alación básica de Alpine
Al encende la máquina i ual po p ime a ez, Alpine se ejecu a en modo Li eCD,
pe mi iendo al usua io p oba el sis ema ope a i o sin necesidad de lle a a cabo la
ins alación. T as inicia sesión con el usua io oo sin con aseña, se debe ejecu a se up-
alpine pa a comenza el p oceso de ins alación. Es e comando con igu a los elemen os
esenciales del sis ema ope a i o, como la zona ho a ia, la dis ibución de eclado o el
se ido que u iliza á apk pa a desca ga los paque es. El aspec o más ele an e en es e
41
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
apa ado es el modo de ins alación, pudiendo escoge en e none —el sis ema ope a i o se
ejecu a en e amen e desde la memo ia RAM—, da a —igual que none pe o la pa ición
de swap y el di ec o io / a se mon an desde almacenamien o pe sis en e— o sys —
ins alación adicional en un disco du o—. Es a úl ima se á la opción seleccionada en
nues o caso.
4.1.3. Con igu ación g á ica
Una ez inalizada la ins alación de Alpine, se con igu a á el en o no g á ico. En p ime
luga , es necesa io ac i a los eposi o ios edge,communi y y es ing de apk, pa a lo
que se end án que descomen a las líneas que apun an a dichos eposi o ios en el a chi o
/e c/apk/ eposi o ies. A con inuación, se debe ejecu a el comando se up-xo g-
base, que ins ala á Xo g como se ido g á ico, así como o as u ilidades necesa ias. Una
ez inalice es e p oceso, es necesa io ins ala el con olado de ídeo co espondien e a
Vi ualBox y las Gues Addi ions, con el obje i o de ob ene un mejo endimien o isual.
Pa a ello, se debe ejecu a el siguien e comando:
apk add x 86- ideo- box ideo i ualbox-gues -addi ions
i ualbox-gues -addi ions-open c i ualbox-gues -addi ions-x11
Po úl imo, se debe ins ala el en o no de esc i o io. En es e caso, hemos op ado po
XFCE, un en o no lige o y ácil de u iliza . Pa a ins ala lo, hay que ejecu a :
apk add x ce4 x ce4- e minal x ce4-sc eensa e ligh dm-g k-g ee e
elogind polki -elogind
Después de que se haya comple ado la ins alación, hay que añadi los se icios del bus
de esc i o io y del inicio de sesión g á ico al a anque del sis ema con los comandos c-
upda e add dbus && c-upda e add ligh dm. Finalmen e, se puede a anca el en-
o no g á ico einiciando el sis ema.
4.1.4. Ins alación de Docke y ajus es adicionales
El p ime ajus e que se debe ealiza as la ins alación g á ica es con igu a X11 pa a
pode u iliza la dis ibución de eclado española. Pa a ello, hay que ag ega el siguien e
agmen o al a chi o /e c/X11/xo g.con y einicia el sis ema:
Sec ion "Inpu Class"
Iden i ie "Keyboa d De aul "
Ma chIsKeyboa d "yes"
Op ion "XkbLayou " "es"
EndSec ion
Pa a ins ala el mo o de Docke en Alpine solamen e hay que desca ga e ins ala el
paque e co espondien e a a és de apk. T as su ins alación, se debe inicia el daemon y
es ablece que se ac i e du an e el p oceso de a anque:
42
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
apk add docke && se ice docke s a && c-upda e add docke boo
Si se desea ejecu a con enedo es que incluyan aplicaciones g á icas como Wi esha k,
ambién es necesa io ins ala xau h median e apk. Es e p og ama ges iona los pe misos
del se ido X pa a que las aplicaciones ejecu adas en los con enedo es puedan accede
al se ido g á ico de la máquina i ual.
En segundo luga , es necesa io c ea un usua io sin pe misos de supe usua io que se á
u ilizado po los es udian es pa a ealiza las p ác icas. Además, es e usua io debe pe -
enece al g upo adicional boxs si se desea u iliza la unción de ca pe as compa idas
de Vi ualBox. El usua io puede se c eado ejecu ando el siguien e comando:
use add -m -G boxs usua io
Además, es necesa io es ablece la con aseña del nue o usua io pa a que pueda se u i-
lizado. Pa a lle a a cabo es a a ea, se debe ejecu a passwd usua io.
A con inuación, se debe p ocede a la ac i ación de las Gues Addi ions elacionadas con
X11 cuando usua io inicie sesión. Es os añadidos ac i an dis in as opciones que hacen
que la expe iencia de uso de Vi ualBox sea más sa is ac o ia. Pa a ello, se puede ejecu a
/us /sbin/VBoxClien con es os a gumen os:
--checkhos e sion: Inicia el se icio de no i icación de e sión del an i ión.
--clipboa d: Pe mi e compa i el po apapeles en e la máquina an i iona y la
in i ada.
--d agandd op: Habili a el in e cambio de a chi os en e ambas máquinas median-
e d ag and d op.
--seamless: Pe mi e usa el modo de esc i o io luido.
-- ms ga: Reescala la esolución de pan alla de la máquina in i ada si se u iliza el
con olado de ídeo VMSVGA (ac i ado po de ec o).
Es os comandos deben se lanzados po el usua io oo pa a su co ec o uncionamien o.
Sin emba go, las Gues Addi ions solo pueden se ac i adas después de habe iniciado
sesión en el en o no g á ico, po lo que no puede se au oma izado a a és de un sc ip
de ini . Pa a soluciona es e p oblema, hay que segui los siguien es pasos:
1. Se debe ins ala sudo con el comando apk add sudo y, median e isudo, añadi
la siguien e línea al a chi o /e c/sudoe s:
usua io ALL = ( oo ) NOPASSWD: /us /sbin/VBoxClien
Es o pe mi e a usua io ejecu a VBoxClien como supe usua io sin que se le soli-
ci e una con aseña.
2. Po cada opción de VBoxClien que se quie a habili a , se debe c ea un a chi o
con la ex ensión .desk op en la ca pe a .con ig/au os a del usua io. Es e
a chi o no equie e ningún nomb e especí ico, pe o debe ene el siguien e o ma o
—cambiando exec yname aco demen e a la opción deseada—:
43
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[Desk op En y]
Type=Applica ion
Exec=sudo /us /sbin/VBoxClien --checkhos e sion
Name=VBox Check hos e sion
T as ins ala odos los elemen os necesa ios y con igu a co ec amen e el sis ema, el
espacio de disco ocupado es de ap oximadamen e 730 megaby es, muy po debajo de lo
que ocupa ía una ins alación simila de Debian o Fedo a Sil e blue. Si se comp ueba el
amaño de la ca pe a de la máquina i ual desde ue a, es e amaño sube has a los 987
MB. Ambas mediciones se pueden consul a en las igu as 4.1 y 4.2 espec i amen e.
Figu a 4.1: Espacio de disco ocupado po Alpine medido desde den o de la máquina i ual
Figu a 4.2: Espacio de disco ocupado po Alpine medido desde ue a de la máquina i ual
44
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
4.2. Desa ollo de la he amien a de despliegue de
con enedo es
4.2.1. Ve sión p elimina de la he amien a
La p ime a e sión de la he amien a consis ía en un sc ip de shell que, a su ez, hacía
uso de la in e az de línea de comandos de Docke , ya que es a es la o ma más sencilla de
in e ac ua con el demonio de Docke . En Alpine, la shell que iene ins alada po de ec o
es Almquis Shell (Ash), que cumple el es ánda POSIX pe o con un peso bas an e in e io
a o as al e na i as más conocidas como Bash.
Apa e del p opio Docke , es e sc ip u ilizaba o os p og amas ex e nos pa a su co ec o
uncionamien o: yq, pa a ex ae la in o mación de los iche os YAML; ipcalc —incluido
en BusyBox, que iene ins alado po de ec o en Alpine Linux—, pa a ob ene la di ección
IP de la ed a pa i de una di ección en o ma o CIDR; xau h, pa a la ges ión de los
pe misos del sis ema de en anas X y x ce4- e minal, pa a la c eación de las e minales
que pe mi an la in e acción con los con enedo es.
El sc ip comple o se puede consul a en el apéndice A.
4.2.2. Ve sión inal de la he amien a
Si bien es cie o que la e sión de la he amien a esc i a en Ash p opo cionaba un en-
dimien o acep able y si ió pa a analiza de una o ma sencilla qué opciones debían
posee los con enedo es pa a su co ec o uncionamien o, exis ían es des en ajas des a-
cables.
En p ime luga , al u iliza la in e az de línea de comandos de Docke se es aba emplean-
do un in e media io en e nues a aplicación y el demonio de Docke . Sin emba go, se
puede in e ac ua di ec amen e con el demonio de Docke a a és de su API REST ul,
que pe mi e ejecu a cualquie o den disponible en Docke a a és de pe iciones HTTP
di igidas al socke Unix del demonio. A su ez, es as llamadas a la API se encuen an
con enidas en los SDK de Docke Engine, disponibles an o pa a Py hon como pa a Go
[116]. U ilizando es os SDK, es posible c ea clien es pe sonalizados pa a Docke de una
o ma ápida y sencilla —de hecho, an o la p opia CLI de Docke como Docke Compose
no son más que aplicaciones esc i as en Go que hacen uso del SDK pa a la ejecución de
sus a eas—.
En segundo luga , en el sc ip de Ash la ges ión de cada con enedo y de cada ed —ya
ue a en el momen o de su c eación, des ucción o cualquie o a o den disponible— se
lle aba a cabo de o ma secuencial. Aunque se pod ía u iliza el ope ado ¶ manda
cie as ope aciones a segundo plano y segui con la ejecución de o as pa es del código,
los sis emas de sinc onización en e p ocesos en Ash son muy udimen a ios, lo que di i-
cul a eno memen e el con ol del lujo en caso de que haya que espe a a la inalización
de alguna a ea o si se p oduce algún e o . El uso de un lenguaje que pe mi a la p og a-
mación concu en e, jun o al uso del SDK del Docke Engine, aumen a ía no ablemen e
el endimien o de la aplicación.
Finalmen e, si se iene en cuen a que la en aja de Ash es su peso educido, es o hace
que no se dispongan de algunos elemen os comunes en o os lenguajes de p og amación;
45

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
po ejemplo, es imposible c ea a ays de elemen os. Aunque es e p oblema puede se
sol en able a a és de o as cons ucciones disponibles, la sin axis puede llega a se
bas an e ilegible, lo que di icul a ía el man enimien o de la he amien a a la go plazo.
Po pone un ejemplo, es e es el agmen o de código de la he amien a enca gado de
c ea las e minales pa a la in e acción con los con enedo es —c eado a pa i de los
ejemplos disponibles en [117]—:
c ea _ e minal() {
p ime _nomb e=$1
shi
i s =1
o nomb e; do
i ["$ i s "=1]; hen se --; i s =0; i
se -- "$@"-- ab -e "ash -c 'docke con aine a ach $nomb e;
exec ash'"
done
x ce4- e minal -e "ash -c 'docke con aine a ach $p ime _nomb e;
exec ash'" "$@"
}
Ash, al igual que el es o de lenguajes de comandos disponibles en Linux, puede se
una al e na i a ecomendable pa a cons ui aplicaciones que si an pa a au oma iza
a eas, como en es e caso la c eación y ges ión de con enedo es. Pe o si la complejidad
de la aplicación aumen a, la man enibilidad de es os sc ip s puede llega a se muy baja
debido a múl iples azones: la al a de obje os o es uc u as, la imposibilidad de es ablece
a gumen os en la de inición de las unciones o la dependencia hacia las a iables globales,
en e o os aspec os. De es a o ma, cualquie cambio que sea necesa io ealiza en un
u u o se á más complicado de lle a a cabo y aumen a á la p obabilidad de que apa ezcan
nue os e o es.
Debido a es os mo i os, se decidió eesc ibi la he amien a de despliegue y ges ión de los
con enedo es en o o lenguaje de p og amación que cumpliese es os equisi os: uso de la
API de Docke Engine, posibilidad de p og amación concu en e y al a man enibilidad
del código desa ollado.
Aunque exis en biblio ecas c eadas po la comunidad pa a o os lenguajes de p og ama-
ción, el SDK de Docke Engine se encuen a disponible o icialmen e solo pa a Py hon y
pa a Go. Cualquie a de es os dos lenguajes se ía una buena elección pa a c ea nues o
nue o clien e; sin emba go, se op ó po Go po dos mo i os:
Py hon es un lenguaje in e p e ado, mien as que Go es un lenguaje compilado. Es o
signi ica que, en caso de u iliza Py hon, hubiese sido necesa io ins ala el in é p e e
de Py hon en la máquina i ual de Alpine, aumen ando su peso. Además, en líneas
gene ales, el endimien o de los p og amas compilados suele se supe io al de los
p og amas in e p e ados, ya que no es necesa io aduci las ins ucciones a código
máquina en iempo de ejecución.
La concu encia en Go es muy sencilla de implemen a : solamen e hace al a esc ibi
el ope ado go delan e de las llamadas a cada unción que se quie a ejecu a concu-
46
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
en emen e. Además, o ece o as cons ucciones como los canales o los e g oups
[118] que acili an la comunicación en e los hilos c eados.
El uso de Go pe mi e además p escindi an o de yq como de ipcalc, ya que se puede
ecu i a o os paque es que ealicen la misma unción: yaml. 3 pa a la lec u a del
a chi o YAML, desa ollado po Canonical [119], y ne , que o ma pa e de la biblio eca
es ánda de Go [120]. Po de ec o es os paque es se enlazan es á icamen e al bina io
gene ado, po lo que no exis en p oblemas de dependencias en ejecución —aunque pa a
e i a p oblemas de enlazado de i ados del uso del paque e ne , la compilación se debe
ealiza es ableciendo la a iable de en o no CGO_ENABLED=0—. Sin emba go, sigue siendo
necesa io que an o xau h como x ce4- e minal se encuen en ins alados en el sis ema,
debido a que no exis en paque es que puedan supli su uncionalidad. Po ello, end án
que se ejecu ados a a és del paque e os/exec [121].
La única des en aja que puede ene Go en e al sc ip de shell p e iamen e desa olla-
do es su amaño, an o en líneas de código como en espacio ocupado en disco. El código
desa ollado en Go con iene 859 líneas de código, en e a las 287 de la e sión en Ash.
Asimismo, el bina io compilado de Go pesa ap oximadamen e 12 MB, mien as que el
sc ip solo usa unos 13 KB debido a que solo incluye ex o plano. Sin emba go, consi-
de amos que es o no supone un p oblema ya que en ningún caso se a a de un amaño
excesi amen e g ande, y las en ajas an e io men e mencionadas supe an ampliamen e a
es a des en aja.
Pa a a aja el p oblema de la man enibilidad, el desa ollo de la he amien a se ha sepa-
ado en dos pa es. Po un lado, se ha c eado un paque e denominado LabsOnCon aine s,
concebido como una API que encapsula las llamadas necesa ias al SDK de Docke pa a
c ea y ges iona los en o nos de p ác icas. Po o a pa e, se ha desa ollado en o o
paque e —main— el ejecu able en sí, que en es e caso se a a de una in e az de línea
de comandos que llama a las unciones de LabsOnCon aine s.
De es a mane a, si en un u u o se quisiese c ea una in e az g á ica pa a ges iona
los con enedo es, solo se ía necesa io c ea la pa e de la is a, ya que el modelo es á
disponible pa a se usado en el paque e de LabsOnCon aine s. Además, si se desea a
aumen a las opciones disponibles a la ho a de ges iona en o nos —po ejemplo, ob ene
los p ocesos en ejecución en los con enedo es del en o no—, solo hab ía que añadi una
unción a la API y llama la desde el clien e.
A con inuación se explican los comandos disponibles, la o ma de ejecu a los y los pasos
que se siguen en cada uno de ellos, incluyendo algunos agmen os ele an es del código.
Asimismo, la documen ación del paque e LabsOnCon aine s se puede consul a en [122].
Po úl imo, en el apéndice B se incluye un manual de uso de la he amien a.
C eación del en o no
Pa a c ea un en o no en el que se pueda lle a a cabo una p ác ica, es necesa io ejecu-
a el comando ./LabsOnCon aine s -c <nomb eFiche o.yaml>. Si el a chi o exis e y
sigue el o ma o especi icado en el apa ado 3.4, se c ea una es uc u a de ipo LabEn-
i omen con la in o mación del a chi o, y se llama a la unción C ea eEn i omen de
LabsOnCon aine s.
47
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
unc c ea eLabEn i omen ( ilePa h s ing) {
m .P in ln("C eando el en o no de labo a o io...")
ile, e := os.ReadFile( ilePa h)
i e != nil {
m .P in ("e o while opening ile: % n", e )
os.Exi (1)
}
a labEn labsoncon aine s.LabEn i omen
e = yaml.Unma shal( ile, &labEn )
i e != nil {
m .P in ("e o while pa sing yaml ile: % n", e )
os.Exi (1)
}
_, e = labsoncon aine s.C ea eEn i omen (&labEn )
i e != nil {
m .P in ln(e )
os.Exi (1)
}
(...)
// LabEn i omen ep esen s he s uc u e o a lab en i omen . I is
composed by he lab name and a lis o LabCon aine .
ype LabEn i omen s uc {
LabName s ing `yaml:"nomb e_p ac ica"`
Con aine s []LabCon aine `yaml:"con enedo es"`
}
// LabCon aine ep esen s he s uc u e o a lab con aine . I is
composed by i s name, he image name he con aine will use, a lis o
LabNe wo k and he backg ound ield: i i is se o ue, a e minal
window will no be c ea ed o in e ac ing wi h he con aine .
ype LabCon aine s uc {
Name s ing `yaml:"nomb e"`
Image s ing `yaml:"imagen"`
Ne wo ks []LabNe wo k `yaml:" edes"`
Backg ound bool `yaml:"backg ound,omi emp y"`
ID s ing
}
// LabNe wo k ep esen s he s uc u e o a lab ne wo k. I is composed
by i s name and, op ionally, he IP ha will be used by he con aine
in he ne wo k.
48
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
ype LabNe wo k s uc {
Name s ing `yaml:"nomb e"`
IP s ing `yaml:"ip"`
}
La unción C ea eEn i omen ealiza es pasos: p ime o, des uye los en o nos y sus
con enedo es y edes asociados en caso de que exis a alguno con un nomb e coinciden-
e. A con inuación, se c ea una lis a sin duplicados con los nomb es de las edes y sus
di ecciones IP en el caso de que se hayan especi icado. Finalmen e, se c ean las edes y
los con enedo es de o ma concu en e, usando el paque e e g oups pa a cancela odas
las u inas en el caso de que se p oduzca un e o en alguna de ellas. Si e ec i amen e
se p oduce un e o , se des uye el en o no ac ual pa a elimina aquellos con enedo es y
edes que sí se hayan podido c ea .
// C ea eEn i omen c ea es a lab en i omen using Docke Engine SDK and
LabEn i omen ype.
// Fi s , i des oy any o he lab en i omen wi h he same name using
Des oyEn i omen , hen i c ea es all he desi ed ne wo ks and inally,
i c ea es all he con aine s. On success, i e u ns a map o he
c ea ed con aine s names and hei IDs.
// No e ha , du ing con aine c ea ion, i will no be pulled any
image, so he desi ed images will ha e o be p e iously buil o pulled.
unc C ea eEn i omen (labEn *LabEn i omen ) (map[s ing]s ing,e o )
{
i labEn .LabName == "" {
e u n nil, m .E o ("e o while c ea ing en i omen : lab
name canno be emp y")
}
e := Des oyEn i omen (labEn .LabName)
i e != nil {
e u n nil, m .E o ("e o while c ea ing en i omen : %w",
e )
}
ne wo ks, e := pa seNe wo ks(labEn )
i e != nil {
e u n nil, m .E o ("e o while c ea ing en i omen : %w",
e )
}
e = c ea eNe wo ks(ne wo ks)
i e != nil {
c ea eE := m .E o ("e o while c ea ing en i omen : %w",
e )
49
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
De ención del en o no
Median e ./LabsOnCon aine s -p <nomb eEn o no> se pueden pa a odos los con e-
nedo es del en o no de p ác icas de o ma concu en e. Es o esul a de in e és en el caso
de que sea necesa io de ene los con enedo es pe o no se haya comple ado la p ác ica,
pa a e i a así su des ucción y no ene que ol e a epe i pasos que se hayan ejecu ado
an e io men e cuando se quie a e mina dicha p ác ica.
// s opLabEn i omen s ops he con aine s o he speci ied lab
en i omen using LabsOnCon aine s API.
unc s opLabEn i omen (labName s ing) {
m .P in ("De eniendo los con enedo es y edes de % ... n",
labName)
con aine sIds, e :=
labsoncon aine s.Ge En i omen Con aine s(labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
i len(con aine sIds) > 0{
e := labsoncon aine s.S opEn i omen (labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
m .P in ln("Con enedo es de enidos exi osamen e")
}else {
m .P in ln("No exis en con enedo es asociados a", labName)
}
}
// S opEn i omen s ops all con aine s o he p o ided lab en i omen .
unc S opEn i omen (labName s ing)e o {
con aine s, e := Ge En i omen Con aine s(labName)
i e != nil {
e u n m .E o ("e o while s opping en i omen : %w", e )
}
e = s opCon aine s(con aine s)
i e != nil {
e u n m .E o ("e o while s opping en i omen : %w", e )
}
e u n nil
}
56

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Reac i ación del en o no
Es a opción pe mi e ol e a a anca los con enedo es que se hayan de enido p e ia-
men e pa a así pode con inua el abajo. Con la ejecución de ./LabsOnCon aine s
-l <nomb eEn o no> se lanzan los con enedo es concu en emen e, se imp ime po la
salida es ánda su in o mación y se c ean las e minales de los con enedo es en p ime
plano.
// s a LabEn i omen s a s he con aine s o he speci ied lab
en i omen using LabsOnCon aine s API.
unc s a LabEn i omen (labName s ing) {
m .P in ("Lanzando de nue o los con enedo es y edes de % ... n",
labName)
con aine s, e := labsoncon aine s.Ge En i omen Con aine s(labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
i len(con aine s) > 0{
e := labsoncon aine s.S a En i omen (labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
// I is necessa y o call again o Ge En i omen Con aine s
because we can only know he con aine s IPs a e he es a
con aine s, e =
labsoncon aine s.Ge En i omen Con aine s(labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
p in Con aine sIn o(con aine s)
e = c ea eTe minalWindows(con aine s)
i e != nil {
m .P in ("e o while c ea ing e minal windows: % n",
e )
s opE := labsoncon aine s.S opEn i omen (labName)
i s opE != nil {
m .P in ("e o on labsoncon aine s: % n", e )
}
os.Exi (1)
}
57
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
m .P in ln("Con enedo es lanzados exi osamen e")
}else {
m .P in ln("No exis en con enedo es asociados a", labName)
}
}
// S a En i omen s a s all he con aine s o he p o ided lab
en i omen .
unc S a En i omen (labName s ing)e o {
con aine s, e := Ge En i omen Con aine s(labName)
i e != nil {
e u n m .E o ("e o while s a ing en i omen : %w", e )
}
e = s a Con aine s(con aine s)
i e != nil {
e u n m .E o ("e o while s a ing en i omen : %w", e )
}
e u n nil
}
Inspecciona en o no
Si se ejecu a ./LabsOnCon aine s -i <nomb eEn o no> es posible ob ene in o mación
de bajo ni el ela i a a los con enedo es del en o no, como po ejemplo los olúmenes
mon ados, las edes a las que es án conec ados o sus a iables de en o no.
// inspec LabEn i omen p in s o he s anda d ou pu he esul o
unning inspec on he lab en i omen con aine s, using LabsOnCon aine s
API.
unc inspec LabEn i omen (labName s ing) {
m .P in ("In o mación de los con enedo es de % : n", labName)
con aine sIds, e :=
labsoncon aine s.Ge En i omen Con aine s(labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
i len(con aine sIds) > 0{
inspec Map, e := labsoncon aine s.Inspec En i omen (labName)
i e != nil {
m .P in ln(e )
os.Exi (1)
}
58
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
o con aine , inspec := ange inspec Map {
m .P in ln()
m .P in ("% : n", con aine )
m .P in ln(s ing(inspec ))
}
}else {
m .P in ln("No exis en con enedo es asociados a", labName)
}
}
// Inspec En i omen e u ns low-le el in o ma ion o all he con aine s
o he p o ided lab en i omen . On success, i e u ns a map o he
con aine s' names as keys and hei in o ma ion as alues.
unc Inspec En i omen (labName s ing) (map[s ing][]by e,e o ) {
con aine s, e := Ge En i omen Con aine s(labName)
i e != nil {
e u n nil, m .E o ("e o while inspec ing en i omen : %w",
e )
}
inspec Map, e := inspec Con aine s(con aine s)
i e != nil {
e u n nil, m .E o ("e o while inspec ing en i omen : %w",
e )
}
inspec JSONMap := make(map[s ing][]by e,len(inspec Map))
o con aine , inspec In o := ange inspec Map {
inspec JSON, e := json.Ma shalInden (inspec In o, ""," ")
i e != nil {
e u n nil, m .E o ("e o while inspec ing en i omen :
%w", e )
}
inspec JSONMap[con aine ] = inspec JSON
}
e u n inspec JSONMap, nil
}
59
Capí ulo 5
Resul ados
5.1. En o no de p uebas
El equipo que se ha u ilizado pa a ealiza las p uebas de despliegue de los con enedo es
ha sido un po á il Leno o IdeaPad 5 P o, que cuen a con un p ocesado AMD Ryzen 7
5800U de ocho núcleos, 16 GB de memo ia RAM y un disco SSD de 512 GB. Sob e es a
máquina se ha ealizado una ins alación mínima del sis ema ope a i o Ubun u 22.04, con
XFCE como en o no de esc i o io.
Hay que ene en cuen a que es e sis ema di ie e de los disponibles en la Facul ad de
In o má ica de la Uni e sidad Complu ense de Mad id, especialmen e al usa un disco de
es ado sólido en luga de un disco mecánico, aspec o que, al y como se había señalado
en el apa ado 3.1, puede a ec a no ablemen e al endimien o de las máquinas i ua-
les. No obs an e, como ambos despliegues —p ác icas con con enedo es y con máquinas
i uales— se an a e alua sob e el mismo en o no, se pueden es udia las di e encias
en e ambas implemen aciones pudiendo supone que se da án de idén ica mane a en
cualquie o o sis ema.
Po o a pa e, hubie a sido más con enien e usa Alpine Linux como sis ema ope a i o
base pa a pode ealiza una compa ación en un en o no más pa ecido a la máquina i ual
desc i a en el capí ulo an e io . Sin emba go, Vi ualBox no es compa ible con Alpine, po
lo que, en el caso de habe u ilizado es e sis ema ope a i o, no se pod ían habe ealizado
las p uebas compa a i as en e el uso de con enedo es y máquinas i uales. Po ello, se
ha op ado po Ubun u con XFCE pa a in en a ob ene una semejanza mayo que si se
hubie a usado GNOME, el en o no de esc i o io po de ec o de Ubun u.
5.2. P ueba de concep o
La p ueba de concep o ealizada consis e en lle a a cabo la p ác ica 0 de la asigna u a
Redes y Segu idad II. Es a p ác ica es la p ime a que se ealiza odos los años en es a
asigna u a, y la que más máquinas i uales equie e. En ella se pide a los es udian es
e ec ua con igu aciones básicas de ed pa a conec a odas las ins ancias en e sí, mo-
ni o iza el es ado de la ed con Wi esha k y desplega un se ido web con el módulo
60
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
SimpleHTTPSe e de Py hon [123], al que pos e io men e se accede á median e Fi e ox
desde o a máquina i ual. Todas las ins ancias usan la máquina i ual de Debian. En
la igu a 5.1 se mues a la opología de ed que se debe cons ui en es a p ác ica:
Figu a 5.1: Topología de ed de la p ác ica 0 de Redes y Segu idad II
Pa a ealiza es a p ác ica con con enedo es, se u iliza á la imagen ys, desc i a en la
sección 3.2.2. Los con enedo es se c ea án median e el siguien e a chi o YAML, que sigue
el o ma o de allado en el apa ado 3.4:
nomb e_p ac ica: p ac ica0
con enedo es:
- nomb e: hos 1
imagen: ys
edes:
- nomb e: 1
- nomb e: hos 2
imagen: ys
edes:
- nomb e: 1
- nomb e: ou e 1
imagen: ys
edes:
- nomb e: 1
- nomb e: 2
- nomb e: ou e 2
imagen: ys
edes:
- nomb e: 2
- nomb e: 3
- nomb e: se ido
imagen: ys
edes:
- nomb e: 3
En la igu a 5.2 podemos e el esul ado de ejecu a la o den ./LabsOnCon aine s -c
p ac ica0.yaml, enca gada de lee el iche o YAML y c ea los con enedo es y edes
61

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
en consonancia con lo desc i o en dicho a chi o. En la en ana donde se ha ejecu ado el
comando se mues a in o mación de cada con enedo , como su iden i icado , el nomb e
de cada con enedo , su imagen, las edes a las que es á conec ado y la di ección IP que se
le ha asignado en cada una de ellas. Pa a in e ac ua con ellos, se mues a una en ana
de e minal con cinco pes añas, una pa a cada con enedo :
Figu a 5.2: Es ado as habe ejecu ado ./LabsOnCon aine s -c p ac ica0.yaml
An es de con igu a la ed en cada con enedo se deben ins ala odos los p og amas
que ayan a hace al a du an e la p ác ica y que no es én incluidos en la imagen, en
es e caso Py hon, en el con enedo del se ido . Es o se debe a que, si se modi ica la
u a po de ec o que deben segui los paque es, se pe de á la conexión a In e ne . Es e
compo amien o esul a simila a lo que sucede ac ualmen e con las máquinas i uales,
ya que no malmen e se suele deshabili a el adap ado NAT después de desca ga los
a chi os necesa ios pa a e i a in e e encias du an e el desa ollo de la p ác ica. No
obs an e, si se desea man ene la conec i idad a In e ne , se pueden con igu a las ablas
de en u amien o pa a conec a los con enedo es en e sí pe o e i ando modi ica la u a
po de ec o. En la igu a 5.3 podemos e que la ins alación de Py hon se ealiza de o ma
co ec a den o del con enedo :
62
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Figu a 5.3: Ins alación de Py hon en el con enedo del se ido
T as ins ala los p og amas necesa ios, se puede con igu a la ed en cada con enedo
u ilizando los comandos de la sui e ip. Podemos e en la igu a 5.4 que cada con enedo
dispone de sus co espondien es di ecciones IP, especi icadas en la igu a 5.1, y que la abla
de u as es á con igu ada de al o ma que puedan comunica se unos con o os:
63
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Figu a 5.4: Con igu ación de ed de los con enedo es
A con inuación, en la p ác ica se pide analiza median e Wi esha k qué ocu e cuando se
manda un paque e ICMP con ping desde Hos 2, p ime o a un con enedo de la misma
ed —Hos 1— y luego a un con enedo de o a ed —Se ido —, comp obando con ip
neigh el es ado de las ablas ARP an es y después de ejecu a los comandos. En las igu as
5.5 y 5.6 se mues a el esul ado de ejecu a es as ó denes y el co ec o uncionamien o
en ambos casos:
Figu a 5.5: Resul ado as manda un paque e ICMP en la misma ed
64
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
Figu a 5.6: Resul ado as manda un paque e ICMP a o a ed
Finalmen e, el úl imo eje cicio de la p ác ica consis e en c ea un se ido web con Py hon
en la máquina Se ido y accede a es e desde Hos 2 median e Fi e ox. Además, se debe
analiza el á ico de la ed con Wi esha k en Hos 2, Rou e 2 y Se ido . Podemos e
en la igu a 5.7 que es e eje cicio se puede lle a a cabo sin ningún ipo de incon enien-
e:
Figu a 5.7: Resul ado as accede al se ido web con Fi e ox desde Hos 2
65
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
en un en o no sepa ado de la máquina an i iona, po lo que los iesgos de que el sis ema
se ea dañado se educen no ablemen e.
No obs an e, ambién podemos enume a o as medidas que se han omado pa a aumen a
aún más la segu idad. Po ejemplo, el hecho de que el usua io de la máquina i ual no
disponga de pe misos de supe usua io ni pe enezca al g upo docke imposibili a que se
puedan c ea con enedo es con opciones pelig osas, cues ión que ya se había mencionado
en la sección 2.3.5. Además, hay que eco da que la in e acción de las aplicaciones g á icas
de los con enedo es con el se ido X del an i ión se ealiza median e un us ed cookies,
lo que e i a que un p og ama malicioso pueda llega a in e e i con las en anas del
sis ema an i ión.
La segu idad del en o no y de los con enedo es ha sido analizada con Docke Bench
o Secu i y [126], una he amien a que «comp ueba si se cumplen una se ie de buenas
p ác icas a la ho a de desplega con enedo es en p oducción». El in o me comple o puede
consul a se en el apéndice C.
Algunas de es as p ác icas no pueden aplica se a es e p oyec o: po ejemplo, es a he-
amien a conside a como al a añadi capabili ies adicionales, di ec iz que no se puede
sa is ace debido a que esul a imp escindible que los con enedo es dispongan de NET_-
ADMIN pa a ealiza las p ác icas. Po o a pa e, como es a he amien a es á en ocada a
en o nos de p oducción, exis en di ec i as cuya implemen ación no iene sen ido en es e
ámbi o, como po ejemplo es ablece el einicio au omá ico de los con enedo es en caso
de allo.
En cuan o a las ecomendaciones que sí se pueden aplica a es e p oyec o, podemos
e que muchas de ellas se han lle ado a cabo, como e i a compa i los namespaces
del an i ión con los con enedo es, no mon a di ec o ios sensibles del an i ión o no
expone pue os p i ilegiados. Sin emba go, exis en o as buenas p ác icas que no se han
implemen ado, como con igu a la audi o ía de los iche os de Docke , emplea los use
namespaces o aplica pe iles pe sonalizados de AppA mo y SELinux. El habe lo hecho
hab ía supues o un g an es ue zo y una g an can idad de iempo, sob e odo eniendo en
cuen a que en es e p oyec o no se p e endía implemen a un sis ema en p oducción sino
ealiza una p ime a ap oximación pa a conoce si e a iable el uso de con enedo es pa a
ealiza p ác icas académicas. Además, hay que ene en cuen a que los con enedo es
se es án ejecu ando sob e una máquina i ual, po lo que no esul a an p io i a io
es ablece unas medidas de segu idad an es ic as. No obs an e, somos conscien es de la
impo ancia de es as ecomendaciones, y pod ían se de u ilidad si en el u u o se decidiese
implemen a es e p oyec o den o de los sis emas de p oducción de los labo a o ios.
El úl imo pun o que se debe analiza es la segu idad de las imágenes empleadas po
los con enedo es. Tal y como se ha expues o en el apa ado 3.5, se ha decidido que
los es udian es no puedan desca ga se ni cons ui nue as imágenes, e i ando así que
puedan u iliza imágenes que incluyan opciones pelig osas. En cuan o a la imagen ys,
se ha ealizado un análisis de ulne abilidades con docke scan, que indica que exis en
ulne abilidades an o en los p og amas ins alados como en la p opia imagen de Debian.
Sin emba go, solo sie e de es as ulne abilidades son de al o impac o. La ecomendación
en es e caso se ía ac ualiza Debian a la úl ima e sión, suponiendo que no se necesi en
las ca ac e ís icas especí icas de Debian 9 pa a la ealización de las p ác icas. Po o a
pa e, las ulne abilidades del es o de aplicaciones esul an más di íciles de soluciona
72

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
po que se depende de las e siones disponibles en los eposi o ios de paque es de Debian.
No se ha incluido el análisis comple o en es a memo ia debido a que el núme o de hojas
que ocupaba e a excesi o, pe o en la igu a 5.9 se puede e una cap u a de los esul ados
ob enidos:
Figu a 5.9: Análisis de ulne abilidades de la imagen ys
En esumen, podemos inaliza es e análisis de segu idad a i mando que, si bien se pod ían
habe aplicado o as medidas adicionales, es e p oyec o cuen a con un ni el de segu idad
acep able pa a pode se candida o a la sus i ución de la implemen ación ac ual de los
labo a o ios, g acias al uso de una máquina i ual como ba e a de aislamien o ex a y al
con ol de las opciones disponibles a la ho a de c ea con enedo es e imágenes, que e i an
que se puedan gene a si uaciones de iesgo po pa e de usua ios maliciosos.
73
Capí ulo 6
Conclusiones y abajo u u o
6.1. Conclusiones
En es e T abajo Fin de G ado se p e endía e alua la pues a en uncionamien o de un
labo a o io docen e empleando con enedo es en luga de máquinas i uales, con el in
de p opo ciona una solución a la p oblemá ica ac ual en las p ác icas de las asigna u as
de sis emas y edes de las i ulaciones de la Facul ad de In o má ica de la Uni e sidad
Complu ense de Mad id.
T as e ec ua un es udio de cómo unciona la i ualización a ni el de sis ema ope a i o
y analiza qué ca ac e ís icas debían ene los con enedo es pa a pode sus i ui a las
máquinas i uales ac uales, se diseñó una solución que u ilizase Docke como so wa e
de ges ión de con enedo es, Alpine Linux y Vi ualBox pa a c ea una máquina i ual
que si iese como base pa a la ejecución de los con enedo es, y Go pa a desa olla una
he amien a que au oma izase el p oceso de despliegue de los con enedo es.
El uncionamien o de es a p opues a ue e aluado en una p ueba de concep o consis en e
en ealiza la p ác ica 0 de la asigna u a Redes y Segu idad II, a ea que se pudo lle a a
cabo de mane a exi osa. Además, se compa ó el endimien o en e la solución plan eada
la ac ual, que u iliza máquinas i uales, ob eniendo que los con enedo es o ecen mejo es
esul ados en cuan o a espacio de disco ocupado, iempos de c eación y uso de memo ia
RAM. Finalmen e, se examinó la segu idad de es e p oyec o, obse ando que, g acias al
uso de la máquina i ual de Alpine Linux y a las medidas implemen adas du an e la
c eación de los con enedo es, se puede alcanza un ni el de segu idad compa able con el
del despliegue ac ual.
Po es os mo i os, podemos conclui que la implemen ación de un labo a o io median-
e con enedo es es o almen e iable, ob eniendo los mismos esul ados de ap endizaje
po pa e de los es udian es. Además, es a p opues a supone una mejo al e na i a con
espec o al uso de las máquinas i uales ac uales debido a que p opo ciona un endi-
mien o muy supe io , sin que la segu idad del sis ema se ea comp ome ida en ningún
caso. Po úl imo, el uso de con enedo es puede se ap o echado pa a, a a és de nue as
p ác icas o modi icando las ya exis en es, añadi obje i os elacionados con la ges ión y
adminis ación de con enedo es, ya que se a a de un conocimien o que puede esul a
muy necesa io de ca a al u u o p o esional de los es udian es.
74
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
6.2. T abajo u u o
Es e p oyec o p e ende se una p ime a ap oximación pa a comp oba si el uso de con-
enedo es pa a ealiza p ác icas académicas e a más bene icioso que segui empleando
máquinas i uales. Po es e mo i o, exis en bas an es posibilidades de ealiza mejo as
sob e la implemen ación en el u u o.
Sob e la he amien a de despliegue de con enedo es, una posible mejo a se ía añadi la
capacidad de que pueda esc ibi en un iche o de log las ope aciones que se an ejecu ando,
con el in de pode audi a su compo amien o en caso necesa io. También se pod ía
añadi una opción a la he amien a que gua dase el es ado de los con enedo es en un
a chi o, lo que pe mi i ía que, po ejemplo, un es udian e pudie a comenza una p ác ica
en los labo a o ios de la acul ad y comple a la más a de en su o denado pe sonal. Po
úl imo, a pesa de que se ha alcanzado un al o ni el de op imización g acias al uso de
concu encia, se ía in e esan e ealiza p uebas de pe ilado pa a conoce si es posible
aplica más mejo as de endimien o a ni el de código.
O o cambio que se pod ía ealiza es elimina la es icción es ic a de que se deban usa
imágenes locales pa a la c eación de los con enedo es. Pa a ga an iza que la segu idad del
sis ema no se pone en iesgo, se pod ía comp oba que la imagen seleccionada pe enece a
un egis o con iable, así como e i ica que no se ha is o modi icada du an e el p oceso
de desca ga median e Docke Con en T us .
Si bien es cie o que el uso de la máquina i ual de Alpine p opo ciona un necesa io
ni el de aislamien o ex a, se pod ían e alua o as al e na i as que log asen elimina la
necesidad de es a máquina i ual, pe o o o gando el mismo g ado de segu idad. Una posi-
bilidad es ol e a comp oba si es posible la ejecución de con enedo es oo less, e isando
especialmen e que no exis an p oblemas con los pe misos de los iche os compa idos a
a és de los bind moun s, al y como se había especi icado en la sección 3.6. O a opción
ecomendable es es udia el uso de un imes di e en es a unc, como gViso [127], Sysbox
[128] o Ka a Con aine s [129]. Es os un imes p opo cionan di e sas al e na i as pa a
inc emen a el ni el de segu idad de los con enedo es, como el uso de máquinas i uales
lige as o ke nels a ni el de usua io que e i an la in e acción di ec a en e el con enedo
y el núcleo del sis ema ope a i o.
Finalmen e, se pod ían añadi nue as uncionalidades que mejo asen la expe iencia du an-
e la ealización de las p ác icas, como la c eación de una in e az g á ica que pe mi iese la
de inición isual de los con enedo es deseados o, basándonos en abajos como Lab aine s,
ag ega la posibilidad de ob ene au omá icamen e in o mación de las a eas ejecu adas
den o de los con enedo es pa a pode e alua el desempeño de los es udian es du an e
la p ác ica.
75
Chap e 6
Conclusions and u u e wo k
6.1. Conclusions
In his Final Deg ee P ojec , he aim was o e alua e he implemen a ion o a eaching
labo a o y using con aine s ins ead o i ual machines, in o de o p o ide a solu ion o
he cu en p oblem in he p ac ices o he sys ems and ne wo ks subjec s o he deg ees
o he Facul y o Compu e Science o he Complu ense Uni e si y o Mad id.
A e conduc ing a s udy o how OS-le el i ualiza ion wo ks and analyzing wha ea u es
con aine s should ha e o be able o eplace he cu en i ual machines, a solu ion was
designed using Docke as con aine managemen so wa e, Alpine Linux and Vi ualBox
o c ea e a i ual machine o se e as a base o unning he con aine s, and Go o
de elop a ool o au oma e he con aine deploymen p ocess.
The unc ioning o his p oposal was e alua ed in a p oo o concep consis ing o pe o m-
ing p ac ice 0 o he Compu e Ne wo ks Secu i y II subjec , a ask ha was success ully
ca ied ou . In addi ion, he pe o mance be ween he p oposed solu ion and he cu en
one, which uses i ual machines, was compa ed, ob aining ha con aine s o e be e
esul s in e ms o occupied disk space, c ea ion imes and RAM memo y usage. Fi-
nally, he secu i y o his p ojec was examined, obse ing ha , hanks o he use o
he Alpine Linux i ual machine and he measu es implemen ed du ing he c ea ion o
he con aine s, a le el o secu i y compa able o ha o he cu en deploymen can be
achie ed.
Fo hese easons, we can conclude ha he implemen a ion o a labo a o y using con-
aine s is o ally iable, ob aining he same lea ning esul s o he s uden s. In addi ion,
his p oposal is a be e al e na i e o he use o he cu en i ual machines because i
p o ides a much highe pe o mance, wi hou comp omising he secu i y o he sys em
in any case. Finally, he use o con aine s can be used o add objec i es ela ed o he
managemen and adminis a ion o con aine s h ough new p ac ices o by modi ying
exis ing ones, since his knowledge may be e y necessa y o he s uden s’ p o essional
u u e.
76
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
6.2. Fu u e wo k
This p ojec is in ended o be a i s app oach o es whe he he use o con aine s o
academic p ac ices was mo e bene icial han con inuing o use i ual machines. Fo his
eason, he e a e many possibili ies o imp o e he implemen a ion in he u u e.
Rega ding he con aine deploymen ool, a possible imp o emen would be o add he
abili y o w i e o a log ile he ope a ions ha a e being execu ed, in o de o be able o
audi i s beha io i necessa y. Also, an op ion could be added o he ool ha would sa e
he s a us o he con aine s in a ile, which would allow, o example, a s uden o s a a
p ac ice in he acul y labs and comple e i la e on his o he pe sonal compu e . Finally,
al hough a high le el o op imiza ion has been achie ed h ough he use o concu ency, i
would be in e es ing o pe o m p o iling es s o see i u he pe o mance imp o emen s
can be applied a he code le el.
Ano he change ha could be made is o emo e he s ic es ic ion ha local images
mus be used o con aine c ea ion. To ensu e ha sys em secu i y is no pu a isk,
i could be checked ha he selec ed image belongs o a us ed egis y, as well as
e i ying ha i has no been modi ied du ing he download p ocess using Docke Con en
T us .
While i is ue ha he use o he Alpine i ual machine p o ides a necessa y ex a le el
o isola ion, o he al e na i es could be e alua ed ha would elimina e he need o his
i ual machine, bu p o iding he same deg ee o secu i y. One possibili y is o echeck
i he execu ion o oo less con aine s is possible, checking especially ha he e a e no
p oblems wi h he pe missions o he sha ed iles h ough bind moun s, as speci ied in
he sec ion 3.6. Ano he ecommended op ion is o s udy he use o di e en un imes
o unc, such as gViso [127], Sysbox [128] o Ka a Con aine s [129]. These un imes
p o ide se e al al e na i es o inc ease he secu i y le el o con aine s, such as he use
o ligh weigh i ual machines o use -le el ke nels ha a oid di ec in e ac ion be ween
he con aine and he ope a ing sys em ke nel.
Finally, new unc ionali ies could be added o imp o e he expe ience du ing he p ac ices,
such as he c ea ion o a g aphical in e ace ha would allow he isual de ini ion o
he desi ed con aine s o , based on wo ks such as Lab aine s, adding he possibili y o
au oma ically ob aining in o ma ion o he asks execu ed inside he con aine s o be able
o e alua e he pe o mance o he s uden s du ing he p ac ice.
77

Bibliog a ía
[1] “Amazon Web Se ices”, Amazon, 2022. [En línea]. Disponible en: h ps://aws.
amazon.com/es/ [Accedido: 13-05-2022].
[2] “Mic oso Azu e”, Mic oso , 2022. [En línea]. Disponible en: h ps://azu e.
mic oso .com/es-es/ [Accedido: 13-05-2022].
[3] H. E. Scha e , S. F. A e i , M. I. Hoi , A. Peele , E. D. Sills y M. A. Vouk, “NC-
SU’s Vi ual Compu ing Lab: A Cloud Compu ing Solu ion”, Compu e , ol. 42,
n.o7, págs. 94-97, 2009. doi: 10.1109/MC.2009.230.
[4] M. C. Mu phy y M. McClelland, “Compu e Lab o Go: A “Cloud” Compu ing
Implemen a ion”, en The P oceedings o he In o ma ion Sys ems Educa ion Con-
e ence, 2008. [En línea]. Disponible en: h ps://p oc.edsig.o g/2008/2343/
ISECON.2008.Mu phy.pd .
[5] “Wha is a Con aine ?”, Docke , 2022. [En línea]. Disponible en: h ps://www.
docke .com/ esou ces/wha -con aine / [Accedido: 13-05-2022].
[6] J. H. Sianipa , C. Willems y C. Meinel, “A con aine -based i ual labo a o y
o in e ne secu i y e-lea ning”, In e na ional Jou nal o Lea ning and Teaching,
ol. 2, n.o2, págs. 121-128, dic. de 2016. doi: 10.18178/ijl .2.2.121-128.
[7] “Lab aine s”, Cen e o Cybe secu i y,Cybe Ope a ions - Na al Pos g adua e
School, 2022. [En línea]. Disponible en: h ps://nps.edu/web/c3o/lab aine s
[Accedido: 24-04-2022].
[8] M. F. Thompson y C. E. I ine, “Indi idualizing Cybe secu i y Lab Exe cises
wi h Lab aine s”, IEEE Secu i y & P i acy, ol. 16, n.o2, págs. 91-95, 2018. doi:
10.1109/MSP.2018.1870862.
[9] G. Chen, “C Labs: A Con aine Based In e ac i e Vi ual Lab o IT Educa ion”,
Geo gia Ins i u e o Technology, in . éc., 2020. [En línea]. Disponible en: h p:
//hdl.handle.ne /1853/64898.
[10] Vic o ia Fedoseenko. “A b ie his o y o i ualiza ion, o why do we di ide so-
me hing a all”, ISPsys em, 25 de no . de 2019. [En línea]. Disponible en: h ps://
www.ispsys em.com/news/b ie -his o y-o - i ualiza ion [Accedido: 01-03-2022].
[11] O. Agesen, A. Ga hwai e, J. Sheldon y P. Sub ahmanyam, “The e olu ion o an
x86 i ual machine moni o ”, ACM SIGOPS Ope a ing Sys ems Re iew, ol. 44,
n.o4, págs. 3-18, 2010. doi: 10.1145/1899928.1899930.
[12] In el® Vi ualiza ion Technology Speci ica ion o he IA-32 In el® A chi ec u e,
In el Co po a ion, ab . de 2005.
78
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[13] AMD64 Vi ualiza ion Codenamed “Paci ica” Technology Secu e Vi ual Machine
A chi ec u e Re e ence Manual, Ad anced Mic o De ices, mayo de 2005.
[14] P. Ba ham, B. D ago ic, K. F ase , S. Hand, T. Ha is, A. Ho, R. Neugebaue , I.
P a y A. Wa ield, “Xen and he A o Vi ualiza ion”, ACM SIGOPS Ope a ing
Sys ems Re iew, ol. 37, n.o5, págs. 164-177, oc . de 2003, issn: 0163-5980. doi:
10.1145/1165389.945462.
[15] A i Ki i y. “[PATCH 0/7] KVM: Ke nel-based Vi ual Machine”, Linux-Ke nel
A chi e, 19 de oc . de 2006. [En línea]. Disponible en: h ps://lkml.iu.edu/
hype mail/linux/ke nel/0610.2/1369.h ml [Accedido: 07-03-2022].
[16] “O acle VM Vi ualBox”, O acle, 2022. [En línea]. Disponible en: h ps://www.
i ualbox.o g/ [Accedido: 07-03-2022].
[17] “Fi ec acke ”, Amazon Web Se ices, 2022. [En línea]. Disponible en: h ps://
i ec acke -mic o m.gi hub.io/ [Accedido: 07-03-2022].
[18] “Unde s anding Full Vi ualiza ion, Pa a i ualiza ion, and Ha dwa e Assis ”,
VMWa e, Inc, 11 de ma . de 2008. [En línea]. Disponible en: h ps://www.
mwa e.com/ echpape s/2007/unde s anding- ull- i ualiza ion-pa a i ualiza -
1008.h ml [Accedido: 02-03-2021].
[19] D. Ba e y G. Kippe , “How Vi ualiza ion Happens”, en Vi ualiza ion and
Fo ensics, D. Ba e y G. Kippe , eds., Bos on: Syng ess, 2010, págs. 3-24. doi:
h ps://doi.o g/10.1016/B978-1-59749-557-8.00001-1.
[20] R. J. C easy, “The O igin o he VM/370 Time-Sha ing Sys em”, IBM Jou nal o
Resea ch and De elopmen , ol. 25, n.o5, págs. 483-490, 1981. doi: 10.1147/ d.
255.0483.
[21] “Pa a i _ops”, The Linux Ke nel Documen a ion, 2019. [En línea]. Disponible
en: h ps://www.ke nel.o g/doc/h ml/la es / i /pa a i _ops.h ml [Accedido:
05-03-2022].
[22] “DomU Suppo o Xen”, Xen P ojec Wiki, 2017. [En línea]. Disponible en: h ps:
//wiki.xenp ojec .o g/wiki/DomU_Suppo _ o _Xen [Accedido: 05-03-2022].
[23] “Ke nel-based Vi ual Machine”, KVM, 2022. [En línea]. Disponible en: h ps:
//www.linux-k m.o g/page/Main_Page [Accedido: 15-05-2022].
[24] “Xen P ojec ”, The Linux Funda ion, 2022. [En línea]. Disponible en: h ps://
xenp ojec .o g/ [Accedido: 15-05-2022].
[25] “Hype -V Technology O e iew”, Mic oso Docs, 29 de jul. de 2021. [En línea].
Disponible en: h ps://docs.mic oso .com/en-us/windows-se e / i ualiza ion/
hype - /hype - - echnology-o e iew [Accedido: 15-05-2022].
[26] “VMwa e ESXi”, VMWa e, 2022. [En línea]. Disponible en: h ps://www. mwa e.
com/p oduc s/esxi-and-esx.h ml [Accedido: 15-05-2022].
[27] “VMwa e Wo ks a ion P o”, VMWa e, 2022. [En línea]. Disponible en: h ps:
//www. mwa e.com/p oduc s/wo ks a ion-p o.h ml [Accedido: 15-05-2022].
[28] “Pa allels Desk op”, Pa allels, 2022. [En línea]. Disponible en: h ps://www.
pa allels.com/p oduc s/desk op/ [Accedido: 15-05-2022].
79
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[29] M. Kaschke. “Vi ual Machine (VM) s. Con aine ”, Medium, 24 de no . de 2020.
[En línea]. Disponible en: h ps://mkaschke.medium.com/ i ual-machine- m-
s-con aine -13ab51 4c177 [Accedido: 10-03-2022].
[30] T. Hild ed. “The His o y o Con aine s”, Red Ha Blog, 28 de ago. de 2015. [En
línea]. Disponible en: h ps://www. edha .com/en/blog/his o y- con aine s
[Accedido: 11-03-2022].
[31] C. Siebenmann. “The somewha su p ising his o y o ch oo ()”, Wande ing Though s,
25 de ago. de 2015. [En línea]. Disponible en: h ps://u cc.u o on o.ca/~cks/
space/blog/unix/Ch oo His o y [Accedido: 08-03-2022].
[32] “Jails”, en The F eeBSD Handbook, The F eeBSD P ojec , ed. 2021. [En línea].
Disponible en: h ps://docs. eebsd.o g/en/books/handbook/jails/.
[33] “O e iew”, Linux-VSe e , 22 de ab . de 2013. [En línea]. Disponible en: h p:
//linux- se e .o g/O e iew [Accedido: 11-03-2022].
[34] P. B. Menage, “Adding Gene ic P ocess Con aine s o he Linux Ke nel”, en P o-
ceedings o he O awa Linux Symposium, 2007, págs. 45-58. [En línea]. Disponible
en: h ps://www.ke nel.o g/doc/ols/2007/ols2007 2-pages-45-58.pd .
[35] M. Ke isk. “Namespaces in ope a ion, pa 1: namespaces o e iew”, LWN.ne ,
4 de ene. de 2013. [En línea]. Disponible en: h ps://lwn.ne /A icles/531114/
[Accedido: 11-03-2022].
[36] “Wha ’s LXC?”, linuxcon aine s.o g, 28 de sep. de 2021. [En línea]. Disponible en:
h ps://linuxcon aine s.o g/lxc/in oduc ion/ [Accedido: 12-03-2022].
[37] “Why Docke ?”, Docke , 2022. [En línea]. Disponible en: h ps://www.docke .
com/why-docke [Accedido: 12-03-2022].
[38] M. Ede , “Hype iso - s. Con aine -based Vi ualiza ion”, en P oceedings o he
Semina s Fu u e In e ne (FI) and Inno a i e In e ne Technologies and Mobile
Communica ions (IITM), 2015, págs. 1-7. doi: 10.2313/NET-2016-07-1_01.
[39] S. Hykes. “Docke 0.9: in oducing execu ion d i e s and libcon aine ”, Docke
Blog, 10 de ma . de 2014. [En línea]. Disponible en: h ps://www.docke .com/
blog/docke - 0- 9- in oducing- execu ion- d i e s- and- libcon aine / [Accedido:
12-03-2022].
[40] J. Ba . “AWS Elas ic Beans alk o Docke ”, AWS News Blog, 23 de ab . de 2014.
[En línea]. Disponible en: h ps://aws.amazon.com/es/blogs/aws/aws-elas ic-
beans alk- o -docke / [Accedido: 12-03-2022].
[41] “Wha is Kube ne es?”, Kube ne es, 23 de jul. de 2021. [En línea]. Disponible en:
h ps://kube ne es.io/docs/concep s/o e iew/wha -is-kube ne es/ [Accedido:
12-03-2022].
[42] “Abou he Open Con aine Ini ia i e”, Open Con aine Ini ia i e, 2020. [En lí-
nea]. Disponible en: h ps://opencon aine s.o g/abou /o e iew/ [Accedido:
12-03-2022].
[43] Open Con aine Inicia i e. “OCI Image Fo ma Speci ica ion”, eposi o io de Gi Hub,
2022. [En línea]. Disponible en: h ps://gi hub.com/opencon aine s/image-spec
[Accedido: 12-03-2022].
80
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[44] Open Con aine Inicia i e. “Open Con aine Ini ia i e Run ime Speci ica ion”,
eposi o io de Gi Hub, 2022. [En línea]. Disponible en: h ps://gi hub.com/
opencon aine s/ un ime-spec [Accedido: 12-03-2022].
[45] T. B own, “B inging Docke To Windows De elope s wi h Windows Se e Con-
aine s”, MSDN Magazine Issues, ol. 32, n.o4, ab . de 2017. [En línea]. Dispo-
nible en: h ps://docs.mic oso .com/en- us/a chi e/msdn-magazine/2017/
ap il/con aine s-b inging-docke - o-windows-de elope s-wi h-windows-se e -
con aine s.
[46] “Docke o e iew”, Docke , 6 de eb. de 2022. [En línea]. Disponible en: h ps:
//docs.docke .com/ge -s a ed/o e iew/ [Accedido: 13-03-2022].
[47] “con aine d”, con aine d, 2022. [En línea]. Disponible en: h ps://con aine d.io/
[Accedido: 13-03-2022].
[48] Open Con aine s Inicia i e. “ unc”, eposi o io de Gi Hub, 2022. [En línea]. Dis-
ponible en: h ps://gi hub.com/opencon aine s/ unc [Accedido: 13-03-2022].
[49] S. Hykes. “In oducing Moby P ojec : a new open-sou ce p ojec o ad ance he
so wa e con aine iza ion mo emen ”, Docke Blog, 18 de ab . de 2017. [En línea].
Disponible en: h ps://www.docke .com/blog/in oducing- he-moby-p ojec /
[Accedido: 12-03-2022].
[50] “Wha is Podman?”, Podman, 30 de jun. de 2021. [En línea]. Disponible en: h ps:
//podman.io/wha is.h ml [Accedido: 13-03-2022].
[51] con aine s. “con aine s”, eposi o io de Gi Hub, 2022. [En línea]. Disponible en:
h ps://gi hub.com/con aine s [Accedido: 13-03-2022].
[52] P. Se hi. “Roo less con aine s wi h Podman: The basics”, Red Ha De elope Blog,
25 de sep. de 2020. [En línea]. Disponible en: h ps://de elope s. edha .com/blog/
2020/09/25/ oo less-con aine s-wi h-podman- he-basics [Accedido: 13-03-2022].
[53] “Run he Docke daemon as a non- oo use (Roo less mode)”, Docke , 17 de
dic. de 2021. [En línea]. Disponible en: h ps://docs.docke .com/engine/secu i y/
oo less/ [Accedido: 13-03-2022].
[54] con aine s. “c un”, eposi o io de Gi Hub, 2022. [En línea]. Disponible en: h ps:
//gi hub.com/con aine s/c un [Accedido: 13-03-2022].
[55] con aine s. “Con aine Tools Guide”, eposi o io de Gi Hub, 24 de ago. de 2021.
[En línea]. Disponible en: h ps://gi hub.com/con aine s/buildah/blob/main/
docs/con aine ools/README.md [Accedido: 13-03-2022].
[56] Building, unning, and managing Linux con aine s on Red Ha En e p ise Linux
8, Red Ha , 8 de ma . de 2022, pág. 10. [En línea]. Disponible en: h ps://access.
edha .com/documen a ion/en-us/ ed_ha _en e p ise_linux/8/pd /building_
unning_and_managing_con aine s/ ed_ha _en e p ise_linux-8-building_
unning_and_managing_con aine s-en-us.pd .
[57] “Wha is k ?”, Red Ha , 23 de jun. de 2021. [En línea]. Disponible en: h ps:
//www. edha .com/es/ opics/con aine s/wha -is- k [Accedido: 13-03-2022].
[58] k . “Ending and a chi ing he k p ojec ”, eposi o io de Gi Hub, 5 de eb. de
2020. [En línea]. Disponible en: h ps://gi hub.com/ k / k /issues/4024 [Accedi-
do: 13-03-2022].
81
Índice de ablas
3.1. Compa a i a en e hipe iso es de ipo 2 . . . . . . . . . . . . . . . . . . 36
3.2. Compa a i a en e dis ibuciones Linux . . . . . . . . . . . . . . . . . . . 39
5.1. Compa a i a del espacio u ilizado . . . . . . . . . . . . . . . . . . . . . . 67
5.2. Compa a i a de iempos de c eación del en o no . . . . . . . . . . . . . . 69
5.3. Compa a i a del uso de CPU, memo ia y en ada/salida . . . . . . . . . 70
88

Apéndice A
Código de la e sión p elimina de la
he amien a de despliegue
#!/bin/sh
un_con aine () {
docke con aine un
--name "$nomb e"
--hos name "$nomb e"
-d -i --cap-add=NET_ADMIN
--ini
--en DISPLAY
--en XAUTHORITY=/cookie
--moun ype=bind,sou ce="$(pwd)", a ge =/mn /sha ed
--moun ype=bind,sou ce=/ mp/.X11-unix, a ge =/ mp/.X11-unix
--moun ype=bind,sou ce="${Cookie ile}", a ge =/cookie
--label backg ound="$backg ound"
"$imagen"
}
c ea _cookie() {
i [ ! -d ~/.cookies ]; hen
mkdi ~/.cookies
i
Cookie ile=~/.cookies/"$nomb e"_cookie
:> "$Cookie ile"
xau h - "$Cookie ile"gene a e "$DISPLAY". un us ed imeou 3600
Cookie="$(xau h - "$Cookie ile"nlis "$DISPLAY"| sed -e
's/^..../ /')"
echo "$Cookie"| xau h - "$Cookie ile"nme ge -
}
c ea _ e minal() {
89
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
p ime _nomb e=$1
shi
i s =1
o nomb e; do
i ["$ i s "=1]; hen se --; i s =0; i
se -- "$@"-- ab -e "ash -c 'docke con aine a ach $nomb e;
exec ash'"
done
x ce4- e minal -e "ash -c 'docke con aine a ach $p ime _nomb e;
exec ash'" "$@"
}
e o () {
echo "$*"1>&2
exi 1
}
uso() {
echo "Uso: $0 <-c iche o | -l nomb e_p ac ica | -i nomb e_p ac ica
| -p nomb e_p ac ica | - nomb e_p ac ica | -h>"
echo ""
echo "-c: C ea el en o no de con enedo es a pa i del iche o YAML
p opo cionado (se des uyen los con enedo es asociados al en o no
del iche o)"
echo "-l: Ejecu a odos los con enedo es asociados al en o no
p opo cionado"
echo "-i: Mues a la in o mación de odos los con enedo es asociados
al en o no p opo cionado"
echo "-p: De iene odos los con enedo es asociados al en o no
p opo cionado"
echo "- : Des uye odos los con enedo es asociados al en o no
p opo cionado"
echo "-h: Mues a es e mensaje de ayuda"
}
abo a _c eacion() {
des ui _en o no > /de /null 2>&1
e o "$1"
}
mos a _in o macion_con enedo () {
_nomb e="$1"
_imagen=$(docke inspec -- o ma ='{{.Con ig.Image}}' "$_nomb e")
_backg ound=$(docke inspec
-- o ma ='{{.Con ig.Labels.backg ound}}' "$_nomb e")
echo "Nomb e del con enedo : $_nomb e"
90
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
echo "Imagen: $_imagen"
echo "Backg ound: $_backg ound"
o _ ed in $(docke inspec -- o ma ='{{ ange $key, $ alue :=
.Ne wo kSe ings.Ne wo ks}}{{ p in ln $key}}{{end}}' $_nomb e | sed
'/^$/d');do
_ip=$(docke con aine inspec - '{{ (index
.Ne wo kSe ings.Ne wo ks "'"$_ ed"'").IPAdd ess }}' $_nomb e)
echo "Red: $_ ed IP: $_ip"
done
echo ""
}
des ui _en o no() {
i ["$(docke ps -aq - name="$nomb e_p ac ica")"]; hen
echo "Eliminando los con enedo es y edes de
$nomb e_p ac ica..."
docke con aine m - $(docke ps -a -- il e
name="$nomb e_p ac ica"-- o ma '{{.Names}}')> /de /null ||
e o "No se ha podido bo a el en o no $nomb e_p ac ica"
i ["$(docke ne wo k ls -q -- il e name="$nomb e_p ac ica")"
]; hen
docke ne wo k m $(docke ne wo k ls -q -- il e
name="$nomb e_p ac ica")> /de /null || e o "No se ha
podido bo a el en o no $nomb e_p ac ica"
i
echo "Con enedo es y edes eliminados exi osamen e"
else
echo "No exis en con enedo es asociados a $nomb e_p ac ica"
i
}
lanza _en o no() {
i ["$(docke ps -aq - name="$nomb e_p ac ica")"]; hen
echo "Lanzando de nue o los con enedo es de $nomb e_p ac ica..."
lis aCon enedo esTe minal=""
o nomb e in $(docke ps -a -- il e name="$nomb e_p ac ica"
-- o ma '{{.Names}}');do
docke con aine s a "$nomb e"> /de /null || e o "No se
ha podido lanza el con enedo $nomb e"
i ["$(docke inspec - '{{.Con ig.Labels.backg ound}}'
"$nomb e")"=" alse" ]; hen
i [ -z "$lis aCon enedo esTe minal"]; hen
lis aCon enedo esTe minal="$nomb e"
else
lis aCon enedo esTe mi-
nal="$lis aCon enedo esTe minal
$nomb e"
91
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
i
i
mos a _in o macion_con enedo "$nomb e"
done
c ea _ e minal $lis aCon enedo esTe minal
echo "Con enedo es lanzados exi osamen e"
else
echo "No exis en con enedo es asociados a $nomb e_p ac ica"
i
}
pa a _en o no() {
i ["$(docke ps -aq - name="$nomb e_p ac ica")"]; hen
echo "De eniendo los con enedo es de $nomb e_p ac ica..."
docke con aine s op $(docke ps -a -- il e
name="$nomb e_p ac ica"-- o ma '{{.Names}}')> /de /null ||
e o "No se ha podido pa a el en o no $nomb e_p ac ica"
echo "Con enedo es de enidos exi osamen e"
else
echo "No exis en con enedo es asociados a $nomb e_p ac ica"
i
}
inspecciona _en o no() {
i ["$(docke ps -aq - name="$nomb e_p ac ica")"]; hen
echo "In o mación de los con enedo es de $nomb e_p ac ica"
docke con aine inspec $(docke ps -a -- il e
name="$nomb e_p ac ica"-- o ma '{{.Names}}')|| e o "No se
ha podido pa a el en o no $nomb e_p ac ica"
else
echo "No exis en con enedo es asociados a $nomb e_p ac ica"
i
}
c ea _en o no() {
nomb e_p ac ica=$(yq e '.nomb e_p ac ica' "$ iche o")
i ["$nomb e_p ac ica"="null" ]; hen
e o "Se debe especi ica el campo nomb e_p ac ica en el
iche o"
i
# Si ya exis en con enedo es asociados a la p ác ica, se des uyen
p e iamen e
i ["$(docke ps -aq - name="$nomb e_p ac ica")"]; hen
92
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
des ui _en o no
echo "" # Se imp ime es a línea acía pa a deja más boni a la
salida
i
nume o_con enedo es=$(yq e '.con enedo es | leng h' "$ iche o")
i ["$nume o_con enedo es"=0]; hen
e o "Se deben especi ica los con enedo es deseados en el
campo con enedo es del iche o"
i
# P ime o se c ean odos los con enedo es
i=0
lis aCon enedo esTe minal=""
while [ $i -l "$nume o_con enedo es"]
do
nomb e_con enedo =$(yq e '.con enedo es['"$i"'].nomb e'
"$ iche o")
i ["$nomb e_con enedo "="null" ]; hen
abo a _c eacion "Se debe especi ica el campo nomb e en
con enedo es[$i]"
i
# Se conca ena el nomb e de la p ac ica con el nomb e del
con enedo pa a pode hace ope aciones asociadas a en o nos de
p ác icas
nomb e="${nomb e_p ac ica}_${nomb e_con enedo }"
imagen=$(yq e '.con enedo es['"$i"'].imagen' "$ iche o")
i ["$imagen"="null" ]; hen
abo a _c eacion "Se debe especi ica el campo imagen en
con enedo es[$i]"
i
backg ound=$(yq e '.con enedo es['"$i"'].backg ound' "$ iche o")
i ["$backg ound"!= ue ]; hen
backg ound= alse
i [ -z "$lis aCon enedo esTe minal"]; hen
lis aCon enedo esTe minal="$nomb e"
else
lis aCon enedo esTe minal="$lis aCon enedo esTe minal
$nomb e"
i
i
# Se c ea la cookie de X11 pa a usa aplicaciones con GUI
c ea _cookie || abo a _c eacion "E o al c ea la cookie pa a
$nomb e"
93

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
# Se c ea el con enedo y se le desconec a del adap ado b idge
un_con aine > /de /null || abo a _c eacion "E o en la
c eación del con enedo $nomb e"
docke ne wo k disconnec b idge "$nomb e"|| abo a _c eacion
"E o en la c eación del con enedo $nomb e"
nume o_ edes=$(yq e '.con enedo es['"$i"']. edes | leng h'
"$ iche o")
i ["$nume o_ edes"=0]; hen
abo a _c eacion "Se debe especi ica el campo edes en
con enedo es[$i]"
i
j=0
while [ $j -l "$nume o_ edes"]
do
ed_ iche o=$(yq e
'.con enedo es['"$i"']. edes['"$j"'].nomb e' "$ iche o")
i ["$ ed_ iche o"="null" ]; hen
abo a _c eacion "Se debe especi ica el campo nomb e en
con enedo es[$i]. edes[$j]"
i
ed="${nomb e_p ac ica}_ ed_${ ed_ iche o}"
ip=$(yq e '.con enedo es['"$i"']. edes['"$j"'].ip'
"$ iche o")
i ["$ip"="null" ]; hen
subne _op ion=""
ip_op ion=""
else
# Comp ueba que la IP in oducida es é en o ma o CIDR
álido
i ["$(ipcalc -s -n "$ip")"]; hen
di eccion_ ed="$(ipcalc -n "$ip"| sed
's/NETWORK=//')"
p e ijo="$(ipcalc -p "$ip"| sed 's/PREFIX=//')"
subne _op ion="--subne =$di eccion_ ed/$p e ijo"
ip=$(echo "$ip"| sed 's/ /[0-9]*//')
ip_op ion="--ip $ip"
else
abo a _c eacion "Debe p opo ciona una IP álida en
.con enedo es[$i]. edes[$j]"
i
i
94
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
# Solo se c ea la ed si no exis e p e iamen e
docke ne wo k inspec "$ ed"> /de /null 2>&1|| docke
ne wo k c ea e $subne _op ion "$ ed"> /de /null ||
abo a _c eacion "No se ha podido c ea la ed $ ed"
docke ne wo k connec $ip_op ion "$ ed" "$nomb e"||
abo a _c eacion "No se ha podido conec a el con enedo
$nomb e"
j=$((j+1))
done
mos a _in o macion_con enedo "$nomb e"
i=$((i+1))
done
# Si odos los con enedo es se han c eado exi osamen e, se ab en las
e minales
i [ -n "$lis aCon enedo esTe minal"]; hen
c ea _ e minal $lis aCon enedo esTe minal
i
echo "Con enedo es c eados exi osamen e"
}
i [ ! "$(which yq)"]; hen
e o "yq debe es a ins alado en el sis ema pa a u iliza es e
sc ip "
i
i [ ! "$(which xau h)"]; hen
e o "xau h debe es a ins alado en el sis ema pa a u iliza es e
sc ip "
i
i [ ! "$(which docke )"]; hen
e o "docke debe es a ins alado en el sis ema pa a u iliza es e
sc ip "
i
# Con ola que el comando se ejecu e solo con un lag
opcion= alse
while ge op s ":c:l: :p:i:h" o; do
case "${o}" in
c)
95
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h>"
iche o=${OPTARG}
i [ ! - "$ iche o"]; hen
e o "El iche o $ iche o no exis e"
i
comando="c ea "
opcion= ue
;;
l)
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h>"
nomb e_p ac ica=${OPTARG}
i [ -z "$nomb e_p ac ica"]; hen
e o "Se debe p opo ciona el alo nomb e_p ac ica"
i
comando="lanza "
opcion= ue
;;
)
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h>"
nomb e_p ac ica=${OPTARG}
i [ -z "$nomb e_p ac ica"]; hen
e o "Se debe p opo ciona el alo nomb e_p ac ica"
i
comando="des ui "
opcion= ue
;;
p)
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h>"
nomb e_p ac ica=${OPTARG}
i [ -z "$nomb e_p ac ica"]; hen
e o "Se debe p opo ciona el alo nomb e_p ac ica"
i
comando="pa a "
opcion= ue
;;
i)
96
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h|>"
nomb e_p ac ica=${OPTARG}
i [ -z "$nomb e_p ac ica"]; hen
e o "Se debe p opo ciona el alo nomb e_p ac ica"
i
comando="inspecciona "
opcion= ue
;;
h)
$opcion && e o "Solo se puede especi ica una opción
<-c|-l|- |-p|-i|-h>"
uso
exi 0
;;
*)
echo "Opción ${o} no álida"
uso
exi 1
;;
esac
done
shi $((OPTIND-1))
# Qui amos la ex ensión en caso de que exis a
i [ -n "$nomb e_p ac ica"]; hen
nomb e_p ac ica=${nomb e_p ac ica%.*}
i
case "$comando"in
c ea )
c ea _en o no && exi
;;
lanza )
lanza _en o no && exi
;;
des ui )
des ui _en o no && exi
;;
pa a )
pa a _en o no && exi
;;
inspecciona )
inspecciona _en o no && exi
97
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[INFO] 3.14 - Ensu e ha he Docke se e ce i ica e key ile
pe missions a e se o 400 (Au oma ed)
[INFO] * No TLS Key ound
[PASS] 3.15 - Ensu e ha he Docke socke ile owne ship is se o
oo :docke (Au oma ed)
[PASS] 3.16 - Ensu e ha he Docke socke ile pe missions a e se o
660 o mo e es ic i ely (Au oma ed)
[INFO] 3.17 - Ensu e ha he daemon.json ile owne ship is se o
oo : oo (Au oma ed)
[INFO] * File no ound
[INFO] 3.18 - Ensu e ha daemon.json ile pe missions a e se o 644 o
mo e es ic i e (Au oma ed)
[INFO] * File no ound
[INFO] 3.19 - Ensu e ha he /e c/de aul /docke ile owne ship is se
o oo : oo (Au oma ed)
[INFO] * File no ound
[INFO] 3.20 - Ensu e ha he /e c/syscon ig/docke ile pe missions a e
se o 644 o mo e es ic i ely (Au oma ed)
[INFO] * File no ound
[INFO] 3.21 - Ensu e ha he /e c/syscon ig/docke ile owne ship is
se o oo : oo (Au oma ed)
[INFO] * File no ound
[INFO] 3.22 - Ensu e ha he /e c/de aul /docke ile pe missions a e
se o 644 o mo e es ic i ely (Au oma ed)
[INFO] * File no ound
[INFO] 3.23 - Ensu e ha he Con aine d socke ile owne ship is se o
oo : oo (Au oma ed)
[INFO] * File no ound
[INFO] 3.24 - Ensu e ha he Con aine d socke ile pe missions a e se
o 660 o mo e es ic i ely (Au oma ed)
[INFO] * File no ound
[INFO] 4 - Con aine Images and Build File
[PASS] 4.1 - Ensu e ha a use o he con aine has been c ea ed
(Au oma ed)
[NOTE] 4.2 - Ensu e ha con aine s use only us ed base images
(Manual)
[NOTE] 4.3 - Ensu e ha unnecessa y packages a e no ins alled in he
con aine (Manual)
[NOTE] 4.4 - Ensu e images a e scanned and ebuil o include secu i y
pa ches (Manual)
[WARN] 4.5 - Ensu e Con en us o Docke is Enabled (Au oma ed)
[WARN] 4.6 - Ensu e ha HEALTHCHECK ins uc ions ha e been added o
con aine images (Au oma ed)
[WARN] * No Heal hcheck ound: [ ys:la es ]
[INFO] 4.7 - Ensu e upda e ins uc ions a e no used alone in he
Docke ile (Manual)
104

Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[INFO] * Upda e ins uc ion ound: [ ys:la es ]
[NOTE] 4.8 - Ensu e se uid and se gid pe missions a e emo ed (Manual)
[PASS] 4.9 - Ensu e ha COPY is used ins ead o ADD in Docke iles
(Manual)
[NOTE] 4.10 - Ensu e sec e s a e no s o ed in Docke iles (Manual)
[NOTE] 4.11 - Ensu e only e i ied packages a e ins alled (Manual)
[NOTE] 4.12 - Ensu e all signed a i ac s a e alida ed (Manual)
[INFO] 5 - Con aine Run ime
[WARN] 5.1 - Ensu e ha , i applicable, an AppA mo P o ile is enabled
(Au oma ed)
[WARN] * No AppA mo P o ile Found: p ac ica0_ ou e 2
[WARN] * No AppA mo P o ile Found: p ac ica0_hos 2
[WARN] * No AppA mo P o ile Found: p ac ica0_ ou e 1
[WARN] * No AppA mo P o ile Found: p ac ica0_hos 1
[WARN] * No AppA mo P o ile Found: p ac ica0_se ido
[WARN] 5.2 - Ensu e ha , i applicable, SELinux secu i y op ions a e
se (Au oma ed)
[WARN] * No Secu i yOp ions Found: p ac ica0_ ou e 2
[WARN] * No Secu i yOp ions Found: p ac ica0_hos 2
[WARN] * No Secu i yOp ions Found: p ac ica0_ ou e 1
[WARN] * No Secu i yOp ions Found: p ac ica0_hos 1
[WARN] * No Secu i yOp ions Found: p ac ica0_se ido
[WARN] 5.3 - Ensu e ha Linux ke nel capabili ies a e es ic ed wi hin
con aine s (Au oma ed)
[WARN] * Capabili ies added: CapAdd=[NET_ADMIN] o
p ac ica0_ ou e 2
[WARN] * Capabili ies added: CapAdd=[NET_ADMIN] o p ac ica0_hos 2
[WARN] * Capabili ies added: CapAdd=[NET_ADMIN] o
p ac ica0_ ou e 1
[WARN] * Capabili ies added: CapAdd=[NET_ADMIN] o p ac ica0_hos 1
[WARN] * Capabili ies added: CapAdd=[NET_ADMIN] o
p ac ica0_se ido
[PASS] 5.4 - Ensu e ha p i ileged con aine s a e no used (Au oma ed)
[PASS] 5.5 - Ensu e sensi i e hos sys em di ec o ies a e no moun ed on
con aine s (Au oma ed)
[PASS] 5.6 - Ensu e sshd is no un wi hin con aine s (Au oma ed)
[PASS] 5.7 - Ensu e p i ileged po s a e no mapped wi hin con aine s
(Au oma ed)
[PASS] 5.8 - Ensu e ha only needed po s a e open on he con aine
(Manual)
[PASS] 5.9 - Ensu e ha he hos 's ne wo k namespace is no sha ed
(Au oma ed)
[WARN] 5.10 - Ensu e ha he memo y usage o con aine s is limi ed
(Au oma ed)
[WARN] * Con aine unning wi hou memo y es ic ions:
p ac ica0_ ou e 2
105
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[WARN] * Con aine unning wi hou memo y es ic ions:
p ac ica0_hos 2
[WARN] * Con aine unning wi hou memo y es ic ions:
p ac ica0_ ou e 1
[WARN] * Con aine unning wi hou memo y es ic ions:
p ac ica0_hos 1
[WARN] * Con aine unning wi hou memo y es ic ions:
p ac ica0_se ido
[WARN] 5.11 - Ensu e ha CPU p io i y is se app op ia ely on
con aine s (Au oma ed)
[WARN] * Con aine unning wi hou CPU es ic ions:
p ac ica0_ ou e 2
[WARN] * Con aine unning wi hou CPU es ic ions:
p ac ica0_hos 2
[WARN] * Con aine unning wi hou CPU es ic ions:
p ac ica0_ ou e 1
[WARN] * Con aine unning wi hou CPU es ic ions:
p ac ica0_hos 1
[WARN] * Con aine unning wi hou CPU es ic ions:
p ac ica0_se ido
[WARN] 5.12 - Ensu e ha he con aine 's oo ilesys em is moun ed as
ead only (Au oma ed)
[WARN] * Con aine unning wi h oo FS moun ed R/W:
p ac ica0_ ou e 2
[WARN] * Con aine unning wi h oo FS moun ed R/W:
p ac ica0_hos 2
[WARN] * Con aine unning wi h oo FS moun ed R/W:
p ac ica0_ ou e 1
[WARN] * Con aine unning wi h oo FS moun ed R/W:
p ac ica0_hos 1
[WARN] * Con aine unning wi h oo FS moun ed R/W:
p ac ica0_se ido
[PASS] 5.13 - Ensu e ha incoming con aine a ic is bound o a
speci ic hos in e ace (Au oma ed)
[WARN] 5.14 - Ensu e ha he 'on- ailu e' con aine es a policy is
se o '5' (Au oma ed)
[WARN] * MaximumRe yCoun is no se o 5: p ac ica0_ ou e 2
[WARN] * MaximumRe yCoun is no se o 5: p ac ica0_hos 2
[WARN] * MaximumRe yCoun is no se o 5: p ac ica0_ ou e 1
[WARN] * MaximumRe yCoun is no se o 5: p ac ica0_hos 1
[WARN] * MaximumRe yCoun is no se o 5: p ac ica0_se ido
[PASS] 5.15 - Ensu e ha he hos 's p ocess namespace is no sha ed
(Au oma ed)
[PASS] 5.16 - Ensu e ha he hos 's IPC namespace is no sha ed
(Au oma ed)
[PASS] 5.17 - Ensu e ha hos de ices a e no di ec ly exposed o
con aine s (Manual)
106
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[INFO] 5.18 - Ensu e ha he de aul ulimi is o e w i en a un ime
i needed (Manual)
[INFO] * Con aine no de aul ulimi o e ide: p ac ica0_ ou e 2
[INFO] * Con aine no de aul ulimi o e ide: p ac ica0_hos 2
[INFO] * Con aine no de aul ulimi o e ide: p ac ica0_ ou e 1
[INFO] * Con aine no de aul ulimi o e ide: p ac ica0_hos 1
[INFO] * Con aine no de aul ulimi o e ide: p ac ica0_se ido
[PASS] 5.19 - Ensu e moun p opaga ion mode is no se o sha ed
(Au oma ed)
[PASS] 5.20 - Ensu e ha he hos 's UTS namespace is no sha ed
(Au oma ed)
[PASS] 5.21 - Ensu e he de aul seccomp p o ile is no Disabled
(Au oma ed)
[NOTE] 5.22 - Ensu e ha docke exec commands a e no used wi h he
p i ileged op ion (Au oma ed)
[NOTE] 5.23 - Ensu e ha docke exec commands a e no used wi h he
use = oo op ion (Manual)
[PASS] 5.24 - Ensu e ha cg oup usage is con i med (Au oma ed)
[WARN] 5.25 - Ensu e ha he con aine is es ic ed om acqui ing
addi ional p i ileges (Au oma ed)
[WARN] * P i ileges no es ic ed: p ac ica0_ ou e 2
[WARN] * P i ileges no es ic ed: p ac ica0_hos 2
[WARN] * P i ileges no es ic ed: p ac ica0_ ou e 1
[WARN] * P i ileges no es ic ed: p ac ica0_hos 1
[WARN] * P i ileges no es ic ed: p ac ica0_se ido
[WARN] 5.26 - Ensu e ha con aine heal h is checked a un ime
(Au oma ed)
[WARN] * Heal h check no se : p ac ica0_ ou e 2
[WARN] * Heal h check no se : p ac ica0_hos 2
[WARN] * Heal h check no se : p ac ica0_ ou e 1
[WARN] * Heal h check no se : p ac ica0_hos 1
[WARN] * Heal h check no se : p ac ica0_se ido
[INFO] 5.27 - Ensu e ha Docke commands always make use o he la es
e sion o hei image (Manual)
[WARN] 5.28 - Ensu e ha he PIDs cg oup limi is used (Au oma ed)
[WARN] * PIDs limi no se : p ac ica0_ ou e 2
[WARN] * PIDs limi no se : p ac ica0_hos 2
[WARN] * PIDs limi no se : p ac ica0_ ou e 1
[WARN] * PIDs limi no se : p ac ica0_hos 1
[WARN] * PIDs limi no se : p ac ica0_se ido
[PASS] 5.29 - Ensu e ha Docke 's de aul b idge 'docke 0' is no used
(Manual)
[PASS] 5.30 - Ensu e ha he hos 's use namespaces a e no sha ed
(Au oma ed)
[PASS] 5.31 - Ensu e ha he Docke socke is no moun ed inside any
con aine s (Au oma ed)
107
Implemen ación de un labo a o io median e con enedo es Ma io Román Dono
[INFO] 6 - Docke Secu i y Ope a ions
[INFO] 6.1 - Ensu e ha image sp awl is a oided (Manual)
[INFO] * The e a e cu en ly: 1 images
[INFO] 6.2 - Ensu e ha con aine sp awl is a oided (Manual)
[INFO] * The e a e cu en ly a o al o 5 con aine s, wi h 5 o
hem cu en ly unning
[INFO] 7 - Docke Swa m Con igu a ion
[PASS] 7.1 - Ensu e swa m mode is no Enabled, i no needed (Au oma ed)
[PASS] 7.2 - Ensu e ha he minimum numbe o manage nodes ha e been
c ea ed in a swa m (Au oma ed) (Swa m mode no enabled)
[PASS] 7.3 - Ensu e ha swa m se ices a e bound o a speci ic hos
in e ace (Au oma ed) (Swa m mode no enabled)
[PASS] 7.4 - Ensu e ha all Docke swa m o e lay ne wo ks a e enc yp ed
(Au oma ed)
[PASS] 7.5 - Ensu e ha Docke 's sec e managemen commands a e used
o managing sec e s in a swa m clus e (Manual) (Swa m mode no
enabled)
[PASS] 7.6 - Ensu e ha swa m manage is un in au o-lock mode
(Au oma ed) (Swa m mode no enabled)
[PASS] 7.7 - Ensu e ha he swa m manage au o-lock key is o a ed
pe iodically (Manual) (Swa m mode no enabled)
[PASS] 7.8 - Ensu e ha node ce i ica es a e o a ed as app op ia e
(Manual) (Swa m mode no enabled)
[PASS] 7.9 - Ensu e ha CA ce i ica es a e o a ed as app op ia e
(Manual) (Swa m mode no enabled)
[PASS] 7.10 - Ensu e ha managemen plane a ic is sepa a ed om
da a plane a ic (Manual) (Swa m mode no enabled)
Sec ion C - Sco e
[INFO] Checks: 117
[INFO] Sco e: 1
108
Ma io Román Dono
2021 - 2022
Ul . ac ualización 30 de mayo de 2022
L
A
T
EX lic. LPPL & powe ed by T
EF
L
O
NCC-ZERO
Es a ob a es á bajo una licencia C ea i e Commons
“Reconocimien o-NoComme cial-Compa i Igual 4.0 In e -
nacional”.