O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Serverele VPS sunt frecvent vizate de intrusi. Un tip comun de atac apare în jurnalele de sistem ca sute de încercări de autentificare ssh neautorizate. Configurarea unui firewall este foarte utilă, dar de la sine nu poate controla în mod adecvat încercările de intruziune perturbatoare.
Acest tutorial arată cum să construiți o barieră de intruziune îmbunătățită pentru FreeBSD folosind două programe, ipfw
firewall și sshguard
. SSHGuard este un mic program suplimentar care monitorizează jurnalele de sistem pentru intrări „abuzive”. Când infractorii încearcă să obțină acces, sshguard
solicită ipfw
să blocheze traficul care provine de la adresa IP a contravenientului. Infractorul este apoi închis efectiv.
Odată înțeles cum funcționează aceste programe, gestionarea protecției serverului este destul de simplă. Deși acest ghid este axat pe configurarea FreeBSD, părți din acesta se aplică altor sisteme de operare și firewall.
FreeBSD oferă 3 firewall - uri în implicite ( GENERIC
kernel), ipfw
, pf
și ipfilter
. Fiecare are avantaje și fani, dar ipfw
este software-ul pentru firewall-ul autohton FBSD și destul de simplu de utilizat în scopurile noastre. Este demn de remarcat faptul că ipfw
face multe lucruri așa cum arată pagina sa de manieră, cu toate că funcțiile precum NAT, modelarea traficului etc. nu sunt necesare pentru situația tipică VPS. Din fericire, caracteristicile de bază ale firewall-ului răspund cu ușurință cerințelor noastre.
Pentru a porni firewallul la momentul de pornire, adăugați următoarele la /etc/rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"
service
Comanda este disponibil pentru a porni / opri manual firewall - ul:
[user@vultr ~]$ sudo service ipfw start
Desigur, ipfw
nu va face nimic până când nu va adăuga reguli, adesea dintr-un fișier, în acest exemplu localizat la /usr/local/etc/IPFW.rules
. Fișierul de reguli ar putea fi de fapt localizat oriunde sau are orice nume, atât timp cât se potrivește cu parametrul "firewall_script". Fișierul de reguli este descris în detaliu mai jos.
sshguard
vine în mai multe arome pentru utilizare cu diferite firewall-uri. Utilizați pkg
utilitarul pentru a obține și instala sshguard-ipfw
:
[user@vultr ~]$ sudo pkg install sshguard-ipfw
În cele mai multe cazuri, toate acestea trebuie să facă. Variabila corespunzătoare este introdusă automat /etc/rc.conf
pentru a începe pornirea:
sshguard_enable="YES"
În mod normal, valorile implicite funcționează bine. Dacă sunt necesare valori diferite, sshguard
pagina manuală oferă informații detaliate despre parametri:
# 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"
Puteți începe sshguard
cu service
invocarea obișnuită :
[user@vultr ~]$ sudo service sshguard start
Cea mai grea parte este crearea unui set de reguli pentru firewall. ipfw
poate face uz de /etc/rc.firewall
scriptul furnizat , dar trebuie modificat pentru a se adapta SSHGuard, precum și pentru diferite scenarii operaționale. Câteva pagini web și FreeBSD Manual au informații utile despre acest lucru. Totuși, scrierea unui fișier de reguli nu este atât de greu, în afară de asta, un set de reguli personalizate poate fi mai ușor de înțeles și de schimbat atunci când este necesar.
O caracteristică importantă a ipfw
regulilor este aceea că primul meci câștigă, ceea ce înseamnă că ordinea regulilor este importantă. În ipfw
, fiecare regulă este o comandă, iar fișierul de reguli este un script shell executabil. Acest lucru permite modificarea setului de reguli prin modificarea regulilor, apoi executarea fișierului de reguli ca script-ul shell este:
[user@vultr /usr/local/etc]$ sudo ./IPFW.rules
În general, un fișier de reguli va defini o variabilă pentru ipfw
comandă, apoi va șterge regulile curente, va emite reguli generice, apoi va proceda la stabilirea regulilor „out”, urmate de regulile „in”. Pagina manuală ipfw și alte resurse conțin o mulțime de informații despre structura regulilor și opțiunile, care sunt numeroase pentru a spune cel mai puțin.
De când versiunea FreeBSD sshguard a fost actualizată la versiunea 1.6.2, metoda de introducere a regulilor de blocare pentru infractori sa schimbat. Acum, adresele infractorilor sunt păstrate într-un tabel ipfw (tabelul 22 pentru a fi specific), în loc să fie inserate în regulile de mai sus de 55000 ca înainte.
Din fericire, este destul de simplu să configurați fișierul de reguli pentru a utiliza tabelul. Este doar o chestiune de a pune regula mesei la locul potrivit și de a vă asigura că folosiți sintaxa corectă atunci când scrieți regula.
Când sshguard
găsește un infractor, introduce adresa contravenientului în lista sa neagră și, de asemenea, introduce adresa în ipfw
tabel, astfel încât să „declanșeze” refuzul accesului. Această regulă va îndeplini aceste scopuri:
01000 deny ip from table\(22\) to any
Este încă necesar să puneți reguli care să permită servicii de intrare peste 01000 în acest caz. De exemplu, să spunem că adresa 10.20.30.40
este un infractor din tabelul 22 și avem această regulă ipfw:
56420 allow tcp from any to me dst-port 22 in via $vif
Deoarece ipfw
întâlnirile regula 01000 înainte de regula 56420 , 10.20.30.40
este blocat . Acesta nu va fi niciodată văzut de regula „permiteți 22 în”. Dacă regula de acordare ar avea un număr „regulat” precum 00420 , traficul necorespunzător ar fi blocat și niciodată blocat (deoarece 00420 este mai mic decât 01000 și „primul meci câștigă”).
O caracteristică frumoasă a versiunii actualizate este că acum când sshguard pornește toate adresele din lista neagră sunt adăugate în tabel și sunt disponibile pentru a bloca infractorii care intră fără întârziere. Lista neagră este cumulativă și se păstrează între sesiuni.
În acest moment este probabil să arătați un ipfw
set complet de reguli modificat pentru sshguard
. Comentariile ar trebui să faciliteze respectarea logicii regulilor:
#!/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
Necesitățile sistemului variază și diferite opțiuni de porturi de blocat sau deblocat sunt reflectate în regulă. După terminarea regulilor, salvați fișierul /usr/local/etc/IPFW.rules
și porniți serviciile FBSD:
# service ipfw start
# service sshguard start
Firewall-ul augmentat ar trebui să funcționeze acum! Verificați sshguard
:
[user@vultr ~]$ sudo pgrep -lfa ssh
Dacă sshguard
este în curs de execuție, se afișează linia de comandă pid și completă:
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
Acest lucru arată regulamentul firewall-ului cu statistici și ultima dată când un pachet a corespuns cu regula:
[user@vultr ~]$ sudo ipfw -cat list
După ore sau zile, adresele infractorilor sunt adăugate pe lista neagră și, de asemenea, în tabelul 22. Pentru a vizualiza toate adresele din tabel, utilizați această comandă:
ipfw table 22 list
Rezultatul este tipărit ca:
10.10.10.118/32 0
10.10.10.72/32 0
...
După cum s-a descris mai sus, conexiunile de la aceste adrese sunt interzise. Desigur, la prima rulare sshguard
nu vor mai exista adrese în listă, dar în timp poate ajunge destul de mult. O opțiune este crearea de reguli de blocare separate pentru adrese cu mai multe intrări din tabel și apoi ștergerea lor din lista neagră.
Este o idee bună să verificați ocazional jurnalele pentru a vă asigura că intruziunile sunt controlate. În general, /var/log/auth.log
și /var/log/security
sunt informative. S-ar putea să apară lacune sau erori în acoperirea serviciilor de rețea. Modificarea setului de reguli pentru firewall după cum este necesar este o parte normală a administrării serverului.
În versiunile anterioare sshguard, atunci când /var/db/sshguard/blacklist.db
fișierul a crescut, acesta ar putea împiedica sshguard
pornirea de la pornirea sistemului. Eliminarea sau redenumirea fișierului din lista neagră a permis sshguard
începerea. Această problemă pare a fi rezolvată în cea mai recentă versiune sshguard, astfel că această soluție probabil nu mai este necesară.
Asigurați-vă că dați o listă albă a adresei IP de la care sunteți conectat la sesiunea SSH. Dacă vă blocați din greșeală, vă puteți conecta întotdeauna la Consola noVNC din https://my.vultr.com și lista cu IP-ul dvs. alb.
Rezumând, utilizând combinația de ipfw
și sshguard
vă ajută să vă păstrați sistemul FreeBSD în siguranță și să-și facă treaba. Minimizarea activității intrusive a rețelei are un beneficiu suplimentar: mai puțin „zgomot” facilitează urmărirea și reglarea funcționării sistemului, contribuind la un server mai sigur, care rulează mai bine.
Protejarea eficientă a unui sistem / server FreeBSD nu este deosebit de complicată. În timp ce este necesar un efort modest pentru a-l pune în funcțiune, acesta plătește într-un VPS substanțial mai mare și securitatea proiectului.
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.
Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.
Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.
Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.
CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?
Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.
Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!
Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.
Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe