CP/M for the mases (4)

Una vez tenemos los cmd básicos por la mano, estaría bien, vitaminar un poco el CP/M, sobre todo si tenemos la placa M4 para nuestro querido Amstrad CPC.

Mi setup es, puerto serie RS232 + M4 + 512kb ram + cpc 6128.

Buscando por la web, encontré CP/M en formato ROM para amstrad CPC, pero ahora, no soy capaz de dar con el enlace, así que los dejo.

CP/M Zip rom files.

Una vez descomprimido el archivo, tenemos los siguientes ficheros:


craem@saiyan:~/Escritorio/cpc/cpm$ ls -l
total 624
-rw-r--r-- 1 craem craem 6987 feb 3 2016 'CP-M PLUS ROMs_DEU.txt'
-rw-r--r-- 1 craem craem 6994 feb 3 2016 'CP-M PLUS ROMs_ENGs.txt'
-rw-r--r-- 1 craem craem 16384 sep 8 2003 CPM_Plus-1.ROM
-rw-r--r-- 1 craem craem 16384 nov 15 1995 CPM_Plus-1V.ROM
-rw-r--r-- 1 craem craem 16384 nov 14 1995 CPM_Plus-2.ROM
-rw-r--r-- 1 craem craem 16384 jun 30 2015 CPM_Plus_Acc_1.ROM
-rw-r--r-- 1 craem craem 16384 jun 30 2015 CPM_Plus_Acc_2.ROM
-rw-r--r-- 1 craem craem 16384 jun 22 2015 CPM_Plus_Acc_3.ROM
-rw-r--r-- 1 craem craem 16384 jun 19 2015 CPM_Plus_Acc_4.ROM
-rw-r--r-- 1 craem craem 16384 jun 19 2015 CPM_Plus_Acc_5.ROM
-rw-r--r-- 1 craem craem 16384 jul 7 2015 CPM_Plus_Acc_6.ROM
-rw-r--r-- 1 craem craem 16384 jun 25 2015 CPM_Plus_Acc_7.ROM
-rw-r--r-- 1 craem craem 16384 feb 3 2016 CPM_Plus_Acc_8.ROM
-rw-r--r-- 1 craem craem 16384 feb 3 2016 CPM_Plus_Acc_9.ROM
-rw-r--r-- 1 craem craem 194816 sep 9 2015 CPM+ROMs.DSK
-rw-r--r-- 1 craem craem 9806 jun 18 2015 Graduate_ROMs_DEU_Aufbau.txt
-rw-r--r-- 1 craem craem 9863 jun 18 2015 Graduate_ROMs_ENG_Construction.txt

Una vez con los ficheros, nos vamos a la M4 y subimos las roms

Con esto subido a nuestra M4, tenemos varios RSX


RSX commands of the CP/M PLUS ROMs (2.34 and 2.30)
--------------------------------------------------
- EMS -----/ Starts CP/M Plus from ROM and shows the CP/M Plus expansion ROMs with thier names.
- O ------/ CP/M Plus is configurated for two drives and the RAM drive C: with 444 KB RAM.

- PW ------- Probable this command is equal to RSX commands "|EMS" and "|O".

- CPMVER --/ These commands are both identical. They show the Copyright message for CP/M PLUS and the CPM ROMs.
- VER ----/ Furtheron the version of the CP/M PLUS ROMs is shown, as the serial number and the name of the user.

- OP ------- This RSX command activates a menu system, which allows you to launch a .COM or .SUB file in an automatic way.
An error message will be displayed if there is no .COM or .SUB file on disc.
Else you can choose the file of choice with SPACE and start it with RETURN.
Then the CP/M PLUS with RAM Disc will be started and the selected file will be launched.
Attention: Some print routine are incompatible, for example this is the case for X-DDOS. Switch off on problems.

- MYNAME --- Displays the name of the user / buyer of this set of CP/M Plus ROMs on screen.

- PASSWORD - This command asks you for a password. If you enter it three times wrong then CP/M Plus will be started from ROM.

- OHELP ---/ These commands are both identical. They show if there are CP/M Plus expansion ROMs containing programs.
- EMSHELP / If such ROMs can be found their name and position (ROM number) will be displayed.
Using |OHELP,nr or |EMSHELP,nr will display the applications contained in CP/M Plus expansion ROM #nr.

- NOCPM ---- This RSX command will switch OFF the CP/M Plus expansion ROMs. All other ROMs will be initialiized again.

Así que, iniciamos CP/M con el RSX |EMS y tenemos (en mi caso) la pantalla de inicio, tal que:

¿Qué tenemos de nuevo?. Para empezar, me detecta la ampliación de ram y me genera una unidad «C» con unos fabulosos 444kb para usar como unidad virtual. Reconoce las dos disketeras que tengo, el puerto serie y todas las ROMS que he insertado.

