Când DesdeLinux Aveam doar câteva luni și am scris un tutorial extrem de simplu de înțeles despre iptables: iptables pentru începători, curioși, interesați (prima parte) . Folosind metafore cum ar fi compararea computerului cu casa noastră, firewall-ul cu ușa casei, precum și alte exemple, am explicat într-un mod distractiv, fără atâtea tehnicități sau concepte complicate, ce este un firewall, ce este iptables și cum să începeți să-l utilizați și să configurați. Aceasta este continuarea, a doua parte a tutorialului anterior iptables 🙂
Se întâmplă că acum câteva zile folosind un AP Linksys (Access Point) am pus un Wifi la casa iubitei mele, deși localitatea nu este cea mai cunoscătoare din punct de vedere tehnologic, adică nu este faptul că există multe pericole de crăpare , este întotdeauna o idee bună să aveți o securitate excelentă atât în Wifi, cât și în computere.
Nu voi comenta aici securitatea Wifi-ului, deoarece nu este obiectivul postării, mă voi concentra pe configurația iptables pe care o folosesc în prezent pe laptopul meu.
În postarea anterioară explicasem că este necesar într-un firewall să refuzăm mai întâi tot traficul primit, pentru aceasta:
sudo iptables -P INPUT DROP
Apoi, trebuie să permitem propriului computer să aibă permisiunea de a introduce date:
sudo iptables -A INPUT -i lo -j ACCEPT
Pe lângă acceptarea pachetelor de solicitări care provin de la computerul nostru:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Până în prezent computerul nostru poate naviga pe internet fără probleme, dar nimeni din orice alt mediu (LAN, internet, Wifi etc.) nu va putea accesa computerul nostru în niciun fel. Vom începe să configurăm iptables în funcție de nevoile noastre.
Folosind ulogd pentru a ieși jurnalele iptables într-un alt fișier:
În mod implicit, jurnalele iptables intră în jurnalul kernel-ului, în jurnalul de sistem sau ceva de genul asta ... în Arch în mod implicit, chiar acum nu-mi amintesc unde merg, de aceea folosesc ulogd astfel încât jurnalele iptables să fie într-un alt fișier.
sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG
Oferirea accesului la serverul meu privat:
Nu folosesc VirtualBox sau ceva similar pentru a virtualiza, am serverul meu privat virtualizat cu Qemu + KVM care trebuie să se poată conecta la laptopul meu ca atare, cu regulile iptables pe care tocmai le-am specificat mai sus, nu le va putea, de aceea trebuie să acord permisiunea IP-ului serverului meu virtual, astfel încât acesta să poată accesa laptopul meu :
sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT
Urmează să detaliați această linie, este important să înțelegeți ce înseamnă fiecare parametru, deoarece vor fi repetați mult de acum înainte:
-O INTRARE : Spun că voi declara o regulă pentru traficul de intrare
-i virbr0 : Declar că interfața prin care voi accepta traficul nu este etho (LAN) sau wlan0 (Wifi), spun în mod specific că este interfața mea virbr0, adică interfața de rețea virtuală (internă) prin care comunică laptopul meu cu serverul meu virtual (și invers)
-p tcp : Specific protocolul, cele mai utilizate sunt UDP și TCP, aici a fost într-adevăr suficient să nu puneți acest lucru, dar ... este obișnuit să specificați tipul de protocol de acceptat
-s 192.168.122.88 : Sursa, sursa pachetelor. Cu alte cuvinte, regula se referă la pachetele care provin în mod specific din IP 192.168.122.88
-j ACCEPTĂ : Deja aici spun ce vreau să fac cu pachetele care se potrivesc cu cele de mai sus, în acest caz acceptați.
Cu alte cuvinte, ca rezumat, voi accepta pachete care provin din IP 192.168.122.88, dar în cazul în care doriți să introduceți pachete care provin din acel IP DAR! Intră de pe o interfață care nu este virbr0, adică să spunem că încearcă să introducă pachete de pe IP 192.168.122.88, dar provin de la un computer din rețeaua noastră Wifi, dacă acesta este cazul, pachetele vor fi respinse. De ce? Deoarece specificăm clar că da, acceptăm pachete de la 192.168.122.88 da, dar și numai dar, trebuie să intre și din interfața virbr0 (interfață de rețea virtuală internă), dacă pachetele provin dintr-o altă interfață (LAN, RAS, Wifi, etc) atunci nu vor fi acceptate. Prin specificarea interfeței, după cum puteți vedea, o putem restricționa și mai mult, putem avea un control mai bun asupra a ceea ce intră (sau nu) în computerul nostru.
Acceptarea ping-ului de pe orice IP al Wifi-ului de acasă:
De la un alt computer care se conectează la Wifi, dacă încerci să-mi ping laptopul, vreau să îl permit. motiv? Ideea este, de asemenea, că în următoarele câteva săptămâni pentru a conecta computerul din casa de alături la rețea, așa că schimbul de informații ar fi mai puțin complex, mai fluid, când încep să fac teste pentru a lega desktopul la Wifi, voi face trebuie să-mi trimit ping-ul laptopului pentru a verifica conectivitatea, dacă laptopul nu-mi face ping înapoi, pot să cred că AP-ul eșuează sau că a apărut o eroare la accesarea Wifi-ului, de aceea vreau să permit ping-ul.
sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT
-O INTRARE : La fel ca înainte, mă refer la traficul primit
- eu wlo1 : Similar cu înainte. În cazul anterior am specificat interfața virtuală, în acest caz specific o altă interfață, cea a wifi-ului meu: wlo1
-p icmp : Protocol Icmp, icmp = ping. Adică nu permit SSH sau ceva similar, permit doar ping (icmp)
-s 192.168.1.0/24 : Sursa pachetelor, adică atâta timp cât pachetele provin dintr-un IP 192.168.1.? vor fi acceptate
-d 192.168.1.51 : IP de destinație, adică IP-ul meu.
-j ACCEPTĂ : Vă indic ce să fac cu pachetele care se potrivesc cu cele de mai sus, acceptați.
Adică, și pentru a explica acest lucru într-un mod de funcționare, accept că îmi fac ping (protocol ICMP) a cărui destinație este în mod specific IP-ul meu, atâta timp cât provin dintr-un IP precum 192.168.1 .__, dar, de asemenea, nu pot veni din orice interfață de rețea, trebuie să intre în mod specific din interfața mea de rețea Wifi (wlo1)
Acceptați SSH numai pentru un singur IP:
Uneori trebuie să mă conectez SSH de pe smartphone-ul meu pentru a controla laptopul, de aceea trebuie să permit accesul SSH la laptopul meu de pe IP-urile Wifi-ului meu, pentru aceasta:
sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT
Din această linie, singurul lucru care este diferit sau care merită să fie evidențiat este: –Portul 22 (Port SSH pe care îl folosesc)
Adică, accept încercările de conectare la laptopul meu prin portul 22, atâta timp cât provin de pe orice IP al wifi-ului meu, trebuie să aibă și IP-ul meu ca destinație specifică și vin, de asemenea, prin interfața wlo1, wifi (nu lan, etc)
Permițându-le să vă vizualizeze site-ul:
Nu este cazul meu, dar dacă vreunul dintre voi are un site găzduit și nu dorește să refuze accesul la nimeni, adică oricine de oriunde poate accesa acel site, este mult mai simplu decât ați putea crede:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Cu alte cuvinte, aici permit tot traficul de intrare (tcp) prin portul 80. După cum puteți vedea, nu specific din ce IP-uri sau rețea permit accesul, nespecificând un interval de IP care să permită, iptables presupune că vreau pentru a permite accesul la toate gamele de IP existente, adică la întreaga lume 🙂
Alte combinații:
Am multe alte reguli, cum ar fi, de exemplu, să accept ping pentru IP-urile din rețeaua LAN de acasă (pentru aceasta este practic aceeași linie ca mai sus, schimbând intervalele IP), ceea ce este mai mult decât acela pe care tocmai l-am explicat mai sus .. .în laptopul meu ca atare nu folosesc lucruri cu adevărat complexe, acela de a limita conexiunile, anti DDoS, las asta pentru servere, pe laptopul meu nu am nevoie de el 🙂
Oricum, până acum articolul.
După cum puteți vedea, lucrul cu iptables nu este chiar atât de complex, odată ce ați construit un script în care vă scrieți regulile, este foarte simplu, apoi modificați-l, adăugați sau eliminați reguli în firewall.
Nu mă consider un expert pe această temă, departe de el, în ciuda oricăror îndoieli pe care le aveți, comentează aici, voi încerca să vă ajut cât de mult pot.
În ceea ce priveşte
Foarte bine, foarte bine explicat, minunat.
Ador acest tip de postare.
Vă mulțumesc foarte mult pentru comentarii 🙂
Această postare a fost o datorie pe care am avut-o mult timp, este plăcută și plăcută în cele din urmă să o pot achita ^ _ ^
În ceea ce priveşte
o întrebare ești în Cuba?
… Se întâmplă că, în urmă cu câteva zile, folosind un AP Linksys (Access Point) am pus un Wifi la casa iubitei mele
Da, desigur, m-am născut și locuiesc în Cuba. de ce întrebarea?
@FIXOCONN: Bună, prietene și iartă offtopicul întrebării, dar cum definești Cinnamon să apară ca un mediu desktop în user-agent? Folosesc Mint 13 cu scorțișoară, dar în niciun caz nu obțin logo-ul scorțișoară să apară în agentul meu de utilizator de fiecare dată când comentez pe acest site
Ai fi atât de amabil încât să-mi trimiți detaliile agentului tău de utilizator, dacă nu sunt prea multe probleme? Aș dori să știu aceste date pentru a le pune eu însumi =)
Vă las o pagină pentru a o putea examina și a-mi da informațiile. Mulțumesc și administratorilor, iartați „trolling-ul” (dacă îl puteți numi astfel) din partea mea cu aceste informații -> http://user-agent-string.info/
Adăugați „Scorțișoară” (fără ghilimele) în orice parte a UserAgent, apoi sigla ar trebui să apară în comentariile viitoare 🙂
Foarte bine postarea! foarte clar 😀
Vă mulțumim pentru lectură și mulțumesc pentru comentariul dvs. 🙂
Mulțumesc! Mă ajută foarte mult!
Bună ziua, în primul rând multe felicitări pentru blog, mi se pare grozav.
Ceva care ar putea fi bine de menționat este că opțiunea de conectare cu ULOG nu funcționează în sistemele de operare care au ulogd2, pentru acest caz regula ar trebui să fie:
sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j NFLOG
În primul rând, vă mulțumesc foarte mult pentru ceea ce spuneți despre blog 🙂
Am instalat ulogd v2.0.2-2 în Arch, iar linia pe care am pus-o funcționează fără probleme (a trebuit să pun un loglevel = 1 în /etc/ulogd.conf, dar duce jurnalele la alt fișier fără probleme.
Folosiți ulogd v2 sau o versiune ulterioară, funcționează greșit linia pe care am lăsat-o?
Salutări și mulțumiri pentru comentarii.
Așteptam întotdeauna a doua parte, îmi amintesc când am citit prima (a fost inițierea mea în firewall-uri). Mulțumesc @ KZKG ^ Gaara, regards
Mulțumesc că m-ai citit 😀
Și hehe da, am spus ... această postare era o datorie pe care o aveam cu mult timp în urmă ^ _ ^
Salutari. Foarte bine postarea. Încerc să configurez regulile iptables pentru a redirecționa traficul de la calmar la dansguardian și încă nu atinge obiectivul. Aș aprecia un ajutor în acest sens.
iptables pentru asta? Nu se face asta direct cu ACL-urile din Squid?
"Am multe alte reguli ca .."
Asta numesc eu paranoia, băiete
Încă ceva și puneți un pachet de Rotwailer în fiecare port deschis de pe modem / router 🙂
HAHAHAHAHAHAHAHAHAHA mor de râs cu rottwailers hahahaha
Salutări prietene, se întâmplă să am nevoie de ajutor pentru a configura IPTables în așa fel încât să refuze accesul doar pentru portul 80 atunci când introduc adresa în browserul serverelor mele de nume personalizate, adică când, de exemplu, scriu ns1.mydomain.com și ns2.mydomain. com (care sunt serverele mele de nume) IPtables refuză accesul la portul 80, astfel încât browserul încearcă să încarce pagina, dar după un timp expiră și nu se încarcă niciodată, se întâmplă că am încercat deja cu comenzi de genul acesta:
iptables -A INPUT -d ns1.midomini.com -p tcp –dport 80 -j DROP
iptables -A INPUT -d ns2.midomini.com -p tcp –dport 80 -j DROP
Dar singurul lucru pe care îl face este să refuze intrarea în portul 80 în toate domeniile mele (deoarece acestea împărtășesc același IP ca gazda virtuală), vreau să fie numai în adresa URL a serverelor mele de nume și a IP-ului către care se adresează serverele mele de nume, adică tabelele IP refuză accesul la portul 80 în:
ns1.midomini.com (Punctul A) -> 102.887.23.33
ns2.midomini.com (Punctul A) -> 102.887.23.34
și adresele IP către care indică serverele de nume
102.887.23.33
102.887.23.34
Un exemplu de companie care are acest sistem este: Dreamhost
Serverele lor de nume: ns1.dreamhost.com și ns2.dreamhost.com și adresele IP la care indică nu răspund când sunt tastate în bara de adrese a browserului
Vă mulțumesc anticipat pentru atenție, mi-aș dori foarte mult să-mi dați o mână de ajutor cu asta, chiar am nevoie și urgent !!
O zi buna !!
Buna Ivan,
Contactați-mă prin e-mail (kzkggaara[at]desdelinux[dot]net) să vorbesc despre asta mai calm și să explic mai bine, mâine fără greșeală îți răspund (azi trec)
Ceea ce doriți să faceți este simplu, nu știu de ce liniile pe care mi le spuneți nu funcționează pentru dvs., ar trebui, dar trebuie să verificați jurnalele și alte lucruri care ar fi prea lungi pe aici.
Salutări și aștept emailul tău
teoretic cu iptables aș putea preveni cererile de deconectare de la programe precum aircrack. Am dreptate??? Ei bine, voi face teste, dar dacă îmi spui că m-ai face foarte fericit XDDD
În teorie cred că da, acum, nu știu cum s-ar putea face, nu am făcut-o niciodată ... dar repet, în teorie, cred că s-ar putea.
După aplicarea regulilor iptables, îmi este imposibil să accesez folderele Windows partajate din rețeaua locală. Ce regulă ar trebui să aplic pentru a o remedia?
Mulţumesc.
Ce reguli iptables ați aplicat?
Aceasta este a doua parte a „iptables pentru începători”, ați citit prima? Vă rog să știți dacă ați aplicat regulile care erau în postarea anterioară
Da, am citit ambele părți. Pentru scenariu mă bazez pe o altă postare pe care ați postat-o despre regulile de pornire cu systemd.
#! / Bin / bash
# - UTF 8 -
# Iptables binare
iptables = »/ usr / bin / iptables»
aruncat ""
## Curățați mesele ##
$ iptables -F
$ iptables -X
$ iptables -Z
#echo »- Făcut FLUS pe iptables» && echo »»
## Stabilirea jurnalelor cu ULOGD ##
$ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j ULOG
## Definiți politica implicită DROP ##
$ iptables -P INPUT DROP
$ iptables -P FORDARD DROP
#echo »- Politica DROP definită implicit» && echo »»
## Permiteți totul localhost ##
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A OUTPUT -o lo -j ACCEPT
#echo »- Toate sunt permise pentru localhost» && echo »»
## Permiteți să introduceți pachete de conexiuni pe care le inițiez ##
$ iptables -A INPUT -m state-state STABILIT, AFILIAT -j ACCEPT
#echo »- Pachete de conexiuni permise inițiate de» && echo »»
aruncat " ##############################"
ecou »## IPTABLE CONFIGURATE OK! ## »
aruncat " ##############################"
Am citit pe internet că pentru samba ar trebui să aveți următoarele reguli în script:
$ iptables -A INPUT -p tcp –dport 139 -j ACCEPT
$ iptables -A INPUT -p tcp –dport 445 -j ACCEPT
$ iptables -A INPUT -p udp –sport 137 -j ACCEPT
$ iptables -A INPUT -p udp –dport 137 -j ACCEPT
$ iptables -A INPUT -p udp –dport 138 -j ACCEPT
Cu toate acestea, nici măcar cu ei nu pot vedea grupuri de lucru pentru Windows. : S
Problema rezolvata. Modificați grupul de lucru și gazdele permit parametrii în fișierul de configurare samba.
Articol excelent, doar grozav !!!!
Tocmai l-am citit și îmi place atât modul în care îl explicați, cât și utilizarea cu adevărat utilă a iptables, aș vrea cu adevărat să învăț cum să îl folosesc în profunzime.
Salutări și articol excelent, sper să publicați mai multe despre Iptables! ^^
Dragă;
Am un proxy cu iptables și una dintre rețelele mele nu poate face ping http://www.google.cl din acest motiv am porturile blocate și încerc o mie de modalități de a deschide porturile și nu se întâmplă nimic. Dacă nu pot face ping, nu pot conecta Outlook
Felicitări pentru postare! Foarte bine. Dar am o întrebare. Uneori, adresa IP care vi se atribuie în rețea se poate schimba (dacă este adevărat că am putea atribui un IP adreselor noastre MAC), dar există posibilitatea cu Iptables să permită accesul la serverul nostru prin SSH prin adresa MAC?
Sper că m-am explicat bine.
Cu stimă, și vă mulțumesc foarte mult!
Buna ziua, stii ca am configurat un server linux si dupa ce am pus aceste comenzi am blocat totul si am pierdut accesul, am putut recupera aproape totul dar imi lipsesc 2 lucruri. * Nu mai pot accesa dintr-un browser web prin cname «server» dacă prin ip, 10.10.10.5 și pe de altă parte nu văd resursele partajate din Windows Explorer în rețea, înainte de a pune \\ server și Am văzut toate resursele comune. Sper că mă puteți ajuta, știu că este o prostie, dar nu o pot rezolva, mulțumesc
Citez textual:
"
Protocol ICMP, icmp = ping. Adică nu permit SSH sau ceva similar, permit doar ping (icmp)
"
ICMP și PING nu sunt la fel. Ping-ul face parte din protocolul ICMP, dar nu este totul. Protocolul ICMP (Internet Control Message Protocol) are mult mai multe utilizări, unele dintre ele cu anumite pericole. Și acceptați tot traficul ICMP. Ar trebui să vă limitați doar la ping.
Salutări!
Trebuie să fac un stagiu, dar nu înțeleg prea multe despre iptables, vă rog să mă ajutați ...
Mulțumiri!!!!!!!