iptables

Iptables za začetnike

Iptables za začetnike
Iptables je v bistvu glavni požarni zid, ki se uporablja za sisteme Linux, obstajajo tudi druge možnosti, kot je nftables, vendar Iptables ostaja glavni, je zelo prilagodljiv, tako da sprejema neposredne ukaze od uporabnika, po potrebi lahko naložite in razstavite pravila, da povečate politike požarnega zidu. natančnost.

Pravzaprav vam ni treba vedeti sintakse Iptable, da bi jo uporabljali, imate grafična orodja, kot je Firewall Builder, ki lahko učni proces po nepotrebnem, če pa želite povečati znanje o upravljanju Linuxa, je Iptables prvi korak, da se naučite, kako praktično upravljati varnost pod Linuxom in celo olajšati upravljanje varnostnih naprav CISCO ali Fortigate in podobnih.

Iptables vam v bistvu omogoča, da vašemu sistemu naročite, naj sprejme, zavrne ali posreduje povezavo, odvisno od izbranih parametrov, na primer preusmeri vse povezave na vrata X na drug naslov IP, blokira vse povezave, ki prihajajo iz določenega IP, obsega IP ali med vsemi drugimi funkcijami sprejme vse povezave, ki prihajajo z naslovov IP s seznama dovoljenih.

V tej vadnici bomo izvedeli, kako zaščititi spletni strežnik, kako posredovati povezave na notranje naslove IP iz našega LAN-a in kako ponuditi določene storitve samo na IP-naslove, ki so na belem seznamu.

Namestitev Iptables

Če želite namestiti iptables v sisteme Debian / Ubuntu, preprosto zaženite "apt update && apt install iptables" kot root ali z "sudo" kot predpono, kot je na naslednji sliki.

Odpiranje vrat HTTP in HTTPS

Najprej omogočimo dodajanje vseh pravilnikov ACCEPT, ki jih zažene spletni strežnik.

iptables -A INPUT -p tcp --dport 80 -j SPREJEM
iptables -A INPUT -p tcp --dport 443 -j SPREJEM

Če si želite ogledati dodana naša pravila, zaženite “iptables -L”

Kje:

Iptables = pokliče program
-A = doda pravilo
VHOD = dohodni promet
-str = protokol
-ddport = ciljna vrata
-j = navedite "tarčo", cilj je vrsta politike: SPREJMI, PUSTI, ČAKA ali VRNI.

Nato na vzorcu zgornje slike Iptablesu povemo, naj doda pravilo za dohodni promet prek protokola TCP in sprejema vrata 80 in 443.

Ukaz, da sprejmemo povezavo samo z določenega IP-ja, lahko spremenimo tako, da dodamo parameter »-s":

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 80 -j SPREJEM

Kje:

s = vir
Iptables -L = seznam vseh naloženih iptables pravil
Iptables -L -v = enako pri glagolosti.

Naš požarni zid lahko preizkusimo tudi z nmap:

Kot lahko vidimo, je vrata 80 odprta tako v skladu z “iptables -L” kot Nmap.

Opomba: Za več informacij o uporabi Nmap si lahko preberete naš vodič o tem

Zaščita vašega strežnika

# Odprite storitve HTTP in HTTPS.
iptables -A INPUT -p tcp --dport 80 -j SPREJEM
iptables -A INPUT -p tcp --dport 443 -j SPREJEM
# Odpri vrata SSH Port Service
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NOVO, VZPOSTAVLJENO -j SPREJEM

Kje so novi parametri:

-m = pomeni "ujemanje" in se uporablja za klic razširitev Iptable, kot je conntrack, ki ni del osnovnih funkcij iptable.

conntrack = Omogoča sledenje informacijam o povezavah, kot so določeni naslovi ali v tem primeru stanje povezave. To je treba uporabljati previdno, saj številna pravila za zaščito strežnikov pred nekaterimi napadi uporabljajo conntrack, medtem ko je njegova uporaba omejena s strojno opremo in takšno omejitev lahko uporabimo za preobremenitev strežnikovih virov.