Útil, tenemos PIP.COM en rom, con lo que para copiar archivos entre unidades, no hace falta tener el disco de sistema en A o B.

Tecleando builtin, tenemos la lista de cmd’s instalados:

Y a partir de aquí, a jugar con nuestro cp/m vitaminado

GEoIP Debian Wheezy (7)

Otra entrada de apunte…. esta vez, quiero permitir el acceso al puerto 25 de mi mailserver a mi red local, vpn y subredes de españa; ya tengo un antispam en una máquina separada y no me interesa que se acceda de manera habitual para entrega de correo.

La entrada original, se encuentra aquí:

https://terminal28.com/how-to-block-countries-using-iptables-debian/

Esto es solo un ejemplo, pero se puede aplicar a más cosas… ssh, VoIP o lo que necesites.

Primero de todo, instalamos las dependencias:


# apt-get install libtext-csv-xs-perl module-assistant geoip-database libgeoip1
# module-assistant --verbose --text-mode auto-install xtables-addons


Una vez instaladas las dependéncias, instalamos las bbdd de maxmind:

# mkdir /usr/share/xt_geoip
# cd /usr/share/xt_geoip
# wget http://terminal28.com/wp-content/uploads/2013/10/geoip-dl-build.tar.gz
# tar xvf geoip-dl-build.tar.gz
# ./xt_geoip_dl
# ./xt_geoip_build -D . *.csv
# rm -fr geoip-dl-build.tar.gz


Una vez aplicado, configuramos los iptables, tal que:


# Generated by iptables-save v1.4.14 on Fri Jan 3 15:57:31 2014
*filter
:INPUT ACCEPT [541:131352]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [528:125051]
:SIPDOS - [0:0]
:SSHDDOS - [0:0]
:MYSQLDOS - [0:0]
:SMTPDDOS - [0:0]
-A INPUT -m geoip --src-cc CN,UA,TW -j DROP
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 22109 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 22109 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 10.0.0.0/8 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -m geoip --src-cc ES -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22109 -j SSHDDOS
-A INPUT -p tcp -m tcp --dport 3306 -j MYSQLDOS
-A INPUT -p tcp -m tcp --dport 25 -j SMTPDDOS
-A SIPDOS -j LOG --log-prefix "firewall-sipdos: " --log-level 6
-A SIPDOS -j DROP
-A SMTPDDOS -j LOG --log-prefix "firewall-smtpddos: " --log-level 6
-A SMTPDDOS -j DROP
-A SSHDDOS -j LOG --log-prefix "firewall-sshddos: " --log-level 6
-A SSHDDOS -j DROP
-A MYSQLDOS -j LOG --log-prefix "firewall-mysqldos: " --log-level 6
-A MYSQLDOS -j DROP

COMMIT
Enjoy your iptables 😉

LACP vCenter 6.7

Otro apunte.

Hace unos días, actualizamos al infraestructura del CPD y añadimos dos switches con puertos de 10GB en Stack. La idea es, conectar los dos hosts vmware a los switches de 10GB y hacer un bonding LACP entre ellos.

Primero de todo, vamos al apartado de redes en el vCenter y damos el alta el nuevo Distributed switch:

Añadimos un nuevo DS:

Le damos un nombre:

Seleccionamos la versión:

Como tenemos dos puertos a 10, seleccionamos dos y no creamos ningún portGroup por defecto:

y finalizamos la configuración:

Nos aparecerá el nuevo DS en el apartado de redes:

Ahora añadimos los hosts, haciendo botón derecho y Add and Manage hosts

Y seguimos con el asistente:

En este punto, no añadimos ningún interfaz y le damos a next:

Tampoco añadiremos en este caso las management networks y acabamos con el asistente.

Una vez acabado el asistente, añadimos el LAG interface:

Damos un nombre al LACP, con dos puertos, en modo pasivo (en el otro extremo tiene que estar en activo) y el modo de balanceo es Source and destination IP address

Ahora añadimos los UPLINKS en el LACP, botón derecho y Add and Manage hosts:

Vamos siguiendo el asistente hasta acabar…. ahora añadimos las redes en nuestros vmware.

Debian client login ldap server

otra entrada que es un apunte.

En esta ocasión, vamos a hacer en nuestros servers, que el login vaya centralizado contra nuestro ldap.

Primero de todo, instalamos las dependencias:


root@pbxshared:/etc/asterisk# apt-get install libpam-ldap nscd


aptitude -y install libnss-ldap libpam-ldap ldap-utils

instalamos y nos pide la url del ldap:


LDAP server URI
ldap://mi.serverldap.com


Distinguished name of the search base:
dc=exemple,dc=local


LDAP version to use:
3


