Millora de la seguretat per a FreeBSD mitjançant IPFW i SSHGuard

Millora de la seguretat per a FreeBSD mitjançant IPFW i SSHGuard

Els servidors VPS solen ser atacats per intrusos. Un tipus comú d'atac apareix als registres del sistema com a centenars d'intents d'inici de sessió ssh no autoritzats. Configurar un tallafoc és molt útil, però per si sol pot no controlar adequadament els intents d'intrusió pertorbadores.

Aquest tutorial mostra com construir una barrera d'intrusió millorada per a FreeBSD mitjançant dos programes, el ipfwtallafoc i sshguard. SSHGuard és un petit programa addicional que supervisa els registres del sistema per a les entrades "abusives". Quan els delinqüents intenten accedir-hi, sshguards'indica ipfwper bloquejar el trànsit provinent de l'adreça IP del delinqüent. Aleshores, el delinqüent queda fora de casa.

Un cop s'entén com funcionen aquests programes, gestionar la protecció del servidor és bastant senzill. Tot i que aquesta guia se centra en la configuració de FreeBSD, algunes s'apliquen a altres sistemes operatius i programari de tallafoc.

Pas 1. Configuració de l'IPFW

FreeBSD proporciona 3 tallafocs al seu GENERICnucli predeterminat ( ), ipfw, pf, i ipfilter. Cadascun té avantatges i aficionats, però ipfwés el programari de tallafoc natiu de FBSD i bastant senzill d'utilitzar per als nostres propòsits. Val la pena assenyalar que ipfwfa moltes coses tal com mostra la seva pàgina de manual, però no es necessiten capacitats com NAT, modelatge de trànsit, etc. per a la situació típica de VPS. Afortunadament, les característiques bàsiques del tallafoc compleixen fàcilment els nostres requisits.

Per iniciar el tallafoc en el moment de l'arrencada, afegiu el següent a /etc/rc.conf:

firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"

L' serviceordre està disponible per iniciar/aturar el tallafoc manualment:

[user@vultr ~]$ sudo service ipfw start

Naturalment, ipfwno farà res fins que afegeix regles, sovint d'un fitxer, en aquest exemple situat a /usr/local/etc/IPFW.rules. De fet, el fitxer de regles es podria localitzar a qualsevol lloc o tenir qualsevol nom, sempre que coincideixi amb el paràmetre "firewall_script". El fitxer de regles es descriu amb detall a continuació.

Pas 2. Instal·leu i configureu SSHGuard

sshguardve en diversos sabors per utilitzar-los amb diferents tallafocs. Utilitzeu la pkgutilitat per obtenir i instal·lar sshguard-ipfw:

[user@vultr ~]$ sudo pkg install sshguard-ipfw

En la majoria dels casos, això és tot el que cal fer. La variable adequada s'insereix automàticament a /etc/rc.confper començar a l'arrencada:

sshguard_enable="YES"

Els valors predeterminats normalment funcionen bé. Si calen valors diferents, la sshguardpàgina de manual ofereix informació detallada sobre els paràmetres:

# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"

Podeu començar sshguardamb la serviceinvocació habitual :

[user@vultr ~]$ sudo service sshguard start

Pas 3. Creeu un script de regles

La part més difícil és crear el conjunt de regles del tallafoc. ipfwpot fer ús de l' /etc/rc.firewallscript proporcionat , però s'ha de modificar per adaptar-se a SSHGuard, així com a diferents escenaris operatius. Algunes pàgines web i el manual de FreeBSD tenen informació útil sobre com fer-ho. Tanmateix, escriure un fitxer de regles no és tan difícil, a més, un conjunt de regles personalitzat pot ser més fàcil d'entendre i canviar quan sigui necessari.

Una característica important de les ipfwregles és que el primer partit guanya, la qual cosa significa que l'ordre de les regles és important. A ipfw, cada regla és una ordre i el fitxer de regles és un script d'intèrpret d'ordres executable. Això permet canviar el conjunt de regles modificant les regles i executant el fitxer de regles com a script de shell que és:

[user@vultr /usr/local/etc]$ sudo ./IPFW.rules

