Instalare bwm-ng in pfsense

(Postarea e un note to self, dar poate ajuta si pe altii.)

Imi place sa monitorizez traficul de retea pe Linux cu bwm-ng. Stiu ca exista alternative (iftop, vnstat, nmon, etc, etc) dar eu prefer bwm-ng. E un utilitar misto, simplist, ce arata traficul pe fiecare interfata in parte + un total. Something like this:

In Linuxuri e usor de instalat pentru ca exista in repo-uri. In FreeBSD e la fel de usor de instalat ca si in Linux, dar in pfsense nu exista in repo-uri. Nu putem instala prin pkg install pentru ca pfsense nu foloseste repo-urile FreeBSD, dar putem sa ne folosim de pkg add.

pkg add https://pkg.freebsd.org/FreeBSD:11:amd64/quarterly/All/libstatgrab-0.92.txz
pkg add https://pkg.freebsd.org/FreeBSD:11:amd64/quarterly/All/bwm-ng-0.6_2.txz

That’s it. Pachetul libstatgrabe dependinta pentru bwm-ng, de asta il instalam primul.

Swapfile pe btrfs

Incepand cu versiunea de kernel 5.0 btrfs suporta swapfiles. Ca sa cream un swapfile urmam pasii de mai jos, dar mai intai un mic intro legat de swapfiles:

Swapfile-ul e diferit de partitia de swap in sensul ca swapfile-ul sta pe o partitie normala, formatata, si este un fisier in care se tin datele din memorie. Datele se scriu in interiorul fisierului (ca si cum ai salva un fisier text pe partitie). In teorie acest lucru duce la un overhead (date -> fisier -> filesystem -> HDD/SSD) fata de o partitie de swap dedicata (date -> partitie swap ->HDD/SSD) dar daca ajungi sa ai un sistem care este incetinit ca intra in swap des, atunci ai alta problema.

Revenind la swapfile, hai sa vedem cum facem un swapfile pe btrfs. Rulam ca root urmatoarele comenzi:

touch /swapfile
chattr +C /swapfile 
fallocate -l 16G /swapfile
chown root /swapfile 
chmod 600 /swapfile 
mkswap /swapfile 
swapon /swapfile

Apoi scriem in fstab linia

/swapfile none            swap    sw              0       0

and that’s it.

PS: Toata smecheria consta in chattr +C /swapfile. Fara +C, nu o sa putem folosi swapfile-ul. (A file with the ‘C’ attribute set will not be subject to copy-on-write updates.)

Docker + WireGuard

Self note: cand instalati wireguard si docker pe acelasi server, wireguard o sa dea cu fail pentru ca docker modifica policy-ul pe tablela de forward din accept in drop.

Solutie:

 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -P FORWARD ACCEPT; iptables -t nat -A POSTROUTING -s 1.2.3.4/24 -o ens3 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -P FORWARD DROP; iptables -t nat -D POSTROUTING -s 1.2.3.4/24 -o ens3 -j MASQUERADE;

in /etc/wireguard/iftunel.conf si

After=docker.service network.target

in /lib/systemd/system/[email protected]

Query-uri DNS ciudate

Am avut de reinstalat doua sisteme in weekend-ul asta, operatiune simpla, un backup+restore pe un laptop si un Windows reset + instalare programe uzuale pe celalalt. Evident, totul a decurs cum trebuie, n-au fost probleme.

Am zis ca daca tot sunt la partea de mentenanta, sa ma ocup si de serverele de pe Microserver. Le-am updatat si pe alea fara probleme, pana cand am observat in interfata web Pi-hole niste query-uri cel putin ciudate, de la laptop-ul la care am facut restore din backup. Am zis ca are ceva carcalac pe el, mai ales ca l-a folosit maica-mea, asa ca m-am hotarat sa pastrez doar fisierele ei si sa fac o instalare pe curat. In timp ce cautam un stick sa ard un ISO cu Windows 10 pe el, tab-ul de la Pi-hole a ramas deschis si cand ma uit mai bine, observ ca de fapt si celalalt laptop proaspat resetat si instalat face aceleasi interogari ciudate. Privind si mai bine, am vazut de fapt ca am o gramada de device-uri (inclusiv telefoane) care fac chestia asta si nu stiu de ce si de la ce.

Era clar ca ceva se întâmplă, si nu stiam ce. Asa ca am luat un alt laptop proaspat instalat (care stiam ca nu are cum sa fie busit) si m-am dat pe net cu el, in speranta ca o sa prind momentul in care se intampla magaria. Evident, request-urile au aparut iar. Am ajuns la concluzia ca se fac query-uri cand deschid Google Chrome (fiind singura aplicatie care e instalata cam pe toate device-urile, inclusiv telefoane mobile). Mi-am dat seama ca nu are cum sa fie Chrome vinovat, ci o extensie, in mod sigur. Problema e ca pe telefoanele mobile, nu exista extensii pentru Chrome, deci iar m-am dus din lac in put. (Am incercat totusi sa dezactivez toate extensiile si sa le activez pe rand, dar degeaba)

Asa ca m-am pus pe cautat pe Google si am dat peste aceeasi problema pe care o am si eu: se pare ca este un feature Google Chrome si nu un malware, conform link-ului.

Ramane de vazut cum puteam sa aflu ce aplicatie face request-ul DNS daca nu aveam noroc cu Chrome si chiar era un malware. Problema e ca tcpdump nu te ajuta aici, ca request-ul stii ca se face, stii de la ce host, dar nu stii aplicatia. Pentru DNS/tcpdump o sa afiseze ca se face un query DNS, ori ca rulez dig, ori ca rulez tcpdump, curl, wget sau orice alt browser. tcpdump nu stie aplicatia care a cerut query-ul. Nu exista un user-agent pentru interogarile DNS.