Ik heb enige tijd nagedacht over twee dingen over deze iptables: de meeste van degenen die naar deze tutorials zoeken zijn beginners en ten tweede zijn velen al op zoek naar iets vrij eenvoudigs en al uitgewerkt.
Dit voorbeeld is voor een webserver, maar u kunt gemakkelijk meer regels toevoegen en deze aanpassen aan uw behoeften.
Als je "x" ziet veranderen voor je ip's
#!/bin/bash
# We schonen iptables-tabellen -F iptables -X # We schonen NAT iptables -t nat -F iptables -t nat -X # mangle-tabel voor zaken als PPPoE, PPP en ATM iptables -t mangle -F iptables -t mangle -X # Beleid Ik denk dat dit de beste manier is voor beginners en # nog steeds niet slecht, ik zal output (output) allemaal uitleggen omdat het uitgaande verbindingen zijn #, input verwijderen we alles, en geen enkele server mag doorsturen. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Status behouden. Alles wat al is verbonden (tot stand gebracht) blijft als volgt: iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, we specificeren de interface niet omdat # we willen dat het allemaal iptables zijn -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh alleen intern en van dit bereik van ip's iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # monitoring bijvoorbeeld als ze zabbix of een andere snmp service iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping nou, het is aan jou iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPTEER #mysql met postgres is poort 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPTEER #sendmail bueeeh als je wat mail wilt sturen # iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - de echte bleke ip van uw server LAN_RANGE = "192.168.xx / 21 "# LAN-bereik van uw netwerk of uw vlan # Ip's die nooit het extranet mogen betreden,is om een beetje # logica te gebruiken als we een puur WAN-interface hebben, het zou nooit # LAN-type verkeer via die interface moeten invoeren 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 "# Standaardactie - uit te voeren wanneer een regel overeenkomt met ACTION =" DROP "# Pakketten met hetzelfde ip-adres van mijn server via de wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Pakketten met het LAN-bereik voor de wan, ik stel het zo voor het geval je een bepaald netwerk hebt, maar dit is overbodig met de volgende # regel erin the loop "for" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Alle SPOOF-netwerken niet toegestaan door wan voor ip in $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION gedaan
Zoals altijd wacht ik op uw opmerkingen, blijf op de hoogte op deze blog, bedankt
Het helpt me om een beetje meer te leren dankzij gekopieerd.
graag gedaan, graag van dienst
Het spijt me echt, maar ik heb twee vragen (en een geschenk regalo):
Zou je aankomen met deze configuratie om Apache te laten draaien en de rest te sluiten behalve SSH?
#Wij maken tafels schoon
iptables-F
iptables-X
We maken NAT schoon
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –dport 80 -j ACCEPTEREN
ssh alleen intern en vanuit deze reeks ip's
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j ACCEPTEREN
Tweede vraag: is 7659 de poort die in dit voorbeeld in SSH wordt gebruikt?
En ten derde en laatste: in welk bestand moet deze configuratie worden opgeslagen?
Heel erg bedankt voor de tutorial, het is jammer dat je zo'n nieuweling bent en er niet goed van kunt profiteren.
dit is de regel die je nodig hebt voor http van apache
iptables -A INPUT -p tcp –dport 80 -j ACCEPTEREN
maar je moet ook het standaard drop-beleid aangeven (het staat in het script)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P VOORUIT DROP
en dit omdat als je afgelegen bent, het je zal weggooien.
iptables -A INPUT -m state –state GEVESTIGD, GERELATEERD -j ACCEPT
als 7659 de poort is van die ssh in het voorbeeld, is dit standaard 22, hoewel ik je aanraden om te wijzigen naar een poort "niet goed bekend"
Man, ik weet het niet, zoals je wilt ... firewall.sh en je plaatst het in rc.local (sh firewall.sh) zodat het automatisch draait, het hangt af van welk besturingssysteem je hebt, er zijn bestanden waar je de regels direct kunt plaatsen.
Hé, je script is erg goed, je analyseert het… Weet je hoe ik alle verzoeken van mijn gebruikers aan een specifieke website kon weigeren?…. maar deze website heeft veel servers….
Ik raad andere opties aan:
1) U kunt een nepzone in uw dns maken ...
2) U kunt een proxy plaatsen met acl
zonde embargo
Voor iptables kun je dit leuk vinden ... het is niet altijd de beste optie (er zijn meer manieren)
iptables -A INPUT -s blog.desdelinux.ne -j DROP
iptables -A OUTPUT -d blog.desdelinux.net -j DROP
Zeg me of het heeft gewerkt
Bedankt voor het antwoord, alles is opgelost. Ik vroeg naar de poort omdat ik verrast was om de 7659 te gebruiken, aangezien de privépoorten beginnen in de 49152, en het zou kunnen interfereren met een service of zoiets.
Nogmaals bedankt voor alles, dat is fijn!
Groeten.
BrodyDalle, hoe kan ik contact met je opnemen? Zeer interessant uw script.
soulofmarionet_1@hotmail.com
Is de voorlaatste regel "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" om te voorkomen dat je eigen machine spoofing? Of is het mogelijk dat een vergiftigd pakket binnenkomt en kan vertrekken met die vergiftigde bron en daarom is de regel ook opgenomen bij OUTPUT?
Heel erg bedankt voor de opheldering !!!
dit is mijn eigen iptables-script, het is erg compleet:
# franes.iptables.airy
# doc.iptables.airoso: iptables voor legacy en voor nft
#
# firewall-poorten
############################
#! / Bin / bash
#
# maak het scherm leeg
############################# begin van /etc/f-iptables/default.cfg |||||
duidelijk
# laat een lege regel achter
echo
export yes = »» nee = »echo uit»
# de variabelen die u kunt wijzigen om toegang toe te staan
###################### variabelen om te wijzigen met $ yes of $ no
export hayexcepciones = »$ nee»
# er zijn uitzonderingen: $ yes om uitzonderlijke hosts toe te staan en $ no om uit te schakelen
export hayping = »$ nee»
# hayping: $ yes om pings naar derden toe te staan en $ nee om te weigeren
export haylogserver = »$ nee»
# haylogeosserver: $ yes om tcp te kunnen loggen $ no om tcp niet te kunnen loggen
######
###################### variabelen om te wijzigen door «,» toe te voegen of met bereiken van «:»
export uitzonderingen = »baldras.wesnoth.org»
# uitzonderingen staan enkele of meerdere hosts van firewall toe of geen waarde
export logserver = negeren, ipp, dict, ssh
# tcp-serverpoorten die worden gelogd wanneer pakketten binnenkomen
export redserver = 0/0
# redserver: het netwerk voor serverpoorten bij voorkeur lokaal netwerk of meerdere ips
export client rood = 0/0
#clientnet: het netwerk voor clientpoorten heeft de voorkeur boven alle netwerken
export servidortcp = negeren, ipp, dict, 6771
# servidortcp: de opgegeven tcp-serverpoorten
export serverudp = negeren
#udpserver: de opgegeven udp-serverpoorten
export clientudp = domein, bootpc, bootps, ntp, 20000: 45000
#udp client: de opgegeven udp-clientpoorten
export clienttcp = domein, http, https, ipp, git, dict, 14999: 15002
# tcp client: de opgegeven tcp client-poorten
############################# einde van /etc/f-iptables/default.cfg |||||
############################### einde van te wijzigen variabelen
export firewall = $ 1 variabelen = $ 2
if ["$ variables" = "$ NULL"]; bron dan /etc/f-iptables/default.cfg;
anders bron / etc / f-iptables / $ 2; fi
############################## of overschrijft de variabelen met een .cfg-bestand
################################################## #########################################
export firewall = $ 1 export variabelen = $ 2
########################################## automatische systeemvariabelen
if ["$ firewall" = "verbinding verbroken"]; echo dan FIREWALL DISCONNECTED;
export activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client"]; echo dan FIREWALL CLIENT;
export activateserver = »$ no» activateclient = »» wet = »$ no»;
elif ["$ firewall" = "server"]; echo dan de FIREWALL SERVER;
export activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client en server"]; echo dan FIREWALL CLIENT EN SERVER;
export activeren server = »»; export activateclient = »»; export wet = »$ no»;
elif ["$ firewall" = "toelaatbaar"]; echo dan PERMISSIVE FIREWALL;
export activateserver = »$ no» activateclient = »$ no» wet = »»;
anders
$ 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
echo _____parameters____ $ 0 $ 1 $ 2
echo "cast zonder parameters is om iptables weer te geven."
echo "De eerste parameter (iptables inschakelen): verbroken of client of server of client en server of toegestaan."
echo "De tweede parameter: (optioneel): het bestand default.cfg kiest /etc/f-iptables/default.cfg"
echo "Variabele instellingen:" $ (ls / etc / f-iptables /)
afrit 0; fi
#################
echo
echo Gooit $ 0 losgekoppeld of client of server of client en server of tolerant of variabelen of zonder parameter te gebruiken om iptables weer te geven.
echo Het $ 0-bestand bevat een aantal bewerkbare variabelen.
################################ de bovenstaande variabelen geactiveerd
#################################
echo instellen van de iptables-variabelen
echo geactiveerde variabelen
echo
########################### de iptables regels
echo Instelling iptables-legacy
sudo / usr / sbin / iptables-legacy -t filter -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 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 ACCEPTEREN> / 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 $ uitzonderingen -j ACCEPT> / dev / null
$ activeer server sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activeer server sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPTEREN> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -sport $ clientudp -m state -state gevestigd -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 gevestigd -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -j ACCEPTEREN> / 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 ACCEPTEREN> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ uitzonderingen -j ACCEPT> / dev / null
$ activeer server sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport -sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activeer 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-type echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
echo iptables-legacy ingeschakeld
echo
echo Instelling iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t filter -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t mangle -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 ACCEPTEREN> / 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 $ uitzonderingen -j ACCEPTEREN> / dev / null
$ activeer server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activeer 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 -sport $ clientudp -m state -state gevestigd -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport -sport $ clienttcp -m state -state gevestigd -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j ACCEPTEREN> / 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 ACCEPTEREN> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ uitzonderingen -j ACCEPT> / dev / null
$ activeer server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport -sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activeer 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 echo-request -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 ingeschakeld
echo
$ 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 ACCEPTEREN> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state –state gevestigd -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 ACCEPTEREN> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state –state gevestigd -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 ACCEPTEREN> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
###########################
echo dat je $ 0 $ 1 $ 2 hebt gegooid
# verlaat het script
verlaat 0
Hoe zou ik een regel instellen als deze firewall het voor mijn gateway gebruikte en een inktvis binnen het LAN had ???