En general, un fitxer de regles definirà una variable per a l' ipfwordre, després esborrarà les regles actuals, emetrà regles genèriques i, a continuació, procedirà a establir les regles "extrem", seguides de les regles "in". La pàgina de manual d'ipfw i altres recursos contenen una gran quantitat d'informació sobre l'estructura de regles i opcions que són nombroses com a mínim.

Com que la versió sshguard de FreeBSD s'ha actualitzat a la versió 1.6.2, el mètode d'inserció de regles de bloqueig per als infractors ha canviat. Ara les adreces dels delinqüents es mantenen en una taula ipfw (taula 22 per concretar), en lloc d'inserir-se a les regles per sobre de 55000 com abans.

Afortunadament, és bastant senzill configurar el fitxer de regles per utilitzar la taula. Només és qüestió de posar la regla de la taula al lloc correcte i assegurar-se d'utilitzar la sintaxi correcta quan escrigui la regla.

Quan sshguardtroba un delinqüent, posa l'adreça del delinqüent a la seva llista negra i també insereix l'adreça a la ipfwtaula de manera que "activarà" la denegació d'accés. Aquesta norma assolirà aquests propòsits:

01000 deny ip from table\(22\) to any

Encara és necessari posar regles que permetin els serveis d'entrada per sobre de 01000 en aquest cas. Per exemple, suposem que l'adreça 10.20.30.40és un infractor a la taula 22, i tenim aquesta regla ipfw:

56420 allow tcp from any to me dst-port 22 in via $vif

Com que es ipfwtroba la regla 01000 abans de la regla 56420 , 10.20.30.40està bloquejada . No es veurà mai amb la regla de "permetre 22 polzades". Si la regla de permetre tingués un número "normal" com 00420 , el trànsit dolent es deixaria entrar i no es bloquejaria mai (perquè 00420 és inferior a 01000 i "el primer partit guanya").

Una bona característica de la versió actualitzada és que ara, quan sshguard s'inicia, totes les adreces de la llista negra s'afegeixen a la taula i estan disponibles per bloquejar els delinqüents entrants sense demora. La llista negra és acumulativa i es conserva entre sessions.

En aquest punt, probablement sigui raonable mostrar un ipfwconjunt de regles complet modificat per a sshguard. Els comentaris haurien de facilitar bastant seguir la lògica de la regla:

#!/bin/sh

# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.

# Flush all rules before we begin.
ipfw -q -f flush

# Set rules command prefix
cmd="ipfw -q add "

vif="vtnet0"

# allow all for localhost
$cmd 00010 allow ip from any to any via lo0

# checks stateful rules.  If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state

# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state

# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state

# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state

# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state

# allow icmp re: ping, et. al. 
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state

# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state

# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state

# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state

# otherwise deny outbound packets
# outbound catchall.  
$cmd 00299 deny log ip from any to any out via $vif

# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif

# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81 
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif

# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif

# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif

# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state

$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2

# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any

# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range 
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state

# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif

# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any

Pas 4. Inici i prova

Les necessitats del sistema varien i les diferents opcions de ports per bloquejar o desbloquejar es reflecteixen al conjunt de regles. Un cop finalitzat el conjunt de regles, deseu el fitxer a /usr/local/etc/IPFW.rules, i inicieu els serveis FBSD:

 # service ipfw start
 # service sshguard start

El tallafoc augmentat s'hauria d'executar ara! Comprovar sshguard:

 [user@vultr ~]$ sudo pgrep -lfa ssh

Si sshguards'està executant, es mostren el seu pid i la línia d'ordres completa:

720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid

Això mostra el conjunt de regles del tallafoc amb estadístiques i la darrera vegada que un paquet va coincidir amb la regla:

 [user@vultr ~]$ sudo ipfw -cat list

Després d'hores o dies, les adreces dels delinqüents s'afegeixen a la llista negra i també a la taula 22. Per veure totes les adreces de la taula, utilitzeu aquesta ordre:

ipfw table 22 list

El resultat s'imprimeix com:

10.10.10.118/32 0
10.10.10.72/32 0
...

Com s'ha descrit anteriorment, les connexions des d'aquestes adreces no estan permeses. Per descomptat, a la primera execució sshguardno hi haurà cap adreça a la llista, però amb el temps pot arribar a ser força llarga. Una opció és crear regles de bloqueig separades per a adreces amb diverses entrades a la taula i després eliminar-les de la llista negra.

