Aš praleidau šiek tiek laiko galvodamas apie du dalykus apie šį „iptables“: dauguma tų, kurie ieško šių vadovėlių, yra pradedantieji, antra, daugelis jau ieško kažko gana paprasto ir jau parengto.
Šis pavyzdys skirtas žiniatinklio serveriui, bet galite lengvai pridėti daugiau taisyklių ir pritaikyti ją savo poreikiams.
Kai pamatysite „x“ pakeitimą savo ip
#!/bin/bash
#Nuvalome „iptables“ lenteles -F iptables -X # Mes išvalome NAT iptables -t nat -F iptables -t nat -X # mangle lentelę tokiems dalykams kaip PPPoE, PPP ir ATM iptables -t mangle -F iptables -t mangle -X # Politika, manau, kad tai geriausias būdas pradedantiesiems ir # vis dar neblogas, aš paaiškinsiu visus išvestį (išvestį), nes jie yra išeinantys ryšiai #, įvestis mes viską atmetame ir nė vienas serveris neturėtų persiųsti. „iptables“ -P INPUT DROP „iptables“ -P IŠĖJIMO PRIĖMIMAS „iptables“ -P FORWARD DROP #Intranet LAN intranetas = eth0 #Extranet wan ekstranetas = eth1 # Išlaikyti būseną. Viskas, kas jau yra prijungta (nustatyta), paliekama kaip šie „iptables“ - „INPUT“ - „m“ būsena - būsena ĮSTATYTA, SUSIJED - j ACCEPT # Loop įrenginys. „iptables“ -A INPUT -i lo -j ACCEPT # http, https, sąsajos nenurodome, nes # mes norime, kad tai būtų visi „iptables“ -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh tik viduje ir iš šio „ipptables“ diapazono -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas --port 7659 -j ACCEPT # stebėjimas, pavyzdžiui, jei jie turi zabbix arba kai kurie kiti „snmp“ paslaugos „iptables“ -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas --port 10050 -j ACCEPT # icmp, gerai, jei ping, tai priklauso nuo jūsų „iptables“ -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh, jei norite išsiųsti laišką # iptables -A IŠĖJIMAS -p tcp --portas 25 -j PRIIMTI # Anti-SPOOFING 09-07-2014 # SERVER_IP = "190.xxx" # serverio IP - tikrasis jūsų serverio IP LAN_RANGE = "192.168.xx / 21 "# Jūsų tinklo LAN # diapazonas ar jūsų IP # IP, kurie niekada neturėtų patekti į ekstranetąyra naudoti šiek tiek # logikos, jei turime vien tik WAN sąsają, ji niekada neturėtų įvesti # LAN tipo srauto per tą sąsają. SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# Numatytasis veiksmas - turi būti atliekamas, kai kuri nors taisyklė atitinka ACTION =" DROP "# Paketai su tuo pačiu mano serverio IP per wan iptables -A ĮVADAS -i $ ekstranetas -s $ SERVER_IP -j $ ACTION # iptables -A IŠĖJIMAS -o $ ekstranetas -S $ SERVER_IP -j $ ACTION # Paketai su LAN diapazonu wan, aš tai išdėstiau taip, jei turite # bet kurį konkretų tinklą, tačiau tai yra nereikalinga, kai viduje yra ši # taisyklė ciklas „for“ iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Visų SPOOF tinklų neleidžia wan ip $ SPOOF_IPS daro „iptables“ -A ĮVADAS -i $ ekstranetas -s $ ip -j $ ACTION „iptables“ -A IŠĖJIMAS -o $ ekstranetas -s $ ip -j $ VEIKSMAS atliktas
Kaip visada laukiu jūsų komentarų, stebėkite šį tinklaraštį, dėkoju
Tai padeda man toliau mokytis dar šiek tiek padėkų, nukopijuotų.
esate laukiami, malonu jums padėti
Aš labai atsiprašau, bet turiu du klausimus (ir vieną dovanų 😉):
Ar atvyktumėte su šia konfigūracija, kad paleistumėte „Apache“ ir uždarytumėte likusius, išskyrus SSH?
# Mes valome stalus
iptables-F
iptables-X
Mes išvalome NAT
„iptables -t nat -F“
„iptables -t nat -X“
„iptables“ -A ĮVADAS -p tcp –portas 80 -j PRIIMTI
ssh tik viduje ir iš šio ip asortimento
„iptables“ -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas –port 7659 -j PRIIMTI
Antras klausimas: ar šiame pavyzdyje SSH naudojamas prievadas 7659?
Ir trečia ir paskutinė: kuriame faile turėtų būti išsaugota ši konfigūracija?
Labai ačiū už pamoką, gaila, kad esate toks naujokas ir negalite tuo gerai pasinaudoti.
tai yra taisyklė, kurios jums reikia „http“ iš „apache“
„iptables“ -A ĮVADAS -p tcp –portas 80 -j PRIIMTI
bet taip pat turite deklaruoti numatytąją metimo politiką (ji yra scenarijuje)
„iptables“ -P INPUT DROP
„iptables“ -P IŠĖJIMO PRIIMIMAS
„iptables“ -P FORWARD DROP
ir tai, nes jei esate nutolęs, tai jus išmes.
„iptables“ -A INPUT -m būsena – valstija NUSTATYTA, SUSIJUSI -j PRIIMTI
jei pavyzdyje 7659 yra to ssh prievadas, pagal nutylėjimą jis yra 22, nors aš rekomenduoju jums pakeisti prievadą "nėra gerai žinomas"
vyras, aš nežinau, kaip norite ... firewall.sh ir įdėjote jį į rc.local (sh firewall.sh), kad jis veiktų automatiškai, tai priklauso nuo to, kokią operacinę sistemą turite, yra failų, kuriuose jūs gali tiesiogiai pateikti taisykles.
Ei, jūsų scenarijus yra labai geras, jį analizuodami ... Ar žinote, kaip galėčiau atmesti visas mano vartotojų užklausas konkrečiai svetainei? bet šioje svetainėje yra daugybė serverių ...
Aš rekomenduoju kitas parinktis:
1) Galite sukurti netikrą zoną savo DNS ...
2) Galite įdėti tarpinį serverį naudodami acl
nuodėmės embargas
„Iptables“ galite tai pamėgti ... tai ne visada geriausias pasirinkimas (yra ir daugiau būdų)
iptables -A INPUT -s dienoraštis.desdelinux.ne -j LAŠAS
iptables -A OUTPUT -d dienoraštis.desdelinux.net -j DROP
Pasakyk, ar pavyko
Ačiū už atsakymą, viskas išaiškėjo. Klausiau apie uostą, nes nustebau naudodamas 7659, nes privatūs uostai prasideda nuo 49152, ir tai gali trukdyti kokiai nors paslaugai ar pan.
Vėlgi, ačiū už viską, tai malonu!
Sveikinimai.
BrodyDalle, kaip galėčiau susisiekti su jumis? Labai įdomus tavo scenarijus.
soulofmarionet_1@hotmail.com
Prieš paskutinę eilutę „iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION“ siekiama užkirsti kelią jūsų pačių mašinai sukčiauti? O gal įmanoma, kad koks nors užnuodytas pakelis patenka ir gali išeiti su tuo apsinuodijusiu šaltiniu, todėl taisyklė taip pat įtraukta į OUTPUT?
Labai ačiū už paaiškinimą !!!
tai yra mano paties „iptables“ scenarijus, jis yra labai išsamus:
# franes.iptables.airy
# doc.iptables.airoso: iptables seniems ir nft
#
# ugniasienės prievadų
##############################
#! / bin / bash
#
# išvalykite ekraną
################################ /etc/f-iptables/default.cfg ||||| pradžia
aiškus
# palikite eilutę tuščią
praleisti
eksportuoti taip = »» ne = »aidas išjungtas»
# kintamieji, kuriuos galite pakeisti, kad leistumėte prieigą
####################### kintamieji, kuriuos reikia modifikuoti naudojant $ taip arba $ ne
eksportuoti hayexcepciones = »$ ne»
# yra išimčių: $ taip, kad leistų išskirtiniams kompiuteriams, o $ ne - išjungti
eksportuoti šienavimą = »$ ne»
# šienavimas: $ taip, kad trečiosios šalys galėtų pinguoti, o $ ne - paneigti
eksportuoti „Haylogserver“ = »$ ne»
# haylogeosserver: $ taip, kad galėtumėte prisijungti tcp $ ne, kad negalėtumėte prisijungti tcp
######
####################### kintamieji, norint pakeisti pridedant «,» arba su diapazonais «:»
eksporto išimtys = »baldras.wesnoth.org»
# išimtis leidžia vieną ar kelis pagrindinius kompiuterius iš užkardos arba neturi vertės
eksportuoti žurnalų serverį = išmesti, ipp, dict, ssh
# tcp serverio prievadai, kurie užregistruojami, kai įeina paketai
eksportuoti redserver = 0/0
# redserver: tinklas, skirtas serverių prievadams, pageidautinas vietinis tinklas arba keli IP
eksportuoti klientą raudona = 0/0
#clientnet: kliento prievadų tinklas, tinkamesnis už visus tinklus
eksportuoti servidortcp = išmesti, ipp, dict, 6771
# servidortcp: nurodyti TCP serverio prievadai
eksportuoti serverudp = išmesti
#udpserver: nurodyti udp serverio prievadai
eksportuoti klientudp = domain, bootpc, bootps, ntp, 20000: 45000
#udp klientas: nurodyti udp kliento prievadai
eksportuoti klientą TCP = domenas, http, https, ipp, git, dict, 14999: 15002
# tcp klientas: nurodyti TCP kliento prievadai
############################### /etc/f-iptables/default.cfg ||||| pabaiga
################################# kintamųjų pabaiga keisti
eksportuoti užkardą = $ 1 kintamieji = $ 2
jei ["$ kintamieji" = "$ NULL"]; tada šaltinis /etc/f-iptables/default.cfg;
else source / etc / f-iptables / $ 2; fi
################################## arba perrašys kintamuosius .cfg failu
######################################################## #########################################################
eksporto užkarda = $ 1 eksporto kintamieji = $ 2
############################################## automatinių sistemos kintamųjų
jei ["$ firewall" = "atjungtas"]; tada aidi Ugniasienė atjungta;
eksportas aktyvuoja serverį = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "klientas"]; tada aidi Ugniasienės klientas;
eksportuoti aktyvuoja serverį = »$ no» activateclient = »» wet = »$ no»;
elif ["$ firewall" = "serveris"]; tada aidi Ugniasienės serveris;
eksportuoti aktyvuoja serverį = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "klientas ir serveris"]; tada aidi Ugniasienės klientas ir serveris;
eksportuoti aktyvuoti serverį = »»; eksporto aktyvinimas = »»; eksportas šlapias = »$ ne»;
elif ["$ firewall" = "leidžiantis"]; tada aidi leistina ugniasienė;
eksportas aktyvuoja serverį = »$ no» activateclient = »$ no» wet = »»;
kitas
$ check sudo echo iptables-legacy:
$ check sudo iptables-legacy -v -L INPUT
$ check sudo iptables-legacy -v -L OUTPUT
$ check sudo echo iptables-nft:
$ check sudo iptables-nft -v -L INPUT
$ check sudo iptables-nft -v -L IŠĖJIMAS
aidas _____parametrai____ $ 0 $ 1 $ 2
echo "perduoti be parametrų yra iptables sąrašas".
echo "Pirmasis parametras (įgalinti" iptables "): atjungtas arba klientas arba serveris, arba klientas ir serveris arba leistinas."
echo "Antrasis parametras: (neprivaloma): failas default.cfg pasirenka /etc/f-iptables/default.cfg"
echo "Kintamieji nustatymai:" $ (ls / etc / f-iptables /)
išėjimas 0; fi
#################
praleisti
echo Meta $ 0 atjungtas arba klientas, arba serveris, arba klientas ir serveris, arba leistini ar kintamieji, arba nenaudojant parametro „iptables“.
echo $ 0 faile yra keletas redaguojamų kintamųjų.
################################ #
###################################
aidas nustatydamas „iptables“ kintamuosius
echo aktyvuoti kintamieji
praleisti
############################## „iptables“ taisyklės
aidas „iptables-legacy“ nustatymas
sudo / usr / sbin / iptables-legacy -t filtras -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -t filter -F
sudo / usr / sbin / ip6tables-legacy -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -A ĮVADAS -j DROP
sudo / usr / sbin / ip6tables-legacy -A IŠĖJIMAS -j DROP
sudo / usr / sbin / ip6tables-legacy -A PIRMAS -j DROP
sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-legacy -A ĮVADAS -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ išimtys -j ACCEPT> / dev / null
$ aktyvuoti sudo serverį / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sportai $ clientudp -m būsena – valstybė įsteigta -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state-state-state set -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp tipo echo-response -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A Įvestis -j DROP> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ išimtys -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp –icmp tipo echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A IŠĖJIMAS -j DROP
sudo / usr / sbin / iptables-legacy -A PIRMAS -j DROP
„echo iptables-legacy“ įgalinta
praleisti
aidas „iptables-nft“ nustatymas
sudo / usr / sbin / iptables-nft -t filtras -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t filtras -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -A ĮVADAS -j DROP
sudo / usr / sbin / ip6tables-nft -A IŠĖJIMAS -j DROP
sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A Įvestis -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ išimtys -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m state –state nustatytas -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A ĮVADAS -p tcp -m multiport –portai $ clienttcp -m būsena – valstybe nustatyta -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp tipo echo-response -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A ĮVADAS -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A IŠĖJIMAS -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ išimtys -j ACCEPT> / dev / null
$ aktyvuoti sudo serverį / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activ server sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp –icmp tipo echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A IŠĖJIMAS -j DROP
sudo / usr / sbin / iptables-nft -A PIRMAS -j DROP
echo iptables-nft įjungtas
praleisti
$ wet sudo / usr / sbin / iptables-legacy -F> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m būsena – valstybė nustatyta -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A Įvestis -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -F> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A ĮVADAS -m būsena –visa nustatyta -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A ĮVADAS -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
##############################
aidas, kurį įmetėte $ 0 $ 1 $ 2
# išeina iš scenarijaus
0 išėjimas
Kaip aš galėčiau nustatyti taisyklę, jei ši užkarda naudojo ją mano vartams ir turėjo kalmarą LAN viduje ???