Category Archives: Firewall

Primeras impresiones sobre RHEL-7-beta1

Salió hace pocos días, no había tenido tiempo de probarle, pero aquí van mis comentarios iniciales.

Le bajé el ISO que, a propósito es sólo 64bits, RHEL-7 no vendrá con soporte de 32 bits. Y la verdad es que, el que tenga 32bits, podrá seguir usando su hardware con la versión 6 de CentOS o RHEL hasta el 2020, suficiente tiempo pienso yo. No dudo tampoco que alguien se aloque y lance CentOS-7 para 32bits, pero eso habría que verle.

Por otro lado, la verdad es que ningún hardware que se vende para servidores (recordar que RHEL y CentOS son para servidores) ya viene con 32bits. No es que se ve un equipo de 32bits estos días como servidor muy fácilmente. De hecho ya CentOS-6 venía con el sistema de virtualización SOLO para 64bits, si tu instalabas CentOS-6 de 32bits, no ibas a virtualizar nada ahi.

Le instalé dentro de una máquina virtual de KVM. Este KVM está en CentOS-6.5, le puse 1GB de RAM, 2 procesadores y 30GB en disco.

La interfaz del instalador parece la de fedora-18 ó fedora-19 mejor dicho. Es de esa pantalla que te aparece todo ahi mismo, vas dando click en las entradas y escogiendo diversas cosas (disco de instalacion, tipo de instalación, etc) pero toda en la misma pantalla. Es algo que particularmente no me gustaba de fedora, pero bueno, le han adoptado y habrá que acostumbrarse.

De todas formas la idea sigue siendo la misma de toda la vida de RedHat: preguntarte todo lo que te tenga que preguntar al inicio. No hay nada más pesado que esos instaladores que instalan un buchito de cosas, y se detienen a preguntarte tu clave.. para luego seguir y luego de 2 minutos preguntarte el idioma, y luego de 2 más preguntarte el tipo de partición y así tenerte castigado durante todo el proceso de instalación pues tienes que responder preguntas.

En el idioma de instalación, está en Español, aunque cuando le escogí me falló 2 ó 3 veces luego durante la instalación, pero no sé si es que fallaba por el idioma o por el tipo de particionamiento que le escogí con LVM-thin-provisioning… en todo caso cuando instalé en Inglés y sin thin-provisioning me funcionó.

Por defecto te propone escoger instalación mínima, excelente!

Al finalizar de instalar, la consola de texto ya no viene con 80×25  el tamano, sino que viene con otro tipo de letra muy pequeño, me dió bastante dificultad leerle porque dentro de KVM aún más pequeño se veía todo.

Al entrar, lo primero que hice fue tratar de encontrar la IP para entrar inmediatamente por ssh porque el tipo de letra es bieeeen pesado de leer para mi. Así que puse ifconfig y.. pum.. no viene instalado! En serio.. quizá networkmanager tenga otra forma de ver las interfaces, pero todavía no le conozco. Oh sí.. proponen NetworkManager aún para instalaciones via línea de comando!

Bueno, mejor aún, no había red activada así que puse ifup eth0.. pero de todas formas el misterio de la IP persistía no?

yum provides */ifconfig

para averiguar dónde estaba.. me sale el yum conque el sistema no está registrado en la red de redhat.. caramba, es la falta de costumbre, con centos todo es más fácil eh?

así que ejecuté

subscription-manager register

Y usé mi cuenta, dice redhat que no es necesario haber tenido una cuenta, que con

subscription-manager register –autosubscribe

Te iba a autosuscribir de una.

De todas formas el yum ahora me decía que no había ningún canal activo. Yo entro en shock cuando no entiendo esas cosas.. qué es un canal? entrar al sitio de redhat a averiguar? En lo que lo abría tuve a bien editar /etc/yum.repos.d/rhel.repo y cambiar enabled=1 en el primer repo el de redhat.. y ahí sí! al fin así puse usar

yum provides */ifconfig

El paquete es: net-tools, entonces puse

yum install net-tools

Y ya! Al fin ifconfig!! ahi pude averiguar mi ip, 9 minutos. Bueno, tampoco es que andaba de apremio 😉

Veamos algunas características:

[root@localhost ~]# w
11:53:31 up 9 min,  1 user,  load average: 0.01, 0.08, 0.07
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     11:53    3.00s  0.04s  0.02s w
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo)

buen consumo de ram:

[root@localhost ~]# free -m
total       used       free     shared    buffers     cached
Mem:           994        429        564          1          1        285
-/+ buffers/cache:        142        851
Swap:         2079          0       2079

Lista de procesos:

[root@localhost ~]# ps axf
PID TTY      STAT   TIME COMMAND
2 ?        S      0:00 [kthreadd]
3 ?        S      0:00  \_ [ksoftirqd/0]
4 ?        S      0:00  \_ [kworker/0:0]
5 ?        S<     0:00  \_ [kworker/0:0H]
6 ?        S      0:00  \_ [kworker/u4:0]
7 ?        S      0:00  \_ [migration/0]
8 ?        S      0:00  \_ [rcu_bh]
9 ?        S      0:00  \_ [rcuob/0]
10 ?        S      0:00  \_ [rcuob/1]
11 ?        S      0:00  \_ [rcu_sched]
12 ?        S      0:00  \_ [rcuos/0]
13 ?        S      0:00  \_ [rcuos/1]
14 ?        S      0:00  \_ [watchdog/0]
15 ?        S      0:00  \_ [watchdog/1]
16 ?        S      0:00  \_ [migration/1]
17 ?        S      0:00  \_ [ksoftirqd/1]
19 ?        S<     0:00  \_ [kworker/1:0H]
20 ?        S<     0:00  \_ [khelper]
21 ?        S      0:00  \_ [kdevtmpfs]
22 ?        S<     0:00  \_ [netns]
23 ?        S<     0:00  \_ [writeback]
24 ?        S<     0:00  \_ [kintegrityd]
25 ?        S<     0:00  \_ [bioset]
26 ?        S<     0:00  \_ [kblockd]
27 ?        S      0:00  \_ [khubd]
28 ?        S<     0:00  \_ [md]
31 ?        S      0:00  \_ [kswapd0]
32 ?        SN     0:00  \_ [ksmd]
33 ?        SN     0:00  \_ [khugepaged]
34 ?        S      0:00  \_ [fsnotify_mark]
35 ?        S<     0:00  \_ [crypto]
44 ?        S<     0:00  \_ [kthrotld]
46 ?        S<     0:00  \_ [kmpath_rdacd]
47 ?        S      0:00  \_ [kworker/1:1]
48 ?        S<     0:00  \_ [kpsmoused]
49 ?        S<     0:00  \_ [deferwq]
50 ?        S      0:00  \_ [kworker/1:2]
55 ?        S      0:00  \_ [kauditd]
214 ?        S      0:00  \_ [kworker/0:2]
215 ?        S      0:00  \_ [kworker/u4:2]
217 ?        S<     0:00  \_ [ata_sff]
220 ?        S      0:00  \_ [scsi_eh_0]
221 ?        S      0:00  \_ [scsi_eh_1]
231 ?        S<     0:00  \_ [ttm_swap]
244 ?        S<     0:00  \_ [kworker/0:1H]
307 ?        S<     0:00  \_ [kdmflush]
308 ?        S<     0:00  \_ [bioset]
310 ?        S<     0:00  \_ [kdmflush]
311 ?        S<     0:00  \_ [bioset]
329 ?        S<     0:00  \_ [xfsalloc]
330 ?        S<     0:00  \_ [xfs_mru_cache]
331 ?        S<     0:00  \_ [xfslogd]
332 ?        S<     0:00  \_ [xfs-data/dm-1]
333 ?        S<     0:00  \_ [xfs-conv/dm-1]
334 ?        S<     0:00  \_ [xfs-cil/dm-1]
335 ?        S      0:00  \_ [xfsaild/dm-1]
339 ?        S<     0:00  \_ [kworker/1:1H]
443 ?        S      0:00  \_ [vballoon]
472 ?        S<     0:00  \_ [hd-audio0]
475 ?        S<     0:00  \_ [xfs-data/vda1]
476 ?        S<     0:00  \_ [xfs-conv/vda1]
477 ?        S<     0:00  \_ [xfs-cil/vda1]
478 ?        S      0:00  \_ [xfsaild/vda1]
9143 ?        S      0:00  \_ [kworker/1:0]
1 ?        Ss     0:01 /usr/lib/systemd/systemd –switched-root –system –d
394 ?        Ss     0:00 /usr/lib/systemd/systemd-journald
406 ?        Ss     0:00 /usr/sbin/lvmetad
429 ?        Ss     0:00 /usr/lib/systemd/systemd-udevd
491 ?        S<sl   0:00 /sbin/auditd -n
508 ?        Ssl    0:01 /usr/bin/python /usr/sbin/firewalld –nofork –nopid
511 ?        Ss     0:00 avahi-daemon: running [linux.local]
535 ?        S      0:00  \_ avahi-daemon: chroot helper
512 ?        Ssl    0:00 /sbin/rsyslogd -n
513 ?        Ss     0:00 /usr/sbin/irqbalance –foreground
515 ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
516 ?        Ss     0:00 /usr/lib/systemd/systemd-logind
518 ?        Ssl    0:00 /bin/dbus-daemon –system –address=systemd: –nofork
523 ?        Ss     0:00 /usr/sbin/crond -n
565 ?        Ss     0:00 /sbin/iprinit –daemon
568 ?        Ss     0:00 /sbin/iprupdate –daemon
588 ?        Ss     0:00 /sbin/iprdump –daemon
736 ?        Ssl    0:00 /usr/sbin/NetworkManager –no-daemon
9052 ?        S      0:00  \_ /sbin/dhclient -d -sf /usr/libexec/nm-dhcp-helper
776 ?        Ssl    0:00 /usr/lib/polkit-1/polkitd –no-debug
827 ?        Ss     0:00 /usr/bin/rhsmcertd
932 ?        Ss     0:00 /usr/sbin/sshd -D
9168 ?        Ss     0:00  \_ sshd: root@pts/0
9172 pts/0    Ss     0:00      \_ -bash
9194 pts/0    R+     0:00          \_ ps axf
1402 ?        Ss     0:00 /usr/libexec/postfix/master -w
1418 ?        S      0:00  \_ pickup -l -t unix -u
1419 ?        S      0:00  \_ qmgr -l -t unix -u
9189 tty1     Ss+    0:00 /sbin/agetty –noclear tty1

networkmanager! me va a dar un ataquito.. tendré que aprenderle a usar en CLI, la herramienta de CLI anterior era horrible, espero la hayan mejorado! Aunque leí en algún lado que podías seguir usando el viejo network

firewalld, es de investigar espero sea fácil, por el sitio de fedora encontré un howto

Usan postfix.. bien! Aunque si deseas, está sendmail en la lista de paquetes, tal y como estaba en CentOS-6, pero leí que en las siguientes versiones (RHEL-8?) posiblemente saquen a sendmail de la lista de paquetes

Estilo Fedora, usan cgroup, así que parece que ahora sí en serio debemos ponernos para esto.

El Filesystem que proponen usar ya no es ext4, dicen que con XFS es mejor el desempeño así que usan xfs de filesystem.

Tienen algo nuevo: LVM-thin-provisioning, quise instalar pero fallaba, como comenté anteriormente no sé si fue el idioma o esto.

ifconfig, nada nuevo, tengo ipv6

[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 172.30.60.146  netmask 255.255.255.0  broadcast 0.0.0.0
inet6 2800:68:a:60:5054:ff:fe7d:69fb  prefixlen 64  scopeid 0x0<global>
inet6 fe80::5054:ff:fe7d:69fb  prefixlen 64  scopeid 0x20<link>
ether 52:54:00:7d:69:fb  txqueuelen 1000  (Ethernet)
RX packets 13314  bytes 13408407 (12.7 MiB)
RX errors 0  dropped 63  overruns 0  frame 0
TX packets 3400  bytes 508908 (496.9 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet 127.0.0.1  netmask 255.0.0.0
inet6 ::1  prefixlen 128  scopeid 0x10<host>
loop  txqueuelen 0  (Local Loopback)
RX packets 64  bytes 5952 (5.8 KiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 64  bytes 5952 (5.8 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

consumo de disco:

[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   28G  828M   27G   3% /
devtmpfs               491M     0  491M   0% /dev
tmpfs                  498M     0  498M   0% /dev/shm
tmpfs                  498M  1.7M  496M   1% /run
tmpfs                  498M     0  498M   0% /sys/fs/cgroup
/dev/vda1              484M   92M  392M  20% /boot

bueno, 828M está muy bien.

servidor web? httpd-2.4.6, nada de hiawatha, ni nginx, ni lighttpd

php? 5.4.16

Usa systemd, ya no usa chkconfig (no dudo que haga el truco que fedora hace para reconocer los antiguos comandos)

iptables, puerto 22, 546 y 631 abiertos, tanto en ipv6 como en ipv4.

kernel?

uname -rv
3.10.0-54.0.1.el7.x86_64 #1 SMP Tue Nov 26 16:51:22 EST 2013

3.10.0, qué pena que no fue el 3.11 for WorkGroups! Me hubiera divertido durante tantos años!

Qué hago si no hay mysql en CentOS-7 ??? Hace tiempo vengo usando mariadb.. así que mejor que mejor ya RHEL-7 viene con MariaDB!

[root@localhost ~]# yum list mysql*
Loaded plugins: product-id, subscription-manager
This system is registered to Red Hat Subscription Management, but is not receiving updates. You can use subscription-manager to assign subscriptions.
Available Packages
MySQL-python.x86_64                       1.2.3-8.el7                  rhel-beta
mysql-connector-java.noarch               1:5.1.25-2.el7               rhel-beta
mysql-connector-odbc.x86_64               5.2.5-2.el7                  rhel-beta
[root@localhost ~]# yum list maria*
Loaded plugins: product-id, subscription-manager
This system is registered to Red Hat Subscription Management, but is not receiving updates. You can use subscription-manager to assign subscriptions.
Installed Packages
mariadb-libs.x86_64                     1:5.5.33a-3.el7            @anaconda/7.0
Available Packages
mariadb.i686                            1:5.5.33a-3.el7            rhel-beta
mariadb.x86_64                          1:5.5.33a-3.el7            rhel-beta
mariadb-bench.x86_64                    1:5.5.33a-3.el7            rhel-beta
mariadb-devel.i686                      1:5.5.33a-3.el7            rhel-beta
mariadb-devel.x86_64                    1:5.5.33a-3.el7            rhel-beta
mariadb-embedded.i686                   1:5.5.33a-3.el7            rhel-beta
mariadb-embedded.x86_64                 1:5.5.33a-3.el7            rhel-beta
mariadb-embedded-devel.i686             1:5.5.33a-3.el7            rhel-beta
mariadb-embedded-devel.x86_64           1:5.5.33a-3.el7            rhel-beta
mariadb-libs.i686                       1:5.5.33a-3.el7            rhel-beta
mariadb-server.x86_64                   1:5.5.33a-3.el7            rhel-beta
mariadb-test.x86_64                     1:5.5.33a-3.el7            rhel-beta

Eso es todo por el momento sobre RHEL-7 , te imaginarás que en 10 minutos (de los cuales la mayoría los pasé tratando de encontrar el ifconfig) no puedo ver mucho más, pero me pinta bien y fácil, ciertos cambios que son naturales y hay que asumirlos pues parece que es el camino.

Cómo acceder desde internet por SSH a un servidor que está en una red interna?

No sé si te ha pasado, a veces te llaman y te piden que revises un equipo linux, pero este está en una red interna, quizá dentro de otra red que está dentro de otra red, que está dentro de otra red.. en fin, un chorro de NAT que te impide simplemente hacer: ssh IP y ya.

Caramba, pues hoy me pasó, a un cliente le han colocado sus dos servidores, con 128GB de RAM, 20TB de disco y 80 procesadores dentro de una red privada, y esos servidores pueden iniciar conexiones hacia internet, pero desde internet no se puede acceder a ellos.

El cliente ofrece una alternativa acongojante: teamviewer. Imagínate, en vez de usar el simple y eficiente SSH, tengo que abrir un teamviewer y luego desde un windows que está con ese teamviewer, poder acceder entonces por putty (ssh) a ambos mega servidores (porque si te diste cuenta, no son pelo de cochino).

Y lo malo es que lo que yo escribo a veces el teamviewer no lo entiende, doy un click para coger foco y lo interpreta como que he arrastrado la barra de tareas, o escribo yum -y update y el teamviewer piensa que puse: y -y um update (te juro que me pasó)…. es agotador, copiar y pegar ya no es con un click ni nada por el estilo.. no señor, toca control C y control V.. (en linux se copia marcando con el mouse y se pega apretando el botón del medio o la ruedita del medio).

Bueno, ya paremos las quejas.

Entré al servidor de mi cliente por teamviewer, porque no me queda más remedio, y me conecté así a un server nuestro que sí tiene una ip pública:

ssh -R 22222:localhost:22 IPdelservernuestro

qué hace -R? Alabado sea el señor.. pues hace una VPN, se conocen como VPN del pobre, entre el puerto 22222 de nuestro servidor y el puerto 22 del server de mi cliente (localhost:22).

Ahi dejé el teamviewer (le cerré, total la sesión de ssh quedó abierta porque el putty quedó abierto), y entonces desde mi servidor (IPdelservernuestro) puse:

ssh localhost -p22222

-p22222 es que se conecte por ssh a esta IP (localhost) en el puerto 22222 que es el que abrí desde el cliente aquel.

Y listo, ya estoy dentro del cliente!

No importa dónde esté el cliente, si puede entrar por SSH a un server que controlemos, podemos hacer este ssh reverso.

Ahora, alguno dirá: “valiente cosa.. tuviste que entrar por teamviewer”. Bueno, eso es porque pude hacerlo.. pero recuerda que luego levanté el ssh, cerré la sesión de teamviewer dejando el putty ese abierto ahi.

Otro dirá: ah, pero y si cierran el putty? Bueno, o entro por teamviewer y le vuelvo a abrir, o le dejo corriendo dentro de una sesión de screen (ver más info de screen en www.ecualug.org)

Otro dirá: “sí , pero y si no hubiera habido teamviewer?” Bueno, en este caso le podría pedir al cliente (que seguramente sí está al lado del servidor): oye, escribe este comando. Y le crearía un usuario para que él pudiera entrar a mi servidor (porque no es necesario que entre como root, como usa un puerto alto, encima de 1024, no hay problema con eso).

Más quejas?

arreglar apf en centos-6

Hace un tiempo noté un problema en algunos centos-6 que el apf no funcionaba, le configurabas y todo y no salían reglas del iptables. Pero como estaba en otras urgencias, no tuve tiempo de analizarle.

A la final hoy tuve que instalar 4 veces el apf en 4 centos-6 diferentes y falló en todos ahi sí ya me preocupé. Así que encontré el problema, es fácil!

Cuando instalo CentOS-6 hago una instalación mínima, y resulta que las instalaciones mínimas ya vienen sin el comando “wget” lo que impide que el apf funcione correctamente. Ok, el apf debería detectar esto y usar quizá curl, pero no lo hace.

así que de momento, simplemente instalé wget, y volví a ejecutar el apf, y funcionó!

yum install wget

VPN roadwarrior usando dd-wrt

Bueno, un cliente lo pidió, así que me tocó.

dd-wrt es un firmware que sirve para una enorme variedad de routers inalámbricos de bajo costo que pululan en ebay y demás.

a veces es necesario establecer una conexión de VPN entre una red local que queda detrás de este tipo de router y un cliente externo. Me gusta mucho openvpn y he visto que dd-wrt lo ofrece para ciertos routers (con mucha RAM y almacenamiento), en mi caso compré hace unos años, de casualidad un Buffalo WHR-HP-G54 que permite que le flashees con este sistema.

Le tengo puesto el último firmware de dd-wrt, el DD-WRT v24-sp2 (08/07/10) vpn – build 14896 , fíjate la palabrita “vpn” en el nombre, este es un firmware muy grande, pero que cabe en este router al 100%.

Siguiendo los pasos que publiqué hace muchos años en EcuaLUG generé el ca.crt, server.key, server.crt y el dh1024.pem

Estos archivos los generé en un servidor Linux mío.. cualquiera.. que tuviera openvpn instalado. Y los contenidos de estos archivos los puse en el panel de control de router con dd-wrt donde dice Services -> VPN, ahi activé “Start OpenVPN Daemon”, mira las siguientes imágenes y lee debajo qué puse en cada caso:

En

  • CA cert, copié los contenidos que generé del ca.crt
  • Certificate Revoke List: no copié nada
  • Public Client Cert: copié los contenidos de server.crt
  • Private Client key: copié los contenidos de server.key
  • DH PEM: copié los contenidos de dh1024.pem
  • OpenVPN confíg puse los contenidos que más abajo verás.
  • OpenVPN TLS Auth : no puse nada.

En el config puse algo así, solamente tienes que cambiar la primera línea y poner la red interna que uses, en mi caso la red que está dentro de mi router dd-wrt es 192.168.8.0/24 (255.255.255.0=/24)

push "route 192.168.8.0 255.255.255.0"
server 10.10.0.0 255.255.255.0
dev tun0
proto tcp-server
port 1194
keepalive 10 120
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
management localhost 5001
comp-lzo

Y listo, apliqué los cambios.

ahora tuve que abrir el puerto 1194 en tcp, normalmente se usa udp pero mi proveedor de internet parece bloquearlo por lo que me cambié a tcp y a mi me funcionó.

Para abrir el firewall vete a “Administration” -> “Commands”

ahi escribes sólo dos líneas:

iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT
iptables -I FORWARD 1 --source 10.10.0.0/24 -j ACCEPT

Esto le indica que abra el puerto 1194 en tcp y que permita conexiones que provengan del tunnel (10.10.0.0/24).

Aprietas el botón que dice: “Save Firewall”

Y listo! Ya tenía activado el servidor de dd-wrt como un servidor de openvpn. Por supuesto seguí el tutorial de EcuaLug para la parte del cliente, normalito, como dice el tutorial para el cliente.