Aki szervert üzemeltet az a dedikáció után szinte azonnal szembesül azzal, hogy a publikus rendszert percenként támadják, és nagyon nem mindegy, hogy milyen portokat hagyunk nyitva, azok milyen geológiai tartományban érhetőek el. A kiszolgálóbiztonság növelése egy olyan küldetés amit nem hagyhatunk figyelmen kívül, nem lehet halogatni, és nem lehet félvállról venni. A legkisebb hiba a kiszolgáló feltörésével jár!
A kiszolgálónk biztonságát kialakíthatjuk és bővíthetjük is blackPanther OS alatt számos eszközzel, mint például:
Fail2Ban
A Fail2ban egy log-elemző alkalmazás, amely figyeli a rendszer naplóit és az automatizált támadás jellemzőit.
0 1 2 | telepites fail2ban |
Xtables-addons
Programcsomagok telepítése
0 1 2 | telepites xtables-geoip-3.2-1bP.noarch.rpm xtables-addons-3.2-1bP.x86_64.rpm |
A kernelmodulokra is szükség lesz
0 1 2 3 4 5 6 7 8 9 | # A kernelverziónkkal azonos csomag már biztosítja a kernelmodulokat csomagkereses xtables-addons .... xtables-addons-kernel-4.18.16-server-1bP-3.2-1bP.x86_64.rpm .... # VAGY! # eltérő kernel esetén használhatjuk a DKMS változatot telepites dkms-xtables-addons |
Létre kell hoznunk az adatbázist amiből dolgozni fog
Adatbázis létrehozása
0 1 2 3 4 5 6 7 8 9 | rootmod #[enter] jelszó: cd mkdir -o geoip && cd geoip /usr/libexec/xtables-addons/xt_geoip_dl /usr/libexec/xtables-addons/xt_geoip_build GeoIPCountryWhois.csv mkdir -p /usr/share/xt_geoip cp -r {HU,GB} /usr/share/xt_geoip |
Iptables szabály (ezt a shorewall-ba is felvezethetjük szükség szerint)
0 1 2 3 | iptables -A INPUT -m geoip ! --src-cc CO,UN,TR,YC,OD,ES -i -m conntrack --ctstate NEW -j DROP ip6tables -A INPUT -m geoip ! --src-cc CO,UN,TR,YC,OD,ES -i -m conntrack --ctstate NEW -j DROP |
Iptables
0 1 2 | telepites iptables |
Shorewall
0 1 2 | telepites shorewall |
GeoIP
0 1 2 | telepites <span style="background-color: #ffffff; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px;">geoip geoip-database</span> |
Cron frissítőfolyamat minta
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | cat /etc/cron.weekly/geoipupdate.sh #!/bin/bash # blackPanther OS Server Cron Service for GeoIP Update Log=logger cd /var/tmp wget -q https://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz if [ -f GeoIP.dat.gz ] then gzip -d GeoIP.dat.gz rm -f /usr/share/GeoIP/GeoIP.dat mv -f GeoIP.dat /usr/share/GeoIP/GeoIP.dat $Log "The GeoIP library updated" else $Log "The GeoIP library could not be downloaded and updated" fi wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz if [ -f GeoLiteCity.dat.gz ] then gzip -d GeoLiteCity.dat.gz rm -f /usr/share/GeoIP/GeoLiteCity.dat mv -f GeoLiteCity.dat /usr/share/GeoIP/GeoLiteCity.dat $Log "The GeoCity library updated" else $Log "The GeoLiteCity library could not be downloaded and updated" fi |
Online Geolokáció azonosítás
Az ipinfo.io kiszolgálóval json kimenetet kapunk melyet feldolgozhatunk
0 1 2 3 4 5 6 7 8 9 10 11 | <span class="pln">$ curl ipinfo</span><span class="pun">.</span><span class="pln">io</span><span class="pun">/</span><span class="lit">47.144</span><span class="pun">.</span><span class="lit">148.253</span> <span class="pun">{</span> <span class="str">"ip"</span><span class="pun">:</span> <span class="str">"47.144.148.253"</span><span class="pun">,</span> <span class="str">"city"</span><span class="pun">:</span> <span class="str">"Hermosa Beach"</span><span class="pun">,</span> <span class="str">"region"</span><span class="pun">:</span> <span class="str">"California"</span><span class="pun">,</span> <span class="str">"country"</span><span class="pun">:</span> <span class="str">"US"</span><span class="pun">,</span> <span class="str">"loc"</span><span class="pun">:</span> <span class="str">"33.8622,-118.3990"</span><span class="pun">,</span> <span class="str">"org"</span><span class="pun">:</span> <span class="str">"AS5650 Frontier Communications of America, Inc."</span><span class="pun">,</span> <span class="str">"postal"</span><span class="pun">:</span> <span class="str">"90254"</span> <span class="pun">}</span> |
De megadhatunk egy GET paramétert az IP címmel, és pontosabban megkapjuk a kívánt értéket
Pár példa a CURL-ra
0 1 2 3 4 5 6 7 | <span class="pln">$ curl ipinfo</span><span class="pun">.</span><span class="pln">io</span><span class="pun">/</span><span class="lit">47.144</span><span class="pun">.</span><span class="lit">148.253</span><span class="pun">/</span><span class="pln">country US $ curl ipinfo</span><span class="pun">.</span><span class="pln">io</span><span class="pun">/</span><span class="lit">47.144</span><span class="pun">.</span><span class="lit">148.253</span><span class="pun">/</span><span class="pln">region </span><span class="typ">California</span><span class="pln"> $ curl ipinfo</span><span class="pun">.</span><span class="pln">io</span><span class="pun">/</span><span class="lit">47.144</span><span class="pun">.</span><span class="lit">148.253</span><span class="pun">/</span><span class="pln">city </span><span class="typ">Hermosa</span> <span class="typ">Beach</span> |
Illetve a geoip csomag ha telepítve van
0 1 2 3 4 5 6 | #geoiplookup vagy geoiplookup6 geoiplookup6 2a00:1450:400d:805::200e GeoIP Country V6 Edition: IE, Ireland GeoIP ASNum V6 Edition: AS15169 Google LLC |
IPSet
Szükségünk lesz egy blokkolási listára (blocklist.txt) amit erről az oldalról szerezhetünk be:
https://www.ip2location.com/free/visitor-blocker#form
Nyomjuk le a Ctrl gombot és kattintással egyesével tudjuk kiválasztani a tiltó vagy engedélyezési listát.
Egynél több ország kiválasztásához már regisztráció szükséges.
A kimeneti / letöltési formátum: „Linux IPtables” legyen
Script a szabály létrehozásához
0 1 2 3 4 5 6 7 8 | #!/bin/bash # Script to process ip ranges to ban using IPSet and IPTables ipset create countryblock hash:net while read line; do ipset add countryblock $line; done < blocklist.txt iptables -I INPUT -m set --match-set countryblock src -j DROP |
Egyszerű példa arra, hogy tiltsuk ki az SSH támadások forrásait.
0 1 2 3 4 5 6 | # ez a ciklus minden olyan IP-t blokkol amelyik érvénytelen felhasználónévvel próbálkozott for i in $(cat /var/log/auth.log | grep -v grep | grep sshd | grep "Disconnected from invalid user" | awk '{print $11}') ;do shorewall reject $i done |
Hozzászólások lezárva