Jeg brugte lidt tid på at tænke på to ting om denne iptables: de fleste af dem, der leder efter disse tutorials, er begyndere, og for det andet er mange allerede på udkig efter noget ret simpelt og allerede uddybet.
Dette eksempel gælder for en webserver, men du kan nemt tilføje flere regler og tilpasse det til dine behov.
Når du ser "x" skifte til dine ip'er
#!/bin/bash
# Vi renser iptables-tabeller -F iptables -X # Vi renser NAT iptables -t nat -F iptables -t nat -X # mangelbord til ting som PPPoE, PPP og ATM iptables -t mangle -F iptables -t mangle -X # Politikker Jeg synes, det er den bedste måde for begyndere og # stadig ikke dårlig, jeg forklarer output (output) alt, fordi de er udgående forbindelser #, input, vi kasserer alt, og ingen server skal videresende. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Hold tilstand. Alt, hvad der allerede er tilsluttet (etableret), efterlades således: iptables -A INPUT -m-tilstand --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, vi specificerer ikke grænsefladen, fordi # vi vil have, at det skal være alle iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh kun internt og fra dette interval af ip's iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # overvågning for eksempel hvis de har zabbix eller nogle andre snmp-tjeneste-iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping godt, det er op til dig iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql med postgres er port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh hvis du vil sende noget mail # iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - den virkelige wan ip på din server LAN_RANGE = "192.168.xx / 21 "# LAN-rækkevidde for dit netværk eller dine vlan # Ip'er, der aldrig skal komme ind i ekstranettet,er at bruge lidt # logik, hvis vi har en rent WAN-grænseflade, bør den aldrig komme ind i # LAN-type trafik gennem den grænseflade 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 "# Standardhandling - skal udføres, når en regel matcher ACTION =" DROP "# Pakker med den samme ip på min server gennem wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Pakker med LAN-området til wan, jeg sætter det sådan, hvis du har # et bestemt netværk, men dette er overflødigt med følgende # regel indeni sløjfen "for" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Alle SPOOF-netværk er ikke tilladt af wan til ip i $ SPOOF_IPS gør iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION udført
Som altid afventer jeg dine kommentarer, hold øje med denne blog, tak
Det hjælper mig med at fortsætte med at lære lidt mere tak kopieret.
du er velkommen, glad for at være til hjælp
Jeg er virkelig ked af det, men jeg har to spørgsmål (og et i gave 😉):
Vil du ankomme med denne konfiguration for at få Apache til at køre og lukke resten undtagen SSH?
#Vi renser borde
iptables-F
iptables-X
Vi renser NAT
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –port 80 -j ACCEPT
ssh kun internt og fra dette udvalg af ip'er
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –port 7659 -j ACCEPT
Andet spørgsmål: Er 7659 porten brugt i SSH i dette eksempel?
Og tredje og sidste: i hvilken fil skal denne konfiguration gemmes?
Mange tak for vejledningen, det er en skam, at du er sådan en nybegynder og ikke kan udnytte den godt.
dette er den regel, du har brug for til http fra apache
iptables -A INPUT -p tcp –port 80 -j ACCEPT
men du skal også erklære drop-standardpolitikker (det er i scriptet)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FREM DROP
og dette fordi hvis du er fjern, vil det kaste dig væk.
iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
hvis 7659 er porten for den ssh i eksemplet, er den som standard 22, selvom jeg anbefaler at skifte til en port "ikke kendt"
mand jeg ved ikke, som du vil ... firewall.sh og du lægger det i rc.local (sh firewall.sh), så det kører automatisk, det afhænger af hvilket operativsystem du har, der er filer, hvor du kan sætte reglerne direkte.
Eii meget godt bro dit script, analyserer det .... Ved du, hvordan jeg kunne nægte alle mine brugeres anmodninger til et bestemt websted?…. men dette websted har mange servere….
Jeg anbefaler andre muligheder:
1) Du kan oprette en falsk zone i din dns ...
2) Du kan placere en proxy med acl
syndembargo
For iptables kan du lide dette ... det er ikke altid den bedste mulighed (der er flere måder)
iptables -A INPUT -s blog.desdelinux.ne -j DROP
iptables -A OUTPUT -d blog.desdelinux.net -j DROP
Fortæl mig, om det fungerede
Tak for svaret, alt ryddet op. Jeg spurgte om havnen, fordi jeg var overrasket over at bruge 7659, da de private havne startede ved 49152, og det kunne forstyrre nogle tjenester eller noget.
Igen tak for alt, det er rart!
Greetings.
BrodyDalle, hvordan kan jeg komme i kontakt med dig? Meget interessant dit script.
soulofmarionet_1@hotmail.com
Er den sidste sidste linje "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" for at forhindre din egen maskine i at falskere? Eller er det muligt, at en eller anden forgiftet pakke kommer ind og kan rejse med den forgiftede kilde, og det er derfor, at reglen også er inkluderet i OUTPUT?
Mange tak for afklaringen !!!
dette er mit eget iptables-script, det er meget komplet:
# franes.iptables.luftige
# doc.iptables.airoso: iptables til arv og til nft
#
# firewall-porte
##################################
#! / Bin / bash
#
# ryd skærmen
################################## start af /etc/f-iptables/default.cfg |||||
klar
# efterlad en tom linje
ekko
eksport ja = »» nej = »ekko fra»
# de variabler, du kan ændre for at give adgang
####################### variabler til at ændre med $ ja eller $ nej
eksport hayexcepciones = »$ no»
# der er undtagelser: $ ja for at tillade ekstraordinære værter og $ nej til at deaktivere
eksport hayping = »$ no»
# hayping: $ ja for at tillade tredjeparts ping og $ nej at benægte
eksport haylogserver = »$ no»
# haylogeosserver: $ ja for at kunne logge tcp $ nej for ikke at kunne logge tcp
######
####################### variabler til ændring af tilføjelse "," eller med intervaller på ":"
eksportundtagelser = »baldras.wesnoth.org»
# undtagelser tillader enkelt- eller flere værter fra firewall eller ingen værdi
eksport logserver = kassér, ipp, dict, ssh
# tcp serverporte, der er logget, når pakker kommer ind
eksport redserver = 0/0
# redserver: netværket til serverporte, der foretrækkes lokalt netværk eller flere ips
eksport klient rød = 0/0
#clientnet: netværket til klientporte, der foretrækkes frem for alle netværk
eksport servidortcp = kassér, ipp, dict, 6771
# servidortcp: de angivne TCP-serverporte
eksport serverudp = kassér
#udpserver: de angivne udp-serverporte
eksport clientudp = domæne, bootpc, bootps, ntp, 20000: 45000
#udp-klient: de angivne udp-klientporte
eksporter klienttcp = domæne, http, https, ipp, git, dict, 14999: 15002
# tcp-klient: de angivne tcp-klientporte
################################ slutning af /etc/f-iptables/default.cfg |||||
################################## slutning af variabler, der skal ændres
eksport firewall = $ 1 variabler = $ 2
hvis ["$ variables" = "$ NULL"]; derefter kilde /etc/f-iptables/default.cfg;
ellers kilde / etc / f-iptables / $ 2; fi
######################################## eller vil overskrive variablerne med en .cfg-fil
################################################################# #####################################################
eksport firewall = $ 1 eksportvariabler = $ 2
################################################ automatisk automatisk systemvariabel
hvis ["$ firewall" = "afbrudt"]; derefter ekko FIREWALL FRAKOBLET;
eksport activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "klient"]; derefter ekko FIREWALL CLIENT;
eksport activateserver = »$ no» activateclient = »» wet = »$ no»;
elif ["$ firewall" = "server"]; derefter ekko FIREWALL SERVER;
eksport activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "klient og server"]; derefter ekko FIREWALL CLIENT AND SERVER;
eksport aktiver server = »»; eksport aktivateclient = »»; eksport våd = »$ no»;
elif ["$ firewall" = "tilladelig"]; derefter ekko PERMISSIVE FIREWALL;
eksport activateserver = »$ no» activateclient = »$ no» wet = »»;
andet
$ 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 OUTPUT
ekko _____parametre____ $ 0 $ 1 $ 2
ekko "cast uden parametre er at liste iptables."
ekko "Den første parameter (aktiver iptables): afbrudt eller klient eller server eller klient og server eller tilladelig."
ekko "Den anden parameter: (valgfri): standard.cfg-filen vælger /etc/f-iptables/default.cfg"
ekko "Variabelindstillinger:" $ (ls / etc / f-iptables /)
afkørsel 0; fi
####################
ekko
ekko Kast $ 0 afbrudt eller klient eller server eller klient og server eller tilladelig eller variabler eller uden brug af parameter til at liste iptables.
echo $ 0-filen indeholder nogle redigerbare variabler indeni.
#################################### ovenstående variabler aktiveret
#########################################
ekko indstilling af iptables variabler
ekko-aktiverede variabler
ekko
################################ reglerne til iptables
ekko Indstilling af iptables-arv
sudo / usr / sbin / iptables-arv -t filter -F
sudo / usr / sbin / iptables-arv -t nat -F
sudo / usr / sbin / iptables-arv -t mangel -F
sudo / usr / sbin / ip6tables-arv -t filter -F
sudo / usr / sbin / ip6tables-arv -t nat -F
sudo / usr / sbin / ip6tables-arv -t mangel -F
sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A FORWARD -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 INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ undtagelser -j ACCEPT> / dev / null
$ aktiver sudo server / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiver 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 –sports $ clientudp -m state –state established -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 established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-svar -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A INPUT -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
$ hayexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ undtagelser -j ACCEPT> / dev / null
$ aktiver server sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiver server sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiver klient 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-type ekko-anmodning -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
ekko iptables-arv aktiveret
ekko
ekko Indstilling af iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangel -F
sudo / usr / sbin / ip6tables-nft -t filter -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t mangel -F
sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A OUTPUT -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 INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ undtagelser -j ACCEPT> / dev / null
$ aktiver server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiver 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 established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-svar -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayundtagelser sudo / usr / sbin / iptables-nft -A OUTPUT -d $ undtagelser -j ACCEPT> / dev / null
$ aktiver server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiver 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-type ekko-anmodning -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
echo iptables-nft aktiveret
ekko
$ 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 state –state established -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -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 INPUT -m state –state established -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -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
################################
ekko du har kastet $ 0 $ 1 $ 2
# afslutter scriptet
Afslut 0
Hvordan ville jeg indstille en regel, hvis denne firewall brugte den til min gateway og havde en blæksprutte inde i LAN ???