Pas 5. Mantenir la vigilància...

És una bona idea comprovar de tant en tant els registres per assegurar-se que les intrusions estan controlades. En general, /var/log/auth.logi /var/log/securitysón informatius. Els buits o errors en la cobertura dels serveis de xarxa poden ser evidents. Modificar el conjunt de regles del tallafoc segons sigui necessari és una part normal de l'administració del servidor.

En versions anteriors de sshguard, quan el /var/db/sshguard/blacklist.dbfitxer s'havia fet gran, podia impedir que s'iniciés a l' sshguardarrencada del sistema. Es permet l'inici de l'eliminació o el canvi de nom del fitxer de la llista negra sshguard. Sembla que aquest problema s'ha solucionat a l'última versió de sshguard, de manera que probablement aquesta solució ja no sigui necessària.

Assegureu-vos de posar a la llista blanca l'adreça IP des de la qual esteu connectat a la sessió SSH. Si et bloqueges accidentalment, sempre pots connectar-te a la consola noVNC a https://my.vultr.com i incloure la teva IP a la llista blanca.

En resum, utilitzar la combinació de ipfwi sshguardajuda a mantenir el vostre sistema FreeBSD segur i fent la seva feina. Minimitzar l'activitat intrusiva de la xarxa té un avantatge addicional: menys "soroll" facilita el seguiment i l'ajust del funcionament del sistema, contribuint a un servidor més segur i que funcioni millor.

Protegir eficaçment un sistema/servidor FreeBSD no és especialment complicat. Tot i que cal un esforç modest per posar-lo en marxa, val la pena en un VPS i una seguretat del projecte substancialment superiors.


Com instal·lar Tiny Tiny RSS Reader en un FreeBSD 11 FAMP VPS

Com instal·lar Tiny Tiny RSS Reader en un FreeBSD 11 FAMP VPS

Utilitzeu un sistema diferent? Tiny Tiny RSS Reader és un lector i agregador de notícies basats en web (RSS/Atom) de codi obert i gratuït, dissenyat per

Com instal·lar Wiki.js a FreeBSD 11

Com instal·lar Wiki.js a FreeBSD 11

Utilitzeu un sistema diferent? Wiki.js és una aplicació wiki moderna de codi obert i gratuïta construïda a Node.js, MongoDB, Git i Markdown. El codi font de Wiki.js és públic

Com instal·lar Pagekit 1.0 CMS en un VPS FreeBSD 11 FAMP

Com instal·lar Pagekit 1.0 CMS en un VPS FreeBSD 11 FAMP

Utilitzeu un sistema diferent? Pagekit 1.0 CMS és un sistema de gestió de continguts (CMS) bonic, modular, extensible i lleuger, gratuït i de codi obert amb

Com instal·lar MODX Revolution en un FreeBSD 11 FAMP VPS

Com instal·lar MODX Revolution en un FreeBSD 11 FAMP VPS

Utilitzeu un sistema diferent? MODX Revolution és un sistema de gestió de continguts (CMS) ràpid, flexible, escalable, de codi obert i de grau empresarial escrit en PHP. És jo

Configura lOpenBSD 5.5 de 64 bits

Configura lOpenBSD 5.5 de 64 bits

Aquest article us explica la configuració d'OpenBSD 5.5 (64 bits) a KVM amb un Vultr VPS. Pas 1. Inicieu sessió al tauler de control de Vultr. Pas 2. Feu clic a DEPLOY

Com instal·lar osTicket a FreeBSD 12

Com instal·lar osTicket a FreeBSD 12

Utilitzeu un sistema diferent? osTicket és un sistema d'entrades d'atenció al client de codi obert. El codi font osTicket està allotjat públicament a Github. En aquest tutorial

Com instal·lar Flarum Forum a FreeBSD 12

Com instal·lar Flarum Forum a FreeBSD 12

Utilitzeu un sistema diferent? Flarum és un programari de fòrum de nova generació gratuït i de codi obert que fa que la discussió en línia sigui divertida. El codi font de Flarum està allotjat o

