Post

Repositorio local para RedHat

Repositorio local para RedHat

Vamos a crear un servidor para tener nuestros repositorios local, nos permitirá ser mas ágiles para parchear y descargar actualizaciones, y mas cosas….

Nos suscribimos a red hat en el servidor que usaremos como repositorio:

1
2
subscription-manager clean
subscription-manager attach

Ponemos en el proxy (si tenemos alguno) en la config para llegar a redhat:

1
2
/etc/rhsm/rhsm.conf
vi /etc/yum.conf
1
2
3
proxy=http://proxy.MIDOMINIO.COM:9090
proxy_username=USUARIO
proxy_password=PASSWORD

Luego instalamos estos paquets:

1
yum install yum-utils createrepo httpd

Si tenemos algun firewall, abrimos puertos:

1
2
3
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

Creamos los repositorios:

RHEL7:

1
2
3
4
5
reposync -g -l -d -m --repoid=rhel-7-server-extras-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-7-server-optional-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-7-server-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/ 
reposync -g -l -d -m --repoid=rhel-7-server-supplementary-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-server-rhscl-7-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/

RHEL6:

1
2
3
4
5
reposync -g -l -d -m --repoid=rhel-6-server-extras-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-6-server-optional-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-6-server-rh-common-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-6-server-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/
reposync -g -l -d -m --repoid=rhel-6-server-supplementary-rpms --newest-only --download-metadata --download_path=/ruta/www/repos/

Crear Fichero con Metadatos:

RHEL7:

1
2
3
4
5
6
createrepo  /ruta/www/repos/rhel-7-server-extras-rpms/ 
createrepo  /ruta/www/repos/rhel-7-server-optional-rpms/ 
createrepo  /ruta/www/repos/rhel-7-server-rpms/
createrepo  /ruta/www/repos/rhel-7-server-supplementary-rpms/
createrepo  /ruta/www/repos/rhel-server-rhscl-7-rpms/
createrepo  /ruta/www/repos/rhel-secs/ -g comps.xml

RHEL6:

1
2
3
4
5
6
createrepo  /ruta/www/repos/rhel-6-server-extras-rpms/
createrepo  /ruta/www/repos/rhel-6-server-optional-rpms/
createrepo  /ruta/www/repos/rhel-6-server-rh-common-rpms/
createrepo  /ruta/www/repos/rhel-6-server-rpms/
createrepo  /ruta/www/repos/rhel-6-server-supplementary-rpms/
createrepo  /ruta/www/repos/rhel-secs/

Para actualizar los repositorios:

RHEL7:

1
2
3
4
5
6
createrepo --update /ruta/www/repos/rhel-7-server-extras-rpms/ 
createrepo --update /ruta/www/repos/rhel-7-server-optional-rpms/ 
createrepo --update /ruta/www/repos/rhel-7-server-rpms/
createrepo --update /ruta/www/repos/rhel-7-server-supplementary-rpms
createrepo --update /ruta/www/repos/rhel-server-rhscl-7-rpms/
createrepo --update /ruta/www/repos/rhel-secs/

RHEL6:

1
2
3
4
5
6
createrepo --update /ruta/www/repos/rhel-6-server-extras-rpms/
createrepo --update /ruta/www/repos/rhel-6-server-optional-rpms/
createrepo --update /ruta/www/repos/rhel-6-server-rh-common-rpms/
createrepo --update /ruta/www/repos/rhel-6-server-rpms/
createrepo --update /ruta/www/repos/rhel-6-server-supplementary-rpms/
createrepo --update /ruta/www/repos/rhel-secs/

Ya tenemos un servidor con los repos de redhat en nuestra infrastructura local, ahora vamos a decirle a los clientes que lo usen para actualizar sus repos:

En los clientes RHEL7:

1
2
subscription-manager clean
subscription-manager config --server.hostname=rhel7-repos-locales.MIDOMINIO.COM
1
2
vi /etc/rhsm/rhsm.conf
baseurl = https://rhel7-repos-locales.MIDOMINIO.COM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
vi /etc/yum.repos.d/redhat7_local.repo

[rhel-7-server-extras-rpms]
name=RHEL7 extras
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-7-server-extras-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-7-server-optional-rpms]
name=RHEL7 optional
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-7-server-optional-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-7-server-rpms]
name=RHEL7 server
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-7-server-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-7-server-supplementary-rpms]
name=RHEL7 supplementary
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-7-server-supplementary-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-server-rhscl-7-rpms]
name=RHEL7 supplementary
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-server-rhscl-7-rpms/
gpgcheck=0
sslverify=0
enabled=1


[rhel-secs]
name=RHEL7 sec
baseurl=https://rhel7-repos-locales.MIDOMINIO.COM/rhel-secs/
gpgcheck=0
sslverify=0
enabled=1

En los clientes RHEL6:

1
2
subscription-manager clean
subscription-manager config --server.hostname=rhelrepos6x64.MIDOMINIO.COM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
vi /etc/yum.repos.d/redhat6_local.repo


[rhel-6-server-extras-rpms]
name=RHEL6 extras
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-6-server-extras-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-6-server-optional-rpms]
name=RHEL6 optional
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-6-server-optional-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-6-server-rh-common-rpms]
name=RHEL6 server
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-6-server-rh-common-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-6-server-rpms]
name=RHEL6 supplementary
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-6-server-rpms/
gpgcheck=0
sslverify=0
enabled=1

[rhel-6-server-supplementary-rpms]
name=RHEL6 supplementary
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-6-server-supplementary-rpms/
gpgcheck=0
sslverify=0
enabled=1


[rhel-secs]
name=RHEL6 sec
baseurl=https://rhelrepos6x64.MIDOMINIO.COM/rhel-secs/
gpgcheck=0
sslverify=0
enabled=1

Respositorios de seguridad

En la maquina servidor:

1
2
3
4
5
6
7
8
9
10
11
12
13
yum -y install yum-plugin-security
yum updateinfo list available
yum list-sec 
yum updateinfo list sec    - solo muestra las RHSA- que falten parchear en la maquina
yum updateinfo list cves   - solo muestra las CVES- que falten parchear en la maquina.
yum updateinfo list security all
yum updateinfo list security all |grep -v "i"  - muestra lo que falta por updatar de seguridad
yum --security check-update
yum update --downloadonly --security --downloaddir=/ruta/prova
yum info-sec
yum updateinfo RHSA-2019:0163
yum updateinfo list bugfix - solo muestra las RHBA- que falen parchear en la maquina
yum updateinfo summary

Comandos útiles para updatear securizando:

Instalar seguridad mas todas las erratas:

1
yum update --security 

Solo seguridad:

1
yum update-minimal --security 

Instalar por cve:

1
yum update --cve CVE-2008-0947

Instalar por erratas:

1
yum update --advisory=RHBA-2018:0739

Ver los RSHA instalados:

1
yum updateinfo list security installed

Ver diferentes versiones disponibles

1
yum --showduplicates list 

Revisar esta url si deja de funcionar:

https://access.redhat.com/solutions/23016#security

Info sobre que es cada errata:

1
2
3
4
5
6
7
8
https://access.redhat.com/articles/2130961
Red Hat Security Advisory (RHSA): Actualizaciones de seguridad, pueden contener bugfixes o enancements.
Red Hat Bug Advisory (RHBA): Bugfixes y pueden contener enancements, pero nunca pueden contener fixes de seguridad.
Red Hat Enhancement Advisory (RHEA): Enancements o new features, pero nunca contienenen bugfixes o security fixes. SI un paquete es actualizado con una nueva funcionalidad aparece aqui.

1 mes critical
3 meses high
5 meses moderate

Ver paquetes instalados

1
2
rpm -qa --last
yum list installed

Para ver si estamos afectados por una vulnerabilidad, primero buscamos el paquet en el repo para ver su nombre:

1
yum search all SDL-

luego lo buscamos, y si no machea, es que no es necesario hacer nada:

1
rpm -qa --last|grep -i sdl

Creamos el directorio donde alojaremos los paquetes de seguridad:

Luego copiamos el *updateinfo.xml.gz del cache de yum al directorio que aloja los repos:

1
2
3
4
5
6
7
8
9
10
11
12
cp /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/*updateinfo.xml.gz /ruta/www/repos/rhel-secs/repodata
gzip -d /ruta/www/repos/rhel-secs/repodata/*-updateinfo.xml.gz 
mv *-updateinfo.xml /ruta/www/repos/rhel-secs/repodata/updateinfo.xml
cp /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/repomd.xml /ruta/www/repos/rhel-secs/repodata/
modifyrepo /ruta/www/repos/rhel-secs/repodata/updateinfo.xml /ruta/www/repos/rhel-secs/repodata/
createrepo /ruta/www/repos/rhel-secs/

cp /var/cache/yum/x86_64/6Server/rhel-6-server-rpms/*updateinfo.xml.gz /ruta/www/repos/rhel-secs/repodata/
gzip -d /ruta/www/repos/rhel-secs/repodata/*-updateinfo.xml.gz
mv *-updateinfo.xml /ruta/www/repos/rhel-secs/repodata/updateinfo.xml
cp /var/cache/yum/x86_64/6Server/rhel-6-server-rpms/repodata/repomd.xml /ruta/www/repos/rhel-secs/repodata/
modifyrepo /ruta/www/repos/rhel-secs/repodata/updateinfo.xml /ruta/www/repos/rhel-secs/repodata/

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

1
2
3
4
5
6
7
find /var/cache/yum/ -name updateinfo.xml

cp -f /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/gen/updateinfo.xml /ruta/www/repos/rhel-secs/repodata/updateinfo.xml
cp -f /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/repomd.xml /ruta/www/repos/rhel-secs/repodata/
cp -f /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/*-primary.sqlite.bz2 /ruta/www/repos/rhel-secs/repodata/
cp -f /var/cache/yum/x86_64/7Server/rhel-7-server-rpms/*-comps.xml /ruta/www/repos/rhel-secs/repodata/
modifyrepo /ruta/www/repos/rhel-secs/repodata/updateinfo.xml /ruta/www/repos/rhel-secs/repodata/

Bonus

Script para automatizarlo.

Dejo un esqueleto de script en nsh, que nos puede ayudar a empezar las tareas de automatización de updates de seguridad.

1
2
3
4
5
6
7
#!/usr/bin/nsh
for i in `cat /tools/scripts/host_list`
do
echo $i
#nexec $i uname -a
nexec $i yum updateinfo list cves > /tools/scripts/reports/$i
done

Cajón desastre:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi /usr/lib/rsc/exports

10.0.0.1   rw,user=root
MAQUINA.MIDOMINIO.COM rw,user=root

/ruta/www/repos/rhel-dvd-7_0-rpms/


./var/tmp/createrepomGdE3M/garbageid/0b1f07d77bafde723090080278693ac38af894407ffc718dc21551c168e60d9f-filelists.sqlite.bz2
./var/tmp/createrepoPM_fSd/garbageid/44d520fa4a03fc713724f4711ce4f3e37298799e9ed60f58f5bf6a914655b62d-filelists.sqlite.bz2
./ruta/www/repos/rhel-server-rhscl-7-rpms/repodata/1ab3568eae4d289aa106994b438d321a2bbb6964dec32e8aec23b22ec3e121e0-filelists.sqlite.bz2
./ruta/www/repos/rhel-7-server-supplementary-rpms/repodata/44d520fa4a03fc713724f4711ce4f3e37298799e9ed60f58f5bf6a914655b62d-filelists.sqlite.bz2
./ruta/www/repos/rhel-7-server-rpms/repodata/0b1f07d77bafde723090080278693ac38af894407ffc718dc21551c168e60d9f-filelists.sqlite.bz2
./ruta/www/repos/rhel-7-server-extras-rpms/repodata/00d100f6401d746438aa47de14df910d9a422faa4f5dc6d1d2d7d21ec6296a02-filelists.sqlite.bz2
./ruta/www/repos/rhel-7-server-optional-rpms/repodata/8f4c9e2497da313a07307f3187aa128e5b5c1550f8f81f74ae567b5e033a6ab4-filelists.sqlite.bz2
./ruta/www/repos/rhel-secs/repodata/01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2

Bonus 2

Optimizamos la maquina virtual para operar en vmware con las vmware-tools.

1
2
3
4
5
6
 /etc/dracut.conf.d/
 in nvdimm-security.conff
 add_drivers+=" libnvdimm "
 in vmware-tools.conf
 add_drivers+=" vmxnet3 vmw_pvscsi "
  dracut -f -v

Ver si necesitamos restart:

1
needs-restarting -r
This post is licensed under CC BY 4.0 by the author.