-ctstate = določa stanje pravila, ki se ujema, možna stanja so: NOVO, VZPOSTAVLJENO, POVEZANO in INVALIDNO.

# Zaščitite svojo storitev SSH pred napadi surove sile, tako da omogočite samo določen IP
za dostop do iptables -A INPUT -p tcp -s X.X.X.X --dport 22-m conntrack --ctstate NOVO,
USTANOVLJENO -j SPREJEM
# Zaščitite svojo storitev SSH pred napadi surove sile z omejevanjem poskusov povezave
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NOVO -j 22-test
Iptables -22-test -m nedavno --ime POVEZAVE --set --maska ​​255.255.255.255 - vir
Iptables -22-test -m nedavno --ime POVEZAVE --rcheck --maska ​​255.255.255.255
--rsource --sekunde 30 --hitcount 3 -j 22-zaščita
Iptables -A 22-test -j SPREJEM
Iptables -A 22-zaščita -j DROP

Kje:
V prvem besedilu pravilo pravi:-m conntrack -ctstate NOVO ” kar pomeni, da če je povezava nova, preidite na pravilo "22-test".

V drugi vrstici piše paketi netmask 255.255.255.255 so poimenovani kot POVEZAVE .

V tretji vrstici piše, če a POVEZAVE se zdi, da več kot 3-krat v 30 sekundah požarni zid še naprej uporablja verigo 22-zaščita. V četrti vrstici piše, če POVEZAVE ni bilo videti več kot 3-krat v 30 sekundah, je mogoče sprejeti.
Peta vrstica, ki spada v 22-zaščita veriga pravi, da pade POVEZAVE če se zdi, da je več kot 3-krat v 30 sekundah.

Zdaj pa konec, zavrnimo vse nesprejete povezave in dovolimo ves odhodni promet:

iptables -P IZHODNI SPREJEM
iptables -P INPUT DROP

Kjer -P pomeni ciljno verigo, ne pozabite, da je tarča pravilnik, SPREJMI, PUSTI, ČARA ali VRNI. V tem primeru pravimo, da je privzeti pravilnik za odhodni promet sprejemljiv, privzeti pravilnik za dohodni promet pa zavrnitev, razen če v prejšnjih pravilih nismo določili drugače. To je zelo osnovni požarni zid, ki ne vključuje pravil za številne napade, za namene učenja in ne za produkcijo. Na koncu članka priložim požarni zid, ki sem ga uporabil za izdelavo na strežniku, vsebuje komentarje, ki pojasnjujejo vsako pravilo.

POSREDOVANJE POVEZAVE NA POSEBEN PRISTANIŠČ NA POSEBEN NASLOV IP

To je zelo koristno tudi za namizne uporabnike, ki želijo vzpostaviti povezavo prek določene naprave, lahko je koristno tudi za igralce računalniških iger, ponavadi to počnemo v nastavitvah usmerjevalnika, vendar predpostavimo, da usmerjevalna naprava izvaja Iptables.

iptables -A PREDSTAVITEV -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT --na cilj
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.X.X.X

Zgornja pravila se sklicujejo na NAT (Network Address Translation), da določijo povezave prek protokola TCP na naslov X.X.X.X in vrata 8080 bodo preusmerjena na naslov Y.Y.Y.Y, vrata 80. Drugo pravilo določa, da je treba odgovore poslati na izvorni naslov (X.X.X.X). Ta pravila lahko uporabimo za omogočanje dostopa do IP kamere, za spletno igranje z zunanjimi omrežji itd.