Configuring libpam-ldap
his option will allow password utilities that use PAM to change local passwords.
The LDAP admin account password will be stored in a separate file which will be made readable to root only.
If /etc is mounted by NFS, this option should be disabled.
Allow LDAP admin account to behave like local root?

YES


Database requires login
YES


Configuring libpam-ldap
cn=manager,dc=example,dc=net


Configuring libpam-ldap
mipassword

Ahora editamos el fichero /etc/nsswitch.conf y dejamos tal cual:

passwd: ldap compat
group: ldap compat
shadow: ldap compat

gshadow: files

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

Editamos el fichero /etc/pam.d/common-session y añadimos al final:

session required pam_mkhomedir.so skel=/etc/skel umask=0022

reiniciamos el servicio nscd

/etc/init.d/nscd restart

Instalamos sudo si no está..

apt-get install sudo

Y modificamos el visudo


#visudo

añadimos el grupo que podrá hacer sudo su

# User privilege specification
root ALL=(ALL:ALL) ALL
%admin_users ALL=(ALL) ALL

Admin_users es el grupo LDAP donde se encuentren nuestros usuarios.

ahora vamos a reestringir a un grupo de ldap el login al server. Editamos el fichero /etc/pam.d/common-auth y añadimos:

auth required pam_access.so

Editamos el fichero /etc/security/access.conf y añadimos el grupo al cual permitiremos acceso, añadiendo al final:

-:ALL EXCEPT root (admin_users):ALL EXCEPT LOCAL

VoIP jazztel ftth y asterisk pjsip

En esta ocasión, registraremos nuestro servicio de VoIP de fibra Jazztel en nuestro asterisk.

Requisitos:

1º) Capturar el proceso de register del router de jazztel contra sus SBC. Para ello, mediante un hub colocado entre el router y la ONT, colocaremos nuestro pc capturando el paquete deseado.

En las capturas, deberás ver un paquete tal que:


Via: SIP/2.0/UDP x.x.x.x:5060;branch=asdfgsdfgsdfgsdfgsd
To:
From: ;tag=d2derwerqwer19-f45ffrr
Call-ID: xxxxxxxxxxx-xxxxxxxxx@x.x.x.x
CSeq: 46360 REGISTER
Contact:
Authorization: Digest username="misuperusuario007@ims.jazztel.net",realm="ims.jazztel.net",nonce="elsuperNonce",uri="sip:ims.jazztel.net",response="idRespuestaasfasdfasdfwererer",algorithm=MD5,cnonce="sdferelcenoncd",qop=auth,nc=00000001
Expires: 3600
Max-Forwards: 70
Supported: 100rel
User-Agent: ZXHN H218N/V2.0.0_JAZZT7
Content-Length: 0

En vez de las ‘x’, saldrán tus valores xDDD; no preguntes

2º) HTTPBrute, que nos servirá para sacar el password con el paquete SIP.

Pantallazo

Rellena cada casilla con lo que toca…. es bastante clarito todo. Le das a crack y calculate y te esperas unas horas (en mi caso)

3º) Asterisk 12 o 13 con pjSip. Yo en mi caso tengo una 12 con poca ram y cpu.

La versión 12 o 13 tiene su razón bastante obvia…… Para poder hacer una llamada, tienes que tener activada la opción 100rel…. en el chan_sip de asterisk, esta opción no está, pero en pjsip si, así que ya sabéis.

El user-agent, debe ser igual al que os proponga el router.

4º) Configuración del pjsip.conf

[global]
user_agent=ZXHN H298N/V1.1.4_JAZZT15

[endpoint]
100rel=yes --> Importante definir el endpoint con el 100rel=yes
sdp_session=ZXHN H298N/V1.1.4_JAZZT15

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
local_net=192.168.0.0/16 --> tu red local
local_net=127.0.0.1/32

[Jazztel]
type=registration
transport=transport-udp
outbound_auth=Jazztel
server_uri=sip:212.106.212.22:5060
client_uri=sip:+349xxxxxxxx@ims.jazztel.net --> tu número de teléfono con el +34
retry_interval=60
expiration=3600
support_path=yes

[Jazztel]
type=auth
auth_type=userpass
password=PasswordQueHayasCalculado
username=tuUsuari0DeJazttel@ims.jazztel.net
realm=ims.jazztel.net

[Jazztel]
type=aor
contact=sip:ip.del.sbc.jazztel:5060

[Jazztel]
type=endpoint
transport=transport-udp
context=Tu_Contexto_De_Llamadas_Entrantes
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g729
outbound_auth=Jazztel
aors=Jazztel
from_user=+349xxxxxxxx --> tu número de teléfono de jazztel
from_domain=ims.jazztel.net
aors=Jazztel
direct_media=no

[Jazztel]
type=identify
endpoint=Jazztel
match=ip.del.sbc.de.jazztel

Y a partir de aquí…. enjoy your VoIP FTTH Service 😉

TeamViewer en debian jessie

Otra entrada que es un apunte.

Recientemente, he migrado mi portatil, de debian 8 y necesitaba el teamviewer para dar soporte a los clientes…. una vez instalado, hay que hacer lo siguiente:


cd /opt/teamviewer/tv_bin/script
cp -r /opt/teamviewer/tv_bin/script/teamviewerd.service /lib/systemd/system/
cd /lib/systemd/system
root@shenron:/lib/systemd/system# service teamviewerd start
root@shenron:/lib/systemd/system# systemctl enable teamviewerd.service
Created symlink from /etc/systemd/system/graphical.target.wants/teamviewerd.service to /lib/systemd/system/teamviewerd.service.

y ahora, lanzamos el teamviewer para ver si funciona :


root@shenron:/lib/systemd/system# teamviewer

Init...
Checking setup...
Launching TeamViewer ...

Y ya lo tenemos listo 😉

Netflow: nfsen + nfdump en Debian (3) + cacti + pmacct

Ahora vamos a añadir una capa más…. pmacct.

Pmacct será el enlace entre cacti y los flows de los dispositivos… usaremos nfsen para controlar tráfico y ataques.

Descargamos y descomprimimos pmacct:


# cd /usr/src
# wget -c http://www.pmacct.net/pmacct-1.5.0.tar.gz
# tar -zxvf pmacct-1.5.0.tar.gz

Creamos el directorio de instalación:

# mkdir /etc/pmacct

Y instalamos

Una vez instalado, vamos a configurar lo que nos interesa de pmacct, que más tarde, enlazaremos con cacti.


# nano /etc/pmacct.conf

debug: true
daemonize: true
nfacctd_port: 9996
pidfile: /var/run/nfacctd.pid
plugin_buffer_size: 80524
plugin_pipe_size: 18052324
networks_file: /etc/pmacct/nfacctd.hosts

plugins: memory[in], memory[out]
aggregate[in]: dst_host
aggregate[out]: src_host
imt_path[in]: /tmp/in.pipe
imt_path[out]: /tmp/out.pipe

En el fichero nfacctd.hosts, añadimos las ip’s / rangos que nos interese tener en detalle…


# nano /etc/pmacct/nfacctd.hosts

1.1.1.1/32
1.1.1.2/32
..
...

Lanzamos pmacct….


root@testflow:/etc/pmacct/sbin# ./nfacctd -D -f /etc/pmacct/pmacct.conf

Para comprobar que estamos escuchando correctamente:

root@testflow:/etc/pmacct/bin# netstat -putan | grep 9996
udp 0 0 0.0.0.0:9996 0.0.0.0:* 17799/nfacctd: Core

y que recogemos flows:

root@testflow:/etc/pmacct/bin# ./pmacct -s -p /tmp/out.pipe
root@testflow:/etc/pmacct/bin# ./pmacct -s -p /tmp/in.pipe

Y ahora comprobamos si hace accounting de las ip’s en concreto:


root@testflow:/etc/pmacct/bin# ./pmacct -c dst_net -N 1.1.1.1 -p /tmp/in.pipe
7254628
root@testflow:/etc/pmacct/bin#

Y vemos cómo ya nos muestra tráfico en bytes 🙂

Captura de pantalla 2014-11-16 a las 14.42.32

Cisco ASA 8.2 to 9.x :: migrando :: parte 2

En esta ocasión, me toca migrar tema NAT.

Supongamos que tenemos nuestra red local 192.168.2.0/24 y un rango de ip’s públicas, por ejemplo 1.1.1.0/29.

Lo más lógico, es NATear 1:1, es decir, una ip privada de la red, contra una ip pública y permitir / denegar tráfico mediante ACL….. por defecto, está todo cerrado excepto, lo que nosotros permitimos…

configuración en asa 8.2.5… ip privada 192.168.2.2, nateada contra la pública 1.1.1.2 y permitimos 25 y 443 tcp.


static (inside,outside) 1.1.1.2 192.168.2.2 netmask 255.255.255.255

access-list outside_in permit tcp any host 1.1.1.2 eq 25
access-list outside_in permit tcp any host 1.1.1.2 eq 443

access-group outside_in in interface outside

Ahora toca migrar la config a versión 9.x:

object network poseidon
host 192.168.2.2
nat (inside,outside) static 172.26.2.2

access-list outside_in extended permit tcp any object poseidon eq 443
access-list outside_in extended permit tcp any object poseidon eq 25
access-group outside_in in interface outside

Primero toca definir el objeto, aplicamos la regla al object y finalmente, el grupo de reglas al interface que toca.