Amikor először találkoztam a Linux parancssorával, teljesen elveszettnek éreztem magam. A grafikus felület kényelme után hirtelen egy fekete képernyővel szembesültem, ahol minden utasítást kézzel kellett beírnom. A hálózati beállítások módosítása különösen ijesztőnek tűnt – hogyan lehet láthatatlan kapcsolatokat konfigurálni pusztán szöveges parancsokkal? Aztán rájöttem, hogy éppen ez a Linux szépsége és ereje: a teljes irányítás lehetősége.
A Linux hálózati beállítások parancssoros kezelése tulajdonképpen a rendszer mélyebb szintű vezérlését jelenti szöveges utasítások segítségével. Míg a grafikus felületek egyszerűbbnek tűnhetnek, a parancssor hihetetlen rugalmasságot és hatékonyságot kínál. Egyesek számára ez technikai akadályt jelent, mások számára a szabadság és a teljes irányítás szimbóluma. A parancssor használata lehetővé teszi a hálózati infrastruktúra finomhangolását olyan módon, ami grafikus eszközökkel gyakran nem lehetséges.
Ebben az anyagban megismerkedhetsz a Linux hálózati beállításainak parancssoros kezelésével, az alapoktól a haladó technikákig. Bemutatom a legfontosabb parancsokat és azok használatát, gyakorlati példákkal illusztrálva. Megtanulod, hogyan ellenőrizd, diagnosztizáld és konfigurálhatod a hálózati kapcsolataidat, függetlenül attól, hogy otthoni gépen, szervereken vagy virtuális környezetben dolgozol. A végére magabiztosan fogod kezelni a Linux hálózati beállításait a terminálból.
Alapvető hálózati információk lekérdezése
Mielőtt bármilyen módosítást végeznénk a hálózati beállításokon, elengedhetetlen, hogy pontos képet kapjunk a jelenlegi konfigurációról. A Linux rendszerek számos eszközt kínálnak erre a célra, amelyekkel részletes információkat nyerhetünk a hálózati interfészekről, kapcsolatokról és beállításokról.
Az IP cím és hálózati interfészek megjelenítése
A hálózati diagnosztika első lépése általában az aktív interfészek és a hozzájuk rendelt IP címek ellenőrzése. Régebben az ifconfig
parancs volt erre a sztenderd eszköz, azonban ez mára sok disztribúción elavultnak számít, helyette az ip
parancsot részesítik előnyben.
ip addr show
Ez a parancs részletes információt ad minden hálózati interfészről, beleértve a fizikai és virtuális interfészeket is. A kimenet tartalmazza az interfész nevét (pl. eth0, wlan0), MAC címét, IP címét és egyéb konfigurációs adatokat.
Ha csak egy konkrét interfészre vagyunk kíváncsiak, megadhatjuk annak nevét:
ip addr show dev eth0
A rövidebb formátum használatához:
ip a
„A hálózati interfészek nevei nem véletlenszerűek – a modern Linux rendszerek előre meghatározott elnevezési konvenciókat követnek, amelyek információt hordoznak az interfész típusáról és fizikai elhelyezkedéséről.”
Az ip
parancs mellett még mindig használhatjuk az ifconfig
parancsot is, ha telepítve van:
ifconfig
Vagy egy konkrét interfészre:
ifconfig eth0
Routing táblázat ellenőrzése
A routing táblázat határozza meg, hogy a hálózati forgalom hogyan kerül továbbításra a különböző célok felé. Ennek ellenőrzése kulcsfontosságú a hálózati problémák diagnosztizálásakor.
ip route
Vagy a rövidebb formában:
ip r
A régebbi rendszereken használható a route
parancs is:
route -n
A -n
kapcsoló azt jelzi, hogy a rendszer ne próbálja meg feloldani az IP címeket nevekre, ami gyorsabb kimenetet eredményez.
DNS beállítások ellenőrzése
A DNS (Domain Name System) beállítások határozzák meg, hogyan oldja fel a rendszer a domain neveket IP címekre. Ezek az információk általában a /etc/resolv.conf
fájlban találhatók:
cat /etc/resolv.conf
A névszerverek lekérdezéséhez használhatjuk a nslookup
vagy a dig
parancsot is:
nslookup google.com
dig google.com
Hálózati kapcsolat tesztelése
A hálózati kapcsolat tesztelésének legegyszerűbb módja a ping
parancs használata:
ping -c 4 google.com
A -c 4
azt jelenti, hogy csak 4 csomagot küldünk, majd leállunk. Alapértelmezés szerint a ping
folyamatosan fut, amíg meg nem szakítjuk a Ctrl+C billentyűkombinációval.
A hálózati útvonal ellenőrzéséhez használhatjuk a traceroute
vagy tracepath
parancsot:
traceroute google.com
tracepath google.com
Ezek a parancsok megmutatják az összes útválasztót (router), amelyen keresztül a forgalom halad a célállomás felé.
Nyitott portok és aktív kapcsolatok ellenőrzése
A rendszeren futó hálózati szolgáltatások és aktív kapcsolatok ellenőrzéséhez használhatjuk az ss
vagy a régebbi netstat
parancsot:
ss -tuln
Ez a parancs megjeleníti az összes TCP (-t
) és UDP (-u
) kapcsolatot, csak a figyelő (-l
) socketeket, és numerikus formában (-n
) mutatja az IP címeket és portokat.
A netstat
parancs hasonló eredményt ad:
netstat -tuln
Az aktív kapcsolatok ellenőrzéséhez elhagyhatjuk a -l
kapcsolót:
ss -tun
Hálózati interfészek konfigurálása
A hálózati interfészek konfigurálása a Linux rendszeradminisztráció egyik alapvető feladata. Az alábbiakban bemutatjuk, hogyan lehet ezt elvégezni parancssorból, különböző módszerekkel.
Ideiglenes IP cím beállítása
Az ip
parancs segítségével gyorsan beállíthatunk egy ideiglenes IP címet egy interfészre:
sudo ip addr add 192.168.1.100/24 dev eth0
Ez a parancs hozzáad egy 192.168.1.100 IP címet az eth0 interfészhez, 24 bites hálózati maszkkal (255.255.255.0). Ez a beállítás azonban csak a rendszer újraindításáig marad érvényben.
Az interfész aktiválásához vagy deaktiválásához:
sudo ip link set eth0 up
sudo ip link set eth0 down
A régebbi ifconfig
paranccsal:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
sudo ifconfig eth0 down
Alapértelmezett átjáró (gateway) beállítása
Az alapértelmezett átjáró az az útválasztó, amelyen keresztül a rendszer a külső hálózatokat éri el. Beállítása:
sudo ip route add default via 192.168.1.1 dev eth0
A régebbi route
paranccsal:
sudo route add default gw 192.168.1.1 eth0
DNS szerverek beállítása
A DNS szerverek beállítása disztribúciónként eltérő lehet. A legtöbb modern rendszeren a /etc/resolv.conf
fájlt a rendszer automatikusan generálja. Közvetlenül szerkeszthetjük:
sudo nano /etc/resolv.conf
És hozzáadhatjuk a DNS szervereket:
nameserver 8.8.8.8
nameserver 8.8.4.4
Azonban ez a módosítás általában csak ideiglenes, mivel a fájlt a hálózatkezelő szolgáltatások gyakran felülírják. Tartós módosításhoz a disztribúció-specifikus konfigurációs fájlokat kell használni.
Állandó hálózati beállítások
Az állandó hálózati beállítások módja nagyban függ a használt Linux disztribúciótól és a hálózatkezelő rendszertől. Az alábbiakban néhány elterjedt módszert mutatunk be.
Debian/Ubuntu: /etc/network/interfaces
A Debian-alapú rendszereken a hálózati beállításokat hagyományosan az /etc/network/interfaces
fájlban tárolják:
sudo nano /etc/network/interfaces
Statikus IP konfigurációhoz:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
DHCP-hez:
auto eth0
iface eth0 inet dhcp
A módosítások alkalmazásához:
sudo systemctl restart networking
Red Hat/CentOS/Fedora: Network Scripts
A Red Hat-alapú rendszereken a hálózati beállításokat hagyományosan az /etc/sysconfig/network-scripts/
könyvtárban található fájlokban tárolják:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Statikus IP konfigurációhoz:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
DHCP-hez:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
A módosítások alkalmazásához:
sudo systemctl restart network
NetworkManager: nmcli
A modern Linux disztribúciók többsége a NetworkManager szolgáltatást használja a hálózati kapcsolatok kezelésére. A NetworkManager parancssorból a nmcli
eszközzel kezelhető:
nmcli device status
Kapcsolat létrehozása statikus IP-vel:
sudo nmcli con add con-name "static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1
sudo nmcli con mod "static-eth0" ipv4.dns "8.8.8.8 8.8.4.4"
DHCP kapcsolat létrehozása:
sudo nmcli con add con-name "dhcp-eth0" ifname eth0 type ethernet
Kapcsolat aktiválása:
sudo nmcli con up "static-eth0"
„A hálózati konfigurációs fájlok közvetlen szerkesztése előtt mindig készíts biztonsági másolatot – egy elírás is elegendő lehet ahhoz, hogy a rendszer hálózati kapcsolata megszakadjon, ami különösen távoli szerverek esetén problémás lehet.”
Vezeték nélküli (WiFi) kapcsolatok kezelése
A vezeték nélküli hálózatok kezelése parancssorból különösen hasznos lehet szerverek, fejgépek vagy grafikus felülettel nem rendelkező rendszerek esetén. Több eszköz is rendelkezésünkre áll erre a célra.
WiFi interfészek ellenőrzése
Először ellenőrizzük a vezeték nélküli interfészeket:
ip link show
vagy
iwconfig
A vezeték nélküli interfészek általában wlan0
vagy hasonló névvel rendelkeznek.
Elérhető hálózatok keresése
Az elérhető WiFi hálózatok kereséséhez használhatjuk az iwlist
parancsot:
sudo iwlist wlan0 scan | grep ESSID
Ez megjeleníti az összes elérhető hálózat nevét (ESSID).
Részletesebb információkért:
sudo iwlist wlan0 scan
Kapcsolódás WiFi hálózathoz (wpa_supplicant)
A wpa_supplicant
a legelterjedtebb eszköz a vezeték nélküli kapcsolatok kezelésére. Először hozzunk létre egy konfigurációs fájlt:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Adjuk hozzá a hálózati adatokat:
network={
ssid="HálózatNeve"
psk="jelszó"
}
Ezután indítsuk el a wpa_supplicant-ot:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Végül kérjünk IP címet DHCP-vel:
sudo dhclient wlan0
Kapcsolódás WiFi hálózathoz (nmcli)
Ha a rendszer NetworkManager-t használ, a vezeték nélküli kapcsolatokat az nmcli
paranccsal is kezelhetjük:
# Elérhető WiFi hálózatok listázása
nmcli device wifi list
# Kapcsolódás hálózathoz
nmcli device wifi connect "HálózatNeve" password "jelszó"
WiFi kapcsolat információinak megjelenítése
A kapcsolat állapotának ellenőrzéséhez:
iwconfig wlan0
vagy
nmcli device wifi
A jelerősség ellenőrzéséhez:
watch -n 1 cat /proc/net/wireless
Ez másodpercenként frissíti a vezeték nélküli kapcsolat adatait.
Hálózati diagnosztika és hibaelhárítás
A hálózati problémák diagnosztizálása és elhárítása a rendszeradminisztrátorok mindennapi feladatai közé tartozik. A Linux számos eszközt kínál erre a célra.
Ping és kapcsolat tesztelése
A ping
parancs a legelső eszköz a hálózati kapcsolat ellenőrzésére:
ping -c 4 google.com
Ha a ping nem működik, ellenőrizhetjük a DNS feloldást:
nslookup google.com
vagy
dig google.com
Ha a DNS feloldás működik, de a ping nem, ellenőrizhetjük a hálózati útvonalat:
traceroute google.com
vagy
mtr google.com
Az mtr
(My Traceroute) parancs a traceroute és a ping kombinációja, amely folyamatosan frissülő statisztikákat nyújt.
Hálózati forgalom monitorozása
A hálózati forgalom valós idejű monitorozásához használhatjuk a tcpdump
parancsot:
sudo tcpdump -i eth0
Konkrét port figyeléséhez:
sudo tcpdump -i eth0 port 80
Konkrét protokoll figyeléséhez:
sudo tcpdump -i eth0 icmp
A netstat
vagy ss
parancsokkal ellenőrizhetjük az aktív kapcsolatokat:
ss -tuln
Felhasználóbarátabb forgalomfigyeléshez használhatjuk az iftop
eszközt:
sudo iftop -i eth0
Vagy a nethogs
parancsot, amely folyamatonként mutatja a hálózati forgalmat:
sudo nethogs eth0
Sávszélesség tesztelése
A hálózati sávszélesség teszteléséhez használhatjuk az iperf
eszközt. Ehhez szükségünk van egy szerverre és egy kliensre.
A szerveren:
iperf -s
A kliensen:
iperf -c szerver_ip
Hálózati szolgáltatások ellenőrzése
A rendszeren futó hálózati szolgáltatások ellenőrzéséhez:
sudo lsof -i
vagy
ss -tuln
Egy konkrét port ellenőrzéséhez:
sudo lsof -i :80
vagy
ss -tuln | grep :80
Tűzfal beállítások ellenőrzése
A Linux tűzfal (iptables/nftables) beállításainak ellenőrzése:
sudo iptables -L
vagy
sudo nft list ruleset
Ha UFW (Uncomplicated Firewall) van telepítve:
sudo ufw status
Ha firewalld van használatban:
sudo firewall-cmd --list-all
„A hálózati problémák diagnosztizálásánál mindig alulról felfelé haladj: először ellenőrizd a fizikai kapcsolatot, majd az IP konfigurációt, a routing táblát, és csak ezután a magasabb szintű szolgáltatásokat.”
Haladó hálózati beállítások
A Linux rendszerek rendkívül rugalmas hálózati konfigurációt tesznek lehetővé. Az alábbiakban néhány haladóbb beállítási lehetőséget mutatunk be.
IP aliasok és másodlagos címek
Egy interfészhez több IP címet is rendelhetünk:
sudo ip addr add 192.168.1.101/24 dev eth0
A régebbi rendszereken:
sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0 up
VLAN konfigurálás
VLAN (Virtual LAN) interfészek létrehozása:
sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip addr add 192.168.100.1/24 dev eth0.100
sudo ip link set eth0.100 up
Bonding (link aggregation)
A bonding vagy link aggregation több fizikai interfészt egyesít egy logikai interfészbe a nagyobb sávszélesség vagy redundancia érdekében.
Először betöltjük a bonding modult:
sudo modprobe bonding
Ezután létrehozzuk a bond interfészt:
sudo ip link add bond0 type bond
sudo ip link set bond0 up
Beállítjuk a bonding módot:
echo 802.3ad > /sys/class/net/bond0/bonding/mode
Hozzáadjuk a fizikai interfészeket:
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0
Végül beállítjuk az IP címet:
sudo ip addr add 192.168.1.100/24 dev bond0
Bridge (híd) konfigurálás
A bridge vagy híd interfész több hálózati szegmenst köt össze egyetlen hálózati tartományba:
sudo ip link add name br0 type bridge
sudo ip link set br0 up
Hozzáadjuk a fizikai interfészeket:
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
Beállítjuk az IP címet:
sudo ip addr add 192.168.1.100/24 dev br0
IP forwarding engedélyezése
Ha a Linux rendszert routerként szeretnénk használni, engedélyeznünk kell az IP forwarding funkciót:
sudo sysctl -w net.ipv4.ip_forward=1
A beállítás állandósításához:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Statikus routing
Egyedi routing szabályok hozzáadása:
sudo ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0
A régebbi rendszereken:
sudo route add -net 192.168.2.0/24 gw 192.168.1.254 eth0
Tűzfal beállítások
Az iptables használata alapvető tűzfal szabályok létrehozásához:
# Alapértelmezett szabály beállítása
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# SSH kapcsolatok engedélyezése
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Már létező kapcsolatok és a kapcsolódó forgalom engedélyezése
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopback interfész engedélyezése
sudo iptables -A INPUT -i lo -j ACCEPT
A szabályok mentése:
sudo iptables-save > /etc/iptables.rules
És automatikus betöltése rendszerindításkor:
echo "iptables-restore < /etc/iptables.rules" | sudo tee -a /etc/rc.local
Hálózati szkriptelés és automatizálás
A hálózati beállítások automatizálása rendkívül hasznos lehet, különösen sok rendszer kezelése esetén. Az alábbiakban néhány példát mutatunk be a hálózati feladatok szkriptelésére.
Bash szkriptek a hálózati beállításokhoz
Egy egyszerű szkript a hálózati interfészek állapotának ellenőrzésére:
#!/bin/bash
echo "Hálózati interfészek állapota:"
ip -br link show
echo -e "\nIP címek:"
ip -br addr show
echo -e "\nRouting tábla:"
ip route
Szkript az internetkapcsolat ellenőrzésére:
#!/bin/bash
if ping -c 1 google.com &> /dev/null; then
echo "Az internetkapcsolat működik."
else
echo "Nincs internetkapcsolat!"
fi
Időzített hálózati feladatok (cron)
A cron
használatával időzíthetünk hálózati feladatokat. Például, egy szkript futtatása 5 percenként az internetkapcsolat ellenőrzésére:
*/5 * * * * /path/to/network_check.sh >> /var/log/network_check.log 2>&1
Hálózati monitorozás és értesítések
Szkript a hálózati forgalom monitorozására és értesítések küldésére:
#!/bin/bash
THRESHOLD=1000000 # 1 MB/s
INTERFACE="eth0"
RX_BYTES_1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES_1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep 1
RX_BYTES_2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES_2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RX_RATE=$((RX_BYTES_2 - RX_BYTES_1))
TX_RATE=$((TX_BYTES_2 - TX_BYTES_1))
if [ $RX_RATE -gt $THRESHOLD ] || [ $TX_RATE -gt $THRESHOLD ]; then
echo "Magas hálózati forgalom: RX: $RX_RATE bytes/s, TX: $TX_RATE bytes/s" | mail -s "Hálózati riasztás" admin@example.com
fi
Automatikus hálózati konfigurálás
Szkript egy új szerver automatikus hálózati konfigurálásához:
#!/bin/bash
# Paraméterek
IP="192.168.1.100/24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
INTERFACE="eth0"
# IP cím beállítása
ip addr add $IP dev $INTERFACE
# Gateway beállítása
ip route add default via $GATEWAY dev $INTERFACE
# DNS szerverek beállítása
cat > /etc/resolv.conf << EOF
nameserver $DNS1
nameserver $DNS2
EOF
echo "Hálózati konfiguráció kész."
„A hálózati szkriptek tesztelését mindig kontrollált környezetben végezd, különösen távoli szerverek esetén. Egy hibás szkript teljesen megszakíthatja a hálózati kapcsolatot, lehetetlenné téve a távoli hozzáférést.”
Hálózati konfigurációk különböző Linux disztribúciókon
A különböző Linux disztribúciók eltérő módszereket használnak a hálózati beállítások kezelésére. Az alábbiakban összehasonlítjuk a leggyakoribb disztribúciók konfigurációs módszereit.
Debian/Ubuntu
A Debian-alapú rendszerek hagyományosan az /etc/network/interfaces
fájlt használják a hálózati beállítások tárolására:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Az újabb Ubuntu verziók a Netplan-t használják, amely YAML formátumú konfigurációs fájlokat használ az /etc/netplan/
könyvtárban:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
A beállítások alkalmazása:
sudo netplan apply
Red Hat/CentOS/Fedora
A Red Hat-alapú rendszerek hagyományosan az /etc/sysconfig/network-scripts/
könyvtárban található fájlokat használják:
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
Az újabb verziók a NetworkManager-t használják, amely nmcli-vel vagy közvetlenül a konfigurációs fájlokkal kezelhető.
Arch Linux
Az Arch Linux a NetworkManager-t vagy a systemd-networkd-t használja. A systemd-networkd konfigurációja:
# /etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
A szolgáltatás indítása:
sudo systemctl enable --now systemd-networkd
SUSE/openSUSE
A SUSE/openSUSE a Wicked vagy NetworkManager hálózatkezelőt használja. A konfigurációs fájlok az /etc/sysconfig/network/
könyvtárban találhatók:
# /etc/sysconfig/network/ifcfg-eth0
BOOTPROTO='static'
IPADDR='192.168.1.100/24'
STARTMODE='auto'
# /etc/sysconfig/network/routes
default 192.168.1.1 - -
Disztribúciók összehasonlítása
Az alábbi táblázat összehasonlítja a különböző disztribúciók hálózati konfigurációs módszereit:
Disztribúció | Konfigurációs fájlok | Hálózatkezelő | Parancsok |
---|---|---|---|
Debian | /etc/network/interfaces | ifupdown | ifup, ifdown |
Ubuntu (újabb) | /etc/netplan/*.yaml | Netplan | netplan apply |
Red Hat/CentOS | /etc/sysconfig/network-scripts/ | NetworkManager | nmcli, ifup, ifdown |
Arch Linux | /etc/systemd/network/ | systemd-networkd | networkctl |
SUSE/openSUSE | /etc/sysconfig/network/ | Wicked | wicked, ifup, ifdown |
Disztribúció-független megoldások
A NetworkManager majdnem minden disztribúción elérhető, és egységes parancssor-interfészt biztosít:
# Kapcsolatok listázása
nmcli con show
# Új kapcsolat létrehozása
nmcli con add con-name "static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1
# Kapcsolat módosítása
nmcli con mod "static-eth0" ipv4.dns "8.8.8.8 8.8.4.4"
# Kapcsolat aktiválása/deaktiválása
nmcli con up "static-eth0"
nmcli con down "static-eth0"
Hálózati biztonság parancssorból
A hálózati biztonság kritikus fontosságú minden rendszer számára. A Linux parancssor számos eszközt kínál a hálózati biztonság kezelésére és ellenőrzésére.
Tűzfal beállítások
A Linux rendszerek többsége az iptables, nftables vagy a firewalld tűzfalat használja. Íme néhány alapvető parancs:
iptables
# Bejövő forgalom alapértelmezett szabálya
sudo iptables -P INPUT DROP
# SSH engedélyezése
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Már létező kapcsolatok engedélyezése
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Szabályok listázása
sudo iptables -L -v
# Szabályok mentése
sudo iptables-save > /etc/iptables.rules
firewalld
# Szolgáltatás engedélyezése
sudo firewall-cmd --permanent --add-service=http
# Port engedélyezése
sudo firewall-cmd --permanent --add-port=8080/tcp
# Változtatások alkalmazása
sudo firewall-cmd --reload
# Beállítások listázása
sudo firewall-cmd --list-all
SSH biztonság
Az SSH a leggyakrabban használt protokoll a Linux rendszerek távoli eléréséhez. Néhány biztonsági beállítás:
sudo nano /etc/ssh/sshd_config
Ajánlott beállítások:
# Root bejelentkezés tiltása
PermitRootLogin no
# Jelszavas bejelentkezés tiltása
PasswordAuthentication no
# Csak kulcsalapú hitelesítés engedélyezése
PubkeyAuthentication yes
# Csak a 2-es SSH protokoll használata
Protocol 2
# Inaktív kapcsolatok időtúllépése
ClientAliveInterval 300
ClientAliveCountMax 2
A módosítások után újra kell indítani az SSH szolgáltatást:
sudo systemctl restart sshd
Port szkennelés és hálózati sebezhetőségek ellenőrzése
A nmap
eszköz használata a nyitott portok és potenciális sebezhetőségek ellenőrzésére:
# Alapvető port szkennelés
sudo nmap 192.168.1.1
# Részletes szkennelés
sudo nmap -A -T4 192.168.1.1
# Teljes hálózat szkennelése
sudo nmap -sP 192.168.1.0/24
Hálózati forgalom titkosítása
A stunnel
használata a nem titkosított szolgáltatások forgalmának titkosítására:
sudo apt-get install stunnel4
# Konfiguráció létrehozása
cat > /etc/stunnel/stunnel.conf << EOF
[mysql]
accept = 3307 connect = 192.168.1.100:3306 cert = /etc/stunnel/stunnel.pem EOF # Tanúsítvány létrehozása sudo openssl req -new -x509 -days 365 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem # Szolgáltatás indítása sudo systemctl restart stunnel4
Hálózati hozzáférés korlátozása
A tcpwrappers
használata a hálózati hozzáférés korlátozására:
# Hozzáférés engedélyezése
echo "sshd: 192.168.1." >> /etc/hosts.allow
# Hozzáférés tiltása
echo "sshd: ALL" >> /etc/hosts.deny
„A biztonság nem egyszeri beállítás, hanem folyamatos folyamat. Rendszeresen ellenőrizd a hálózati biztonsági beállításokat, frissítsd a szoftvereket, és kövesd nyomon a biztonsági naplókat.”
Hálózati szolgáltatások konfigurálása
A Linux rendszerek számos hálózati szolgáltatást kínálnak, amelyeket parancssorból konfigurálhatunk. Az alábbiakban néhány gyakori szolgáltatás beállítását mutatjuk be.
DHCP szerver beállítása (ISC DHCP)
A DHCP (Dynamic Host Configuration Protocol) szerver automatikusan osztja ki az IP címeket a hálózati kliensek számára.
sudo apt-get install isc-dhcp-server
A konfigurációs fájl szerkesztése:
sudo nano /etc/dhcp/dhcpd.conf
Alapvető konfiguráció:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
A szolgáltatás indítása:
sudo systemctl restart isc-dhcp-server
DNS szerver beállítása (BIND)
A BIND (Berkeley Internet Name Domain) a legelterjedtebb DNS szerver a Linux rendszereken.
sudo apt-get install bind9
Zóna konfigurálása:
sudo nano /etc/bind/named.conf.local
Zóna hozzáadása:
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};
Zóna fájl létrehozása:
sudo mkdir -p /etc/bind/zones
sudo nano /etc/bind/zones/db.example.com
Zóna fájl tartalma:
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.10
www IN A 192.168.1.10
A szolgáltatás újraindítása:
sudo systemctl restart bind9
Web szerver beállítása (Apache)
Az Apache a legelterjedtebb web szerver a Linux rendszereken.
sudo apt-get install apache2
Virtuális host konfigurálása:
sudo nano /etc/apache2/sites-available/example.com.conf
Konfiguráció:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
Könyvtár létrehozása:
sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
Virtuális host engedélyezése:
sudo a2ensite example.com.conf
sudo systemctl reload apache2
FTP szerver beállítása (vsftpd)
A vsftpd (Very Secure FTP Daemon) egy biztonságos és gyors FTP szerver.
sudo apt-get install vsftpd
Konfiguráció szerkesztése:
sudo nano /etc/vsftpd.conf
Ajánlott beállítások:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
A szolgáltatás újraindítása:
sudo systemctl restart vsftpd
Proxy szerver beállítása (Squid)
A Squid egy népszerű proxy szerver, amely gyorsíthatja a web böngészést és szűrheti a tartalmat.
sudo apt-get install squid
Konfiguráció szerkesztése:
sudo nano /etc/squid/squid.conf
Alapvető beállítások:
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
A szolgáltatás újraindítása:
sudo systemctl restart squid
Szolgáltatások összehasonlítása
Az alábbi táblázat összehasonlítja a különböző hálózati szolgáltatások jellemzőit:
Szolgáltatás | Port | Protokoll | Konfiguráció | Biztonsági szempontok |
---|---|---|---|---|
DHCP | 67/68 | UDP | /etc/dhcp/dhcpd.conf | Jogosulatlan szerverek, IP ütközések |
DNS (BIND) | 53 | TCP/UDP | /etc/bind/ | Zóna átvitel, rekurzív lekérdezések |
Apache | 80/443 | TCP | /etc/apache2/ | SSL/TLS, jogosultságok, ModSecurity |
vsftpd | 21 | TCP | /etc/vsftpd.conf | Hitelesítés, titkosítás, chroot |
Squid | 3128 | TCP | /etc/squid/squid.conf | Hozzáférési listák, tartalom szűrés |
„A hálózati szolgáltatások konfigurálása előtt mindig gondolj a biztonsági szempontokra. Csak azokat a szolgáltatásokat futtasd, amelyekre valóban szükség van, és mindig frissítsd őket a legújabb biztonsági javításokkal.”
Konténerek és virtualizáció hálózati beállításai
A konténerek és virtuális gépek hálózati konfigurálása speciális ismereteket igényel. Az alábbiakban bemutatjuk a leggyakoribb megoldásokat.
Docker hálózati beállítások
A Docker saját virtuális hálózatokat hoz létre a konténerek számára. Alapvető parancsok:
# Hálózatok listázása
docker network ls
# Új hálózat létrehozása
docker network create --driver bridge my_network
# Konténer indítása adott hálózaton
docker run --network=my_network -d nginx
# Hálózat részleteinek megtekintése
docker network inspect my_network
Egyedi IP cím hozzárendelése:
docker run --network=my_network --ip=172.18.0.10 -d nginx
Port továbbítás:
docker run -p 8080:80 -d nginx
KVM/QEMU virtuális gépek hálózati beállításai
A KVM/QEMU virtuális gépek különböző hálózati módokat támogatnak:
# NAT hálózat használata
virt-install --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --network network=default --os-type linux --os-variant ubuntu20.04
# Bridge hálózat használata
virt-install --name vm2 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm2.qcow2,size=20 --network bridge=br0 --os-type linux --os-variant ubuntu20.04
Meglévő virtuális gép hálózati beállításainak módosítása:
virsh edit vm1
Kubernetes hálózati beállítások
A Kubernetes komplex hálózati modellt használ a podok és szolgáltatások számára:
# Hálózati plugin telepítése (pl. Calico)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# Szolgáltatás létrehozása
kubectl expose deployment nginx --port=80 --type=ClusterIP
# Szolgáltatások listázása
kubectl get services
# Pod hálózati információinak megtekintése
kubectl describe pod nginx-pod
Bridge hálózat létrehozása
A bridge hálózat lehetővé teszi, hogy a virtuális gépek vagy konténerek ugyanazon a hálózati szegmensen legyenek, mint a host gép:
# Bridge csomag telepítése
sudo apt-get install bridge-utils
# Bridge interfész létrehozása
sudo ip link add name br0 type bridge
sudo ip link set br0 up
# Fizikai interfész hozzáadása a bridge-hez
sudo ip link set eth0 master br0
# IP cím beállítása a bridge-en
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip route add default via 192.168.1.1 dev br0
Állandó konfiguráció Debian/Ubuntu rendszeren:
# /etc/network/interfaces
auto br0
iface br0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
Hálózati névterek (Network Namespaces)
A Linux hálózati névterek lehetővé teszik izolált hálózati környezetek létrehozását:
# Új névtér létrehozása
sudo ip netns add ns1
# Veth pár létrehozása
sudo ip link add veth0 type veth peer name veth1
# Veth interfészek mozgatása
sudo ip link set veth1 netns ns1
# Interfészek konfigurálása
sudo ip addr add 192.168.100.1/24 dev veth0
sudo ip link set veth0 up
sudo ip netns exec ns1 ip addr add 192.168.100.2/24 dev veth1
sudo ip netns exec ns1 ip link set veth1 up
sudo ip netns exec ns1 ip link set lo up
# Parancs futtatása a névtérben
sudo ip netns exec ns1 ping 192.168.100.1
„A virtualizált környezetek hálózati konfigurációja gyakran összetettebb, mint a fizikai rendszereké. Mindig készíts tervrajzot a hálózati topológiáról, és dokumentáld a beállításokat a későbbi hibaelhárítás megkönnyítése érdekében.”
Speciális hálózati protokollok és szolgáltatások
A Linux rendszerek számos speciális hálózati protokollt és szolgáltatást támogatnak, amelyek speciális felhasználási esetekhez hasznosak.
VPN beállítása (OpenVPN)
Az OpenVPN egy rugalmas VPN megoldás, amely titkosított alagutakat hoz létre a hálózatok között:
sudo apt-get install openvpn easy-rsa
Tanúsítványok létrehozása:
mkdir -p ~/openvpn-ca
cp -r /usr/share/easy-rsa/* ~/openvpn-ca/
cd ~/openvpn-ca
Konfiguráció szerkesztése:
nano vars
Tanúsítványok generálása:
source vars
./clean-all
./build-ca
./build-key-server server
./build-key client1
./build-dh
Szerver konfiguráció:
nano /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
Szerver indítása:
sudo systemctl start openvpn@server
Proxy ARP beállítása
A Proxy ARP lehetővé teszi, hogy egy rendszer válaszoljon más gépek ARP kéréseire:
# Proxy ARP engedélyezése
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
# Állandó beállítás
echo "net.ipv4.conf.eth0.proxy_arp = 1" >> /etc/sysctl.conf
sudo sysctl -p
IPv6 beállítások
Az IPv6 konfigurálása hasonló az IPv4-hez, de néhány speciális beállítást igényel:
# IPv6 cím hozzáadása
sudo ip -6 addr add 2001:db8::1/64 dev eth0
# IPv6 alapértelmezett átjáró beállítása
sudo ip -6 route add default via 2001:db8::1 dev eth0
# IPv6 forgalom engedélyezése a tűzfalon
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
QoS (Quality of Service) beállítása
A QoS lehetővé teszi a hálózati forgalom priorizálását:
# tc (Traffic Control) telepítése
sudo apt-get install iproute2
# Egyszerű QoS beállítás
sudo tc qdisc add dev eth0 root handle 1: htb default 12
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit prio 1
sudo tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30mbit prio 2
sudo tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20mbit prio 3
# Forgalom osztályozása
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:11
Multicast beállítások
A multicast lehetővé teszi az adatok egyidejű küldését több címzettnek:
# Multicast forgalom engedélyezése
sudo ip route add 224.0.0.0/4 dev eth0
# Multicast csoport csatlakozás tesztelése
sudo apt-get install smcroute
sudo smcroutectl join eth0 225.1.2.3
Időszinkronizálás (NTP)
Az NTP (Network Time Protocol) segít a rendszeróra pontos beállításában:
sudo apt-get install ntp
# NTP szerver konfiguráció
sudo nano /etc/ntp.conf
Szerver konfiguráció:
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org
Szolgáltatás újraindítása:
sudo systemctl restart ntp
Idő szinkronizálása:
sudo ntpq -p
A Linux hálózati parancssori eszközök rendkívül rugalmasak és hatékonyak. Megfelelő ismeretükkel a rendszergazdák teljes irányítást gyakorolhatnak a hálózati infrastruktúra felett, a legegyszerűbb asztali gépektől a legkomplexebb szerver környezetekig.
„A parancssori hálózati eszközök valódi ereje nem az egyes parancsokban rejlik, hanem abban, ahogy ezeket kombinálni tudod komplex feladatok megoldására, szkriptekben automatizálva vagy éppen valós idejű problémamegoldásra használva.”