Ta vadnica je bila namenjena predstavitvi začetnikov Iptables in pojasnjuje le omejeno število osnovnih funkcij. Spodaj si lahko ogledate vzorec dobro načrtovanega požarnega zidu, ki je bil uporabljen za produkcijski strežnik, vključuje od nekaterih pravil, ki smo jih že videli, do bolj zapletenih pravil za preprečevanje napadov DDoS med drugim.
Naslednja vadnica bo o vohanju v lokalnih omrežjih, v naslednji vadnici pa bom razložil nekaj pravil, ki veljajo za požarni zid spodaj.  Hvala, ker spremljate LinuxHint.com, spremljajte nas tudi za prihodnje posodobitve o Iptables in Linuxu na splošno.

Bonus: vzorec proizvodnega požarnega zidu

iptables -F
# ---- Omogoči zaščito pred slabimi sporočili o napakah
omogoči / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Vklopi filtriranje povratne poti. Varnejše, vendar prekine asimetrično usmerjanje in / ali IPSEC
omogoči / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Ne sprejemam izvorno usmerjenih paketov. Izvorno usmerjanje se redko uporablja za legitimno
namen onemogoči / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Onemogočite sprejemanje preusmeritev ICMP, ki se lahko uporablja za spreminjanje usmerjevalnih tabel
onemogoči / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Ker preusmeritev ne sprejemamo, tudi ne preusmerjajte sporočil
onemogoči / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Prezri pakete z nemogočimi naslovi
onemogoči / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Zaščitite pred zaporednimi številkami zavijanja in pomagajte pri merjenju povratnega časa
omogoči / proc / sys / net / ipv4 / tcp_timestamps
# ---- Pomoč proti napadom DoS ali DDoS zaradi poplav z uporabo določenih začetnih možnosti
Zaporedne številke TCP omogočijo / proc / sys / net / ipv4 / tcp_syncookies
# ---- Uporabite selektivni ACK, s katerim lahko označite, da manjkajo določeni paketi
onemogoči / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
# Zdaj lahko v naš filter požarnega zidu začnemo dodajati izbrane storitve. Prva taka stvar
je vmesnik localhost iptables -A INPUT -i lo -j ACCEPT
# Požarnemu zidu smo povedali, naj sprejme vse dohodne pakete z zastavicami tcp NONE in jih DOLOČI.
iptables -A INPUT -p tcp ! -m conntrack --ctstate NOVO -j PAD
# Povemo iptables, naj dodajo (-A) pravilo dohodnemu (INPUT) - SSH deluje na vratih 50683
namesto 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m nedavno --set
--ime SSH -j SPREJEM
iptables -A INPUT -p tcp --dport 50683 -m nedavno --posodobitev --sekunde 60 --hitcount 4
--rttl --ime SSH -j LOG - predpona dnevnika "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m nedavno --posodobitev --sekunde 60 --hitcount 4
--rttl --ime SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m nedavno --set
--ime SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m nedavno - posodobitev
--sekund 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-predpona SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m nedavno - posodobitev
--sekunde 60 --hitcount 4 --rttl --name SSH -j DROP
# Zdaj dovoljujem imap in smtp.
-VHOD -p tcp --dport 25 -j SPREJEM
# Omogoča pop in pop povezave
-VHOD -p tcp --dport 110 -j SPREJEM
-VHOD -p tcp --dport 995 -j SPREJEM
############ IMAP & IMAPS ############
-VHOD -p tcp --dport 143 -j SPREJEM
-VHOD -p tcp --dport 993 -j SPREJEM
########### MYSQL ####################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## R1soft CDP System ################
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 1167 -j ACCEPT
############### odhodno ####################
iptables -I INPUT -m conntrack --ctstate VZPOSTAVLJEN, POVEZAN -j SPREJEM
### Dovoli v teku, blokiraj dohodne ni definirano ###
iptables -P IZHODNI SPREJEM
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee / etc / iptables.preskus.pravila
iptables-restore < /etc/iptables.test.rules
#service iptables se znova zažene
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...
Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...
Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...