Update Clamav and havp to zeroshell

Ciao,

mi sono ritrovato con l’esigenza di aggiornare le versioni di ClamAV e havp all’interno dell’ultima versione di ZeroShell 3.8.2

passando da ClamAV: Loaded 1041844 signatures (engine 0.99.2) e HAVP Version: 0.92

con una serie di messaggi nel log del tipo

[LibClamAV] cli_loadldb: logical signature for PUA.Java.Packer.Allatori-6687596-0 uses PCREs but support is disabled, skipping

a

ClamAV: Loaded 6094413 signatures (engine 0.101.2) e HAVP Version:093.

Il software per eseguire l’aggiornamento è composto dai sorgenti di ClamAV 0.101.2 e HAVP 0.93 più le loro dipendenze.

La stuttura di Zeroshell con il suo filesystem /cdrom/usr/local in sola lettura complica l’aggiunta di software. Ma possiamo ricorrere alla /opt per creare un nuovo percorso per il nuovo software.

Potremmo ricorrere alla compilazione attraverso la tecnica della Cross-Compilation per ottenere dei binari a 32bit . Questo perchè mi è sembrato di vedere che questi fossero i binari presenti su Zeroshell. Ma ho preferito usare Virtualbox ed installare una CentOS a 32 bit che ho usato come build host.

Dicevo il software sorgente che ci serve è così ben fatto e documentato che ./configure –help e la lettura del README e INSTALL allegato ci rende il compito agevole.

Ho usato come –prefix=/opt in tutti i configure . Il software usato è stato

[root@localhost src]# ls -1
bzip2-1.0.6
bzip2-1.0.6.tar
clamav-0.101.1
clamav-0.101.1.tar.gz
clamav-0.101.2
clamav-0.101.2.tar.gz

havp-0.93
havp-0.93.tar.gz
json-c-0.13.1
json-c-0.13.1.tar.gz

libxml2-2.9.9
libxml2-2.9.9.tar.gz
libxml2-sources-2.9.9.tar.gz
openssl-1.0.2r
openssl-1.0.2r.tar.gz
pcre2-10.32
pcre2-10.32.tar.bz2
pcre-8.43
pcre-8.43.tar.bz2
xz-5.2.4
xz-5.2.4.tar.gz
zlib-1.2.11
zlib-1.2.11.tar.gz

Ho cominciato con openssl poi tutte le librerie solo dopo clamav ed infine havp.

il risultato è una /opt che contiene la seguente struttura

[root@localhost opt]# ls 
bin etc include lib man sbin share ssl

La nuova /opt è di circa 67Mb

Di questa opt ne ho fatto il tar e portato in /Database di Zeroshell.

Due script sottendono al clamav e havp e questi vanno modificati. Ho copiato da /root/kerbynet.cgi/scripts in /Database/scripts/ i due file

ClamAV-Update e proxy_start e li ho modificati nella sezione che indicava il PATH e LD_LIBRARY_PATH

export PATH=/opt/bin:/opt/sbin:/Database/opt/$RELEASE/$PATCHLEVEL/packages/bin/:/Database/opt/$RELEASE/$PATCHLEVEL/packages/sbin/:$PATH
export LD_LIBRARY_PATH=/opt/lib:/opt/ssl:/opt/ssl/lib:/Database/opt/$RELEASE/$PATCHLEVEL/packages/lib/:$LD_LIBRARY_PATH

Ora non rimane che usare un “pre boot script” come

cp /Database/scripts/* /root/kerbynet.cgi/scripts/

tar -xvf /Database/opt.tar -C /opt

In questo modo avremo una nuova versione di ClamAV e HAVP.

Ora vedremo nei log di Zeroshell

17:58:46 === Starting HAVP Version: 0.93
17:58:46 Running as user: havp, group: havp
17:58:46 Use transparent proxy mode
17:58:46 — Initializing ClamAV Library Scanner
17:58:46 ClamAV: Using database directory: /var/register/system/ClamAV/db

e

17:58:42 Update process terminated
17:59:47 freshclam daemon 0.101.2 (OS: linux-gnu, ARCH: i386, CPU: i686)
17:59:47 ClamAV update process started at Sat Mar 30 17:59:47 2019
17:59:47 main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
17:59:47 daily.cvd is up to date (version: 25404, sigs: 1537374, f-level: 63, builder: raynman)
17:59:47 bytecode.cvd is up to date (version: 328, sigs: 94, f-level: 63, builder: neo)
17:59:47 ————————————–

Inoltre provando ad eseguire il download di test EICAR

otteniamo il rassicurante messaggio

ubuntu@proxyclient:/tmp$ wget http://2016.eicar.org/download/eicarcom2.zip
–2019-03-30 17:03:23– http://2016.eicar.org/download/eicarcom2.zip
Resolving 2016.eicar.org (2016.eicar.org)… 213.211.198.58
Connecting to 2016.eicar.org (2016.eicar.org)|213.211.198.58|:80… connected.
HTTP request sent, awaiting response… 403 Virus found by HAVP
2019-03-30 17:03:23 ERROR 403: Virus found by HAVP.

Ricordiamo che questo vale solo per i siti in http e non https.

buon free software.

Renato

ps.

appena possibile aggiungo un link da dove scaricare il file opt.tar in attesa che la nuova versione di Zeroshell li contenga.

IP NAT on SmartOS with bhyve

SmartOS ha introdotto accanto KVM anche BHYVE

Quinidi ho voluto usarlo visto che promette vantaggi rispetto kvm.  Ma ho trovato un impedimento.

Premessa: La soluzione più elegante e funzionale, per ottenere il traffico delle zone verso Internet, è quella di aggiungere un nuovo IP pubblico ad una zona con funzionalità di firewall/gateway. Il piccolo svantaggio è quello del costo del IP pubblico.

Il “mio” server Hetzner ha una sola scheda di rete e la configurazione di rete che ho sempre utilizzato usa la Global Zona per effettuare il nat delle zone. La configurazione è semplice, attraverso il file /usbkey/config  aggiungo la “stanza” per la nuova vnic, questa verrà aggiunta ed individuata con il nictag  “admin” al boot della Global Zone

gw_nic=00:1e:67:e7:a7:2b
gw0_ip=172.16.0.1
gw0_netmask=255.255.255.0
root@00-1e-67-e7-a7-2b /usbkey # ipadm  show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
igb0/?            dhcp     ok           AA.BB.CC.BB/26
gw0/_a            static   ok           172.16.0.1/24
lo0/v6            static   ok           ::1/128

il file /etc/ipf/ipnat.conf conterrà  la riga magica
map igb0 from 172.16.0.0/24 to any 0/32
e si abilita anche l’ip forwarding tramite il comando routeadm ip4_forwarding

root@00-1e-67-e7-a7-2b  # routeadm -u -e ipv4-forwarding

ed infine la zona contiene per la rete la sezione

{
“nic_tag”: “admin”,
“model”: “virtio”,
“ips”:[
“172.16.0.2/24”
],
“gateway”: “172.16.0.1”,
“primary”: 1,
“allow_ip_spoofing”: “true”
}
che contiene il riferimento alla nic_tag sia la possibilità del ip_spoofing

Ecco sino alla comparsa di BHYVE non ho mai avuto problemi. Questa configurazione combinata con la presenza di bhyve non funziona.

Le soluzioni che ho trovato per “aggirare” il problema sono

  • uso del vlan id nella definizione della vnic gw0 legata al nictag admin

#/usbkey/config
gw_nic=00:1e:67:e7:a7:2b
gw0_ip=172.16.0.1
gw0_netmask=255.255.255.0
gw0_vlan_id=”1000″

zone.json

{
“nic_tag”: “admin”,
“model”: “virtio”,
“ips”:[
“172.16.0.2/24”
],
“gateway”: “172.16.0.1”,
“primary”: 1,
“allow_ip_spoofing”: “true”,
“vlan_id”: “1000”
}
..

  • uso la definizione di un etherstub dedicato. Il comando nictagadm consente di create sia le vnic sia etherstub che vengono registre nel file /usbkey/config tali da renderli permaneti al reboot della Global Zone. Non ho trovato il modo di configurare una vnic su di una etherstub attraverso il file di configurazione config. Ho usato l’idea di  blackdoc

## setup gw2
if [ `dladm show-vnic | grep gw2 | wc -l` -ne 1 ]; then
/usr/sbin/dladm create-vnic -m 2:8:20:2c:83:7e -l switch1 gw2
/usr/sbin/ipadm create-addr -T static -a 172.18.0.1/24 gw2/v4
fi

ma all’interno del file  /opt/custom/share/svc/smartos_setup.sh  ideato a Tim Boudreau.

 

Con queste due modalità anche le zone BHYVE vengono “nattate” senza alcun problema mentre in precedenza avevo un funzionamento “strano” ping 8.8.8.8 funzionava mentre dig andava in timeout.

 

 

– letture consigliate che mi hanno guidato

https://docu.blackdot.be/snipets/solaris/smartos-nat  ( ipnat with etherstub )

https://gist.github.com/baetheus/5e1e5ab1eb68fae3490d ( ipnat with vlan )

https://timboudreau.com/blog/smartos/read (http://www.renatomorano.net/?p=2316)

ps.

mi sono fatto l’idea che BHYVE in qualche modo impedisce le comunicazioni all’interno del nictag admin in un modo che non conosco.

Zeroshell as router wifi

Ciao,

 

condivido la mia esperienza di trasformare un Alix ( gentilmente prestato dal mio amico Michele) per capire come poter far amministrare a Zeroshell anche le reti WiFi.

Non sarei riuscito a realizzare nulla senza il supporto puntuale e preciso di PC Engines da cui ho acquistato tutto il materiale necessario.

Il mio Alix ( di Michele 🙂 ) è predisposto  ad accogliere una espansione   wlm200nx

Compex WLM200NX Atheros 802.11a/b/g/n miniPCI wireless card (for alix)

La fretta non mi ha fatto realizzare che era il caso che insieme alla scheda prendessi anche cavi e antenne ma sempre grazie la PC Engine ho risolto ed aggiunto un secondo ordine:

pigsma :Pigtail cable I-PEX -> reverse SMA

antsma  :Antenna reverse SMA 2.4 GHz

 

L’assemblaggio  è stato semplice e efficace. Riporto le immagini della lavorazione

 

antenne

 

A questo punto non rimane che effettuare la configurazione. Prima via console attraverso il  menu wifi e dopo dalla console web comparirà la nuova  interfaccia wifi che potrete trattare come una normale interfaccia di rete a cui applicare tutte le configurazioni così come fareste su di una normale Ethernet.

Ho sperimentato sia la configurazione AP e che client in entrambi i casi  il risultato è stato quello atteso .. un successo.

 

buon sera a tutti voi

 

 

 

 

rabbitmq on smartos zone

Hi,

I was in trouble with rabbitmq-server 🙁

I’m working on a cluster rabbitmq on SmartOS zone  and I need to install it and I found three post to solve my problem:

    1.  SMLLR
    2.  justinrainbow
    3.  ArchWiki

on first post the trick  has been to reinstall rabbitmq  as binary and start if as “root”

The second post show me that I need to add two variable if rabbitmq has been installed from pkgin

RABBITMQ_NODENAME=rabbit
RABBITMQ_HOME=/var/db/rabbitmq

The last show me that  the correct home variable is

HOME=/var/db/rabbitmq

so I have rabbitmqctl status  working on node.

 

My route:

pkgin in rabbitmq-3.6.10 

add into /opt/local/etc/rabbitmq/rabbitmq-env.conf

RABBITMQ_NODENAME=rabbit

HOME=/var/db/rabbitmq

and enable epmd an then rabbitmq

svcadm enable svc:/pkgsrc/epmd:default

svcadm enable svc:/pkgsrc/rabbitmq:default
[root@d60bf003-ad93-6262-82d4-d61c0f7ec4ad ~]# rabbitmqctl status 

Status of node 'rabbit@d60bf003-ad93-6262-82d4-d61c0f7ec4ad'

[{pid,36547},

 {running_applications,

     [{rabbit,"RabbitMQ","3.6.10"},

      {ranch,"Socket acceptor pool for TCP protocols.","1.3.0"},

      {ssl,"Erlang/OTP SSL application","8.1.1"},

      {public_key,"Public key infrastructure","1.4"},

      {crypto,"CRYPTO","3.7.3"},

      {rabbit_common,

          "Modules shared by rabbitmq-server and rabbitmq-erlang-client",

          "3.6.10"},

      {xmerl,"XML parser","1.3.13"},

      {os_mon,"CPO  CXC 138 46","2.4.2"},

      {mnesia,"MNESIA  CXC 138 12","4.14.3"},

      {asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"},

      {compiler,"ERTS  CXC 138 10","7.0.4"},

      {syntax_tools,"Syntax tools","2.1.1"},

      {sasl,"SASL  CXC 138 11","3.0.3"},

      {stdlib,"ERTS  CXC 138 10","3.3"},

      {kernel,"ERTS  CXC 138 10","5.2"}]},

 {os,{unix,sunos}},

 {erlang_version,

     "Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:8:8] [async-threads:128] [kernel-poll:true] [dtrace]\n"},

 {memory,

     [{total,58882568},

      {connection_readers,0},

      {connection_writers,0},

      {connection_channels,0},

      {connection_other,0},

      {queue_procs,2752},

      {queue_slave_procs,0},

      {plugins,0},

      {other_proc,22384032},

      {mnesia,60416},

      {metrics,114160},

      {mgmt_db,0},

      {msg_index,39680},

      {other_ets,2123776},

      {binary,113504},

      {code,21340665},

      {atom,891849},

      {other_system,11923142}]},

 {alarms,[]},

 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{amqp,5672,"0.0.0.0"}]},

 {vm_memory_high_watermark,0.4},

 {vm_memory_limit,214748364},

 {disk_free_limit,50000000},

 {disk_free,85748997120},

 {file_descriptors,

     [{total_limit,65436},

      {total_used,2},

      {sockets_limit,58890},

      {sockets_used,0}]},

 {processes,[{limit,1048576},{used,173}]},

 {run_queue,0},

 {uptime,195},

 {kernel,{net_ticktime,60}}]

[root@d60bf003-ad93-6262-82d4

Is there any mechanism that prevents NAT setup in host-only networks?

Questo mi ha salvato.

 

https://kb.plesk.com/en/7994

 

Answer

Due to security reasons Parallels Server does not allow outgoing traffic from non-allowed IPs from VMs.

Network filtering is managed by the following values in VM configuration file:

     <PktFilter>
        <PreventPromisc>1</PreventPromisc>
        <PreventMacSpoof>1</PreventMacSpoof>
        <PreventIpSpoof>1</PreventIpSpoof>
     </PktFilter>

PreventIpSpoof — if it is enabled outgoing packets are dropped if its source IP is not one of IPs assigned to this VM;

PreventMacSpoof — if its is enabled outgoing packets are dropped if its source MAC is not VM’s MAC;

PreventPromisc — if it is enabled incoming packets addressed to non-VMs MAC are dropped.

For nested installations:

For Parallels Virtuozzo Containers installed inside of a Virtual Machines it is recommended to disable all these filters in order to provide full network connectivity.

To allow host-routed containers have network connectivity with servers that reside outside of Parallels Server host it is necessary to disable PreventIpSpoof.

To enable bridged networking for containers running in the VM you should disable PreventPromisc and PreventMacSpoof.

All filters can be disabled using following command:

# prlctl set VMNAME --ifname IFACE_NAME --preventpromisc no --ipfilter no --macfilter no

Reboot of VM is required to apply the changes.

moodle and ssl proxy server

How to configure moodle with a frontend ssl ?

VM1: (nginx + letsencrypt)  ——>VM2: apache2 with moodle

 

Setting up your moodle

On a basic moodle site, it will be simple to set up https. Simply edit config.php and change http:// to https:// in $CFG->wwwroot.

However if you are using a proxy or load balancer, depending on your setup you may need to set $CFG->sslproxy to 1, and not use SSL on the moodle server. Then the load balancer or proxy server can communicate directly to your moodle site, but serve to the clients over SSL.

 

$CFG->sslproxy  = 1;

systemctl restart apache2

Per esempio: https://moodle.renatomorano.net/

how to use sensu-install -p

Ciao,

io ho capito solo adesso come usare

sensu-install -p   nome-plugin

ora mi chiedevo dove li trovo ??? Poi mi sono accorto che sul sito <<https://github.com/sensu-plugins>> i nomi sono del tipo

sensu-plugins-elasticsearch 

sensu-plugins-memory-checks

 


bene non ci crederete ma basta eseguire

sensu-install -p elasticsearch

sensu-install -p memory-checks

ed ecco il nostro plugin verrà messo in /opt/sensu/embedded/bin

fine dei giochi

.. meglio tardi che mai 🙂

my network on Hetzner

QoS and smb protocol

A long …short story :

SMB (tcp/445)  doesn’t work with QoS.

rabbimq-server on lx branded zone

Hi,
I’m playing with Sensu in SmartOS LX zone

imgadm avail | grep 23ee2dbc-c155-11e6-ab6d-bf5689f582fd

23ee2dbc-c155-11e6-ab6d-bf5689f582fd centos-7 20161213 linux lx-dataset 2016-12-13
root@d8-cb-8a-bf-92-f0 ~ # imgadm info 23ee2dbc-c155-11e6-ab6d-bf5689f582fd
{
“manifest”: {
“v”: 2,
“uuid”: “23ee2dbc-c155-11e6-ab6d-bf5689f582fd”,
“owner”: “00000000-0000-0000-0000-000000000000”,
“name”: “centos-7”,
“version”: “20161213”,
“state”: “active”,
“disabled”: false,
“public”: true,
“published_at”: “2016-12-13T16:56:50Z”,
“type”: “lx-dataset”,
“os”: “linux”,
“files”: [

{
“sha1”: “57e381704ced765d7ed19ad11efc04d521f608ed”,
“size”: 261271891,
“compression”: “gzip”
}
],
“description”: “Container-native CentOS 7.3 64-bit image. Built to run on containers with bare metal speed, while offering all the services of a typical unix host.”,
“homepage”: “https://docs.joyent.com/images/container-native-linux”,
“requirements”: {
“networks”: [
{
“name”: “net0”,
“description”: “public”
}
],
“min_platform”: {
“7.0”: “20160317T000105Z”
},
“brand”: “lx”
},
“tags”: {
“role”: “os”,
“kernel_version”: “3.10.0”
}
},
“zpool”: “zones”,
“source”: “https://images.joyent.com”
}

The  Sensu documentation  tell us how to install rabbitmq-server  and all is working as expect. I was in trouble just with
systemctl restart rabbitmq-server
The command after a lot of time answer me with error 🙁     After google-ing I have to use my resource.

Systemd call rabbitmq-server.service ?

[root@sensu01 ~]# systemctl status rabbitmq-server -l
● rabbitmq-server.service – RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-04-20 17:39:51 UTC; 2min 51s ago
Process: 6672 ExecStop=/usr/sbin/rabbitmqctl stop (code=exited, status=0/SUCCESS)
Main PID: 7131 (rabbitmq-server)
CGroup: /system.slice/rabbitmq-server.service
├─7131 /bin/sh -e /usr/lib/rabbitmq/bin/rabbitmq-server
├─7361 /usr/lib64/erlang/erts-8.3/bin/beam.smp -W w -A 128 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -B i — -root /usr/lib64/erlang -progname erl — -home /var/lib/rabbitmq — -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.9/ebin -noshell -noinput -s rabbit boot -sname rabbit@sensu01 -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,”/var/log/rabbitmq/rabbit@sensu01.log”} -rabbit sasl_error_logger {file,”/var/log/rabbitmq/rabbit@sensu01-sasl.log”} -rabbit enabled_plugins_file “/etc/rabbitmq/enabled_plugins” -rabbit plugins_dir “/usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.9/plugins” -rabbit plugins_expand_dir “/var/lib/rabbitmq/mnesia/rabbit@sensu01-plugins-expand” -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir “/var/lib/rabbitmq/mnesia/rabbit@sensu01” -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672
├─7537 erl_child_setup 65536
├─7625 inet_gethost 4
└─7626 inet_gethost 4
‣ 7131 /bin/sh -e /usr/lib/rabbitmq/bin/rabbitmq-server

So first I check if  /usr/lib/rabbitmq/bin/rabbitmq-server is working on CLI and yes it works.
What’s in /usr/lib/systemd/system/rabbitmq-server.service
[root@sensu01 ~]# cat /usr/lib/systemd/system/rabbitmq-server.service
[Unit]
Description=RabbitMQ broker
After=syslog.target network.target
[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
WorkingDirectory=/var/lib/rabbitmq
ExecStart=/usr/sbin/rabbitmq-server
ExecStop=/usr/sbin/rabbitmqctl stop
NotifyAccess=all
TimeoutStartSec=3600
[Install]
WantedBy=multi-user.target

And I found that Type=notify

<<Behavior of notify is similar to simple; however, it is expected that the daemon sends a notification message via sd_notify(3) or an equivalent call when it has finished starting up. systemd will proceed with starting follow-up units after this notification message has been sent. If this option is used, NotifyAccess= (see below) should be set to open access to the notification socket provided by systemd. IfNotifyAccess= is missing or set to none, it will be forcibly set to main. Note that currently Type=notify will not work if used in combination with PrivateNetwork=yes.>>

But we are inside a lx smartos zone so can be some mismatching  between system call  – in this case I’d like to know dtrace, but not until at the moment-

I change the  Unit section in rabbitmq-server.service

from

Type=notify
NotifyAccess=all

to

Type=simple
#NotifyAccess=all

In the end systemctl restart rabbitmq-server is working as expect