Linux hálózati adminisztráció Tantárgykód: MIN7K0IN-T Göcs László mérnöktanár Pallasz Athéné Egyetem GAMF Műszaki és Informatikai Kar Informatika Tanszék
10.
2016-17. tanév 1. félév
A Linux kernel tartalmazza a Netfilter alrendszert, amely a kiszolgálóra irányuló vagy azon átmenő hálózati forgalom sorsának befolyásolására vagy eldöntésére használható. Minden modern linuxos tűzfalmegoldás ezt a rendszert használja csomagszűrésre.
ufw - Uncomplicated Firewall Alapértelmezésben az ufw le van tiltva. Az ufw kézikönyvoldala szerint:
„Az ufw-t nem teljes körű tűzfalszolgáltatások biztosítására tervezték a parancsfelületen keresztül, ehelyett lehetővé teszi egyszerű szabályok könnyű felvételét vagy eltávolítását.”
UFW példa •Első lépésként be kell kapcsolni az ufw-t.
sudo ufw enable
•Nyissuk ki az SSH portot:
sudo ufw allow 22
•A szabályok számozott formátumban is felvehetők:
sudo ufw insert 1 allow 80
•Hasonlóképpen a nyitott port bezárásához:
sudo ufw deny 22
•Szabály eltávolításához használja a delete parancsot a szabály előtt:
sudo ufw delete deny 22
UFW példa •Konkrét hosztnak adjuk meg az SSH-t:
sudo ufw allow proto tcp from 192.168.0.2 to any port 22
Az ufw parancs a --dry-run kapcsoló hatására kiírja az eredményül kapott szabályokat, de nem alkalmazza azokat.
A HTTP port kinyitásához mi kerülne alkalmazásra: sudo ufw --dry-run allow http
Az ufw letiltható: sudo ufw disable
A tűzfal állapotának megjelenítése: sudo ufw status Részletesebb állapotinformációk: sudo ufw status verbose A számozott formátum megjelenítéséhez: sudo ufw status numbered
Ha a kinyitni vagy bezárni kívánt port az /etc/services fájlban van meghatározva, akkor a szám helyett a portnevet is használhatunk. 22 -> ssh sudo ufw deny ssh
A portokat megnyitó alkalmazások tartalmazhatnak egy ufw profilt, amely részletezi az alkalmazás megfelelő működéséhez szükséges portokat. Ezek a profilok az /etc/ufw/applications.d könyvtárban vannak, és az alapértelmezett portok módosításakor szerkeszthetők.
A profilokat telepített alkalmazások felsorolásához adjuk ki a következő parancsot: sudo ufw app list Az alkalmazásprofil használata a port forgalmának engedélyezéséhez hasonló módon, a következő parancs kiadásával érhető el: sudo ufw allow Samba
A bővített parancs is elérhető: ufw allow from 192.168.0.0/24 to any app Samba
IP maszkolás
Az IP-maszkolás célja, hogy a privát, nem közvetíthető IP-címekkel rendelkező gépek elérjék az internetet a maszkolást végző gépen keresztül.
A magánhálózatból az internetre irányuló forgalmat úgy kell módosítani, hogy visszairányítható legyen a kérést küldő gépre. Ehhez a kernelnek módosítania kell minden csomag forrás IP-címét, hogy a válaszok hozzá legyenek visszairányítva, a kérést küldő gép IP-címe helyett, különben a válaszok nem érkeznének meg.
A Linux a kapcsolatkövetést (conntrack) használja a gépek és a hozzájuk tartozó kapcsolatok nyilvántartására, és a visszaküldött csomagok ennek megfelelő átirányítására. A hálózatát elhagyó forgalom így „maszkolva” lesz, mintha az Ubuntu átjárógépről indult volna. Ezt a folyamatot a Microsoft dokumentációi internetkapcsolat megosztásának hívják.
Az IP-maszkolás egyéni ufw szabályok használatával érhető el. Ez azért lehetséges, mert az ufw jelenlegi háttérprogramja az iptablesrestore, amelynek szabályfájljai az /etc/ufw/*.rules alatt találhatók. Ezek a fájlok kiválóan alkalmasak az ufw nélkül használt örökölt iptables szabályok, valamint az inkább hálózati átjárókra és hidakra jellemző szabályok felvételére. A szabályok két különböző fájlba vannak osztva: az ufw parancssori szabályok előtt, és az ufw parancssori szabályok után végrehajtandó szabályok.
Első lépésként a csomagtovábbítást kell engedélyezni az ufw-ben. Két beállítófájlt kell módosítani, az /etc/default/ufw fájlban módosítsa DEFAULT_FORWARD_POLICY értékét „ACCEPT”-re. Ezután szerkessze az /etc/ufw/sysctl.conf fájlt, és vegye ki megjegyzésből a következőt:
net/ipv4/ip_forward=1
# nat tábla szabályai
*nat :POSTROUTING ACCEPT [0:0] # Forgalom továbbítása az eth1-ről az eth0-n keresztül. -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE # Ne törölje a „COMMIT” sort, különben ezen NAT-tábla szabályok nem kerülnek feldolgozásra
COMMIT ufw disable && sudo ufw enable
Tűzfal - iptables iptables táblák: A különböző feladatokhoz táblákat használ 3 beépített tábla: nat, filter, mangle A táblákra a –t kapcsolóval hivatkozhatunk. iptables láncok: A táblák láncokat tartalmaznak, ezek a láncok tartalmazzák a szabályokat. Láncok használata:
-N Új láncot hoz létre.
-X Üres lánc törlésére szolgál. -P Megváltoztatja az irányelvet beépített láncon. -L Adott lánc szabályait listázza. -F Adott lánc összes szabályának törlése. -Z A csomag és byte számlálók nullázására szolgál egy adott lánc valamennyi szabályában.
Tűzfal – NAT tábla A címfordításért felel 3 beépített lánca van: - preruoting: útválasztás előtt hajtódik végre (DNAT) - postrouting: útválasztás után hajtódik végre (SNAT) - output: kimeneti lánc, amelyik gépen fut a tűzfal, azon a prerouting lánc nem hajtódik végre, ezért itt is be kell állítani a szabályokat.
Tűzfal – FILTER tábla Szűrésekre
használjuk A beépített láncai: - input: bemeneti lánc - output: kimeneti lánc - forward: továbbítandó csomagok
Tűzfal – MANGLE tábla Csomagmódosításra A
láncai: - prerouting: Abban az esetben használjuk, ha pl az input és a forward láncban is szerepel egy szabály. - output: kimenet
Tűzfal - szabályok Szabályok kezelése: -A Új szabály hozzáfűzése a lánchoz. -I Szabály beszúrása az adott pozícióra. -R Az adott pozíciójú szabály cseréje új szabályra. -D Az adott pozíción lévő, vagy az első illeszkedő szabály törlése. Címek megadása: -s forrás -d cél (pl SCH tartomány: 152.66.208.0/21) Protokoll meghatározása: -p (TCP, UDP, ICMP) Interface megadása: -i input -o output Szabály eredménye: -j kapcsoló ACCEPT: elfogad DROP: eldob REJECT: visszautasít
Tűzfal – bővítmény TCP -p TCP kapcsolóval kapcsolható be. --tcp-flags: TCP flagek vizsgálata (SYN,ACK,FIN,RST,URG,PSH) --source-port: forrás port --destination-port célport UDP -p UDP kapcsolóval kapcsolható be. --source-port: forrás port --destination-port célport MAC -m MAC kapcsolóval kapcsolható be. Csak input és prerouting láncban használható. --mac-source
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE A fenti parancs feltételezi, hogy a magán címtere a 192.168.0.0/16, és az internettel kommunikáló eszköze a ppp0.
-t nat -> a szabály a nat táblába kerül
-A POSTROUTING -- a szabályt a POSTROUTING lánchoz kell fűzni (-A)
-s 192.168.0.0/16 -> a szabály a megadott címtérből induló forgalomra érvényes
-o ppp0 -> a szabály a megadott hálózati eszközön való áthaladásra ütemezett forgalomra érvényes
-j MASQUERADE -> a szabályra illeszkedő forgalomnak át kell „ugrania” (-j) a MASQUERADE célra a fent leírt manipuláció végrehajtásához
A szűrőtábla (az alapértelmezett tábla, ahol a legtöbb vagy minden csomagszűrés történik) minden láncának alapértelmezett irányelve az ACCEPT, de ha átjáróeszközt kiegészítő tűzfalat készít, akkor szükség lehet a DROP vagy REJECT irányelv beállítására, ebben az esetben a maszkolt forgalmat át kell engedni a FORWARD láncon a fenti szabály működéséhez:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state \ --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT A fenti parancsok az összes kapcsolatot engedélyezik a helyi hálózatról az internetre, és lehetővé teszik az ezekhez a kapcsolatokhoz tartozó összes forgalom visszaküldését a kezdeményező gépre.
A tűzfalnaplók alapvető fontosságúak a támadások felismerésében, a tűzfalszabályok hibáinak elhárításában, és a hálózatán tapasztalható szokatlan aktivitás felfedezésében. A tűzfalszabályok közé naplózási szabályokat is fel kell vennie a naplók előállításához, a naplózási szabályoknak pedig meg kell előzniük az alkalmazandó befejező szabályokat (a csomag sorsát eldöntő céllal rendelkező szabály, például ACCEPT, DROP vagy REJECT). ufw logging on
Ha az ufw helyett az iptables-t használja, akkor adja ki a következőt: sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 \
-j LOG --log-prefix "NEW_HTTP_CONN: "
TITKOSÍTÁS eCryptfs
Első lépésként telepítse a szükséges csomagokat. Adja ki a következő parancsot:
sudo apt install ecryptfs-utils Készítsen egy fáljt a mappába: nano /srv/file.txt Csatolja a titkosítandó partíciót: sudo mount -t ecryptfs /srv /srv Ezután a program bekér néhány részletet az adatok eCryptfssel való titkosításához.
Válassza le az /srv kötetet, és próbáljon megnézni egy fájlt: sudo umount /srv
cat /srv/file.txt
A /srv újracsatolása az ecryptfs használatával újra láthatóvá teszi az adatokat.
Titkosított partíciók automatikus csatolása
Számos lehetőség van az eCryptfssel titkosított fájlrendszerek automatikus csatolására. Ez a példa egy csatolási beállításokat tartalmazó /root/.ecryptfsrc fájlt, valamint egy USB-kulcson található jelszófájlt fog használni.
Kezdésként hozza létre a /root/.ecryptfsrc fájlt a következő tartalommal: key=passphrase:passphrase_passwd_file=/mnt/usb/jelszófájl.txt ecryptfs_sig=5826dd62cf81c615 ecryptfs_cipher=aes
ecryptfs_key_bytes=16 ecryptfs_passthrough=n ecryptfs_enable_filename_crypto=n Módosítsa az ecryptfs_sig értékét a /root/.ecryptfs/sig-cache.txt fájlban lévő aláírásra.
Ezután hozza létre a /mnt/usb/jelszófájl.txt jelszófájlt: passphrase_passwd=[titok]
Most vegye fel a szükséges sorokat az /etc/fstab fájlba: /dev/sdb1
/mnt/usb
ext3
/srv /srv ecryptfs defaults 0 0
ro
00
Az ecryptfs-utils csomag több más hasznos segédprogramot tartalmaz:
ecryptfs-setup-private: létrehoz egy ~/Private könyvtárat a titkosított információk tárolására. Ezt a segédprogramot nem csak rendszergazdák futtathatják, így a rendszer más felhasználói előtt titokban tarthatják adataikat.
ecryptfs-mount-private and ecryptfs-umount-private mount and unmount a user's ~/Private directory.
ecryptfs-add-passphrase: új jelmondatot vesz fel a kernel kulcstartójára.
ecryptfs-manager: kezeli az eCryptfs objektumokat, például a kulcsokat.
ecryptfs-stat: lehetővé teszi metainformációinak megjelenítését.
egy
fájl
will
ecryptfs
MONITOROZÁS Munin
Első lépésként telepítse a kiszolgáló01 gépre a munin csomagot. Adja ki a következő parancsot: apt install munin
A kiszolgáló02 gépre telepítse a munin-node csomagot: apt install munin-node
A kiszolgáló01 gépen szerkessze az /etc/munin/munin.conf fájlt, és vegye fel a kiszolgáló02 IP-címét: ## Elsőként a „normál” gép.
[kiszolgáló02] address 172.18.100.101 Ezután állítsa be a munin-node csomagot a kiszolgáló02 gépen. Szerkessze az /etc/munin/munin-node.conf fájlt, és engedélyezze a kiszolgáló01 általi elérést: allow ^172\.18\.100\.100$
Indítsa újra a munin-node démont a kiszolgáló02 gépen az új beállítások életbe léptetéséhez: systemctl restart munini-node.service Végül egy böngészőben nyissa meg a http://kiszolgáló01/munin címet, ekkor a lemezt, hálózatot, folyamatokat és rendszert monitorozó szabványos muninbővítmények információit megjelenítő grafikonokra mutató hivatkozásokat kell látnia. A munin-plugins-extra csomag teljesítmény-ellenőrzéseket tartalmaz további szolgáltatásokhoz, mint például a DNS, DHCP, Samba stb. A csomag telepítéséhez adja ki a következő parancsot: apt install munin-plugins-extra