Com habilitar TLS 1.3 a Nginx a FreeBSD 12

Com habilitar TLS 1.3 a Nginx a FreeBSD 12

Utilitzeu un sistema diferent? TLS 1.3 és una versió del protocol Transport Layer Security (TLS) que es va publicar el 2018 com a estàndard proposat a RFC 8446

Instal·leu WordPress a OpenBSD 6.2

Instal·leu WordPress a OpenBSD 6.2

Introducció WordPress és el sistema de gestió de continguts dominant a Internet. Potencia tot, des de blocs fins a llocs web complexos amb contingut dinàmic

Com instal·lar Subrion 4.1 CMS en un VPS FreeBSD 11 FAMP

Com instal·lar Subrion 4.1 CMS en un VPS FreeBSD 11 FAMP

Utilitzeu un sistema diferent? Subrion 4.1 CMS és un sistema de gestió de continguts (CMS) de codi obert potent i flexible que ofereix un contingut intuïtiu i clar.

Com configurar DJBDNS a FreeBSD

Com configurar DJBDNS a FreeBSD

Aquest tutorial us mostrarà com configurar un servei DNS que sigui fàcil de mantenir, fàcil de configurar i que, en general, sigui més segur que el BIN clàssic.

Com instal·lar Nginx, MySQL i PHP (FEMP) Stack a FreeBSD 12.0

Com instal·lar Nginx, MySQL i PHP (FEMP) Stack a FreeBSD 12.0

Una pila FEMP, que és comparable a una pila LEMP a Linux, és una col·lecció de programari de codi obert que normalment s'instal·la conjuntament per habilitar un FreeBS.

Instal·lant MongoDB a FreeBSD 10

Instal·lant MongoDB a FreeBSD 10

MongoDB és una base de dades NoSQL de classe mundial que s'utilitza amb freqüència en aplicacions web més noves. Proporciona consultes, fragmentació i rèplica d'alt rendiment

Com instal·lar la Monica a FreeBSD 12

Com instal·lar la Monica a FreeBSD 12

Utilitzeu un sistema diferent? Monica és un sistema de gestió de relacions personals de codi obert. Penseu en això com un CRM (una eina popular utilitzada pels equips de vendes a th

OpenBSD com a solució de comerç electrònic amb PrestaShop i Apache

OpenBSD com a solució de comerç electrònic amb PrestaShop i Apache

Introducció Aquest tutorial mostra OpenBSD com a solució de comerç electrònic amb PrestaShop i Apache. Apache és necessari perquè PrestaShop té una UR complexa

Instal·lació de Fork CMS a FreeBSD 12

Instal·lació de Fork CMS a FreeBSD 12

Utilitzeu un sistema diferent? Fork és un CMS de codi obert escrit en PHP. El codi font de Forks està allotjat a GitHub. Aquesta guia us mostrarà com instal·lar Fork CM

Com instal·lar Directus 6.4 CMS en un VPS FreeBSD 11 FAMP

Com instal·lar Directus 6.4 CMS en un VPS FreeBSD 11 FAMP

Utilitzeu un sistema diferent? Directus 6.4 CMS és un sistema de gestió de contingut sense cap (CMS) potent i flexible, gratuït i de codi obert que proporciona als desenvolupadors

Millora de la seguretat per a FreeBSD mitjançant IPFW i SSHGuard

Millora de la seguretat per a FreeBSD mitjançant IPFW i SSHGuard

Els servidors VPS solen ser atacats per intrusos. Un tipus comú d'atac apareix als registres del sistema com a centenars d'intents d'inici de sessió ssh no autoritzats. Preparant

Configura httpd a OpenBSD

Configura httpd a OpenBSD

Introducció L'OpenBSD 5.6 va introduir un nou dimoni anomenat httpd, que admet CGI (mitjançant FastCGI) i TLS. No cal cap treball addicional per instal·lar el nou http

Configura iRedMail a FreeBSD 10

Configura iRedMail a FreeBSD 10

Aquest tutorial us mostrarà com instal·lar el grup iRedMail en una nova instal·lació de FreeBSD 10. Hauríeu d'utilitzar un servidor amb almenys un gigabyte o

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació