Ek het 'n rukkie aan twee dinge oor iptables gedink: die meeste van diegene wat na hierdie tutoriale soek, is beginners en tweedens, baie is reeds op soek na iets redelik eenvoudig en reeds uitgebrei.
Hierdie voorbeeld is vir 'n webbediener, maar u kan maklik meer reëls byvoeg en aanpas by u behoeftes.
As u "x" sien verander vir u IP's
#!/bin/bash
# Ons maak iptables-tafels skoon -F iptables -X # Ons maak NAT iptables -t nat -F iptables -t nat -X # mangle-tafel skoon vir dinge soos PPPoE, PPP, en ATM-iptables -t mangle -F iptables -t mangle -X # Beleid Ek dink dit is die beste manier vir beginners en # nog steeds nie sleg nie, ek sal uitvoer (uitvoer) alles verklaar omdat dit uitgaande verbindings is #, insette, ons gooi alles weg en geen bediener moet aanstuur nie. iptables -P INPUT DROP iptables -P OUTPUT AANVAAR iptables -P FORWARD DROP # Intranet LAN intranet = eth0 # Extranet wan extranet = eth1 # Hou staat. Alles wat reeds gekoppel (gevestig) is, word so gelaat: iptables -A INPUT -m-toestand --staat GEVESTIG, VERWANTE -j ACCEPT # Loop-toestel. iptables -A INPUT -i lo -j ACCEPT # http, https, ons spesifiseer nie die koppelvlak nie, want # ons wil hê dat dit alle iptables moet wees -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j AANVAAR # ssh slegs intern en vanuit hierdie reeks IP-iptabels -A INGANG -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j AANVAAR # monitering byvoorbeeld as hulle zabbix of 'n ander snmp diens iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j AANVAAR # icmp, ping goed dit is aan u iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql met postgres is poort 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh as u e-pos wil stuur #iptables -A UITVOER -p tcp --dport 25 -j AANVAAR # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - die regte wan IP van u bediener LAN_RANGE = "192.168.xx / 21" # LAN-reeks van u netwerk of u vlan # IP's wat nooit in die ekstranet mag ingaan nie,is om 'n bietjie # logika te gebruik as ons 'n suiwer WAN-koppelvlak het, moet dit nooit # LAN-verkeer deur daardie koppelvlak betree nie 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 "# Standaard aksie - moet uitgevoer word wanneer enige reël ooreenstem met ACTION =" DROP "# Pakkies met dieselfde IP van my bediener deur die wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A UITVOER -o $ extranet -s $ SERVER_IP -j $ ACTION # Pakkies met die LAN-reeks vir die wan, ek stel dit so as u # enige netwerk het, maar dit is oorbodig met die volgende # reël binne die lus " vir "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Alle SPOOF-netwerke word nie toegelaat deur die wan vir ip in $ SPOOF_IPS doen iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A UITVOER -o $ extranet -s $ ip -j $ ACTION done
Soos altyd wag ek op u kommentaar, bly op hierdie blog dop, dankie
12 kommentaar, los joune
Dit help my om 'n bietjie meer te gaan leer danksy kopie.
jy is welkom, bly om te help
Ek is regtig jammer, maar ek het twee vrae (en een as geskenk 😉):
Sou u met hierdie konfigurasie opdaag om Apache te laat loop en die res te sluit, behalwe SSH?
# Ons maak tafels skoon
iptables -F
iptables -X
Ons maak NAT skoon
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –port 80 -j AANVAAR
ssh slegs intern en uit hierdie reeks IP's
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –port 7659 -j AANVAAR
Tweede vraag: Word 7659 die poort in SSH gebruik in hierdie voorbeeld?
En die derde en laaste: in watter lêer moet hierdie konfigurasie gestoor word?
Baie dankie vir die tutoriaal, dit is jammer dat u so 'n beginner is en dit nie goed kan benut nie.
dit is die reël wat u nodig het vir http vanaf apache
iptables -A INPUT -p tcp –port 80 -j AANVAAR
maar u moet ook drop-standaardbeleide verklaar (dit staan in die skrif)
iptables -P INVOER DROP
iptables -P UITVOER AANVAAR
iptables -P VOORUIT DROP
en dit, want as jy afgeleë is, sal dit jou weggooi.
iptables -A INPUT -m state –state GEVESTIG, VERWANTE -j AANVAARDING
as 7659 die poort van die ssh in die voorbeeld is, is dit standaard 22, alhoewel ek aanbeveel dat u na 'n "onbekende" poort gaan.
Man, ek weet nie, soos u wil ... firewall.sh en u plaas dit in rc.local (sh firewall.sh) sodat dit outomaties loop, dit hang af van watter bedryfstelsel u het, daar is lêers waar u die reëls direk kan plaas.
Eii baie goed met u script, om dit te ontleed .... Weet u hoe ek al die versoeke van my gebruikers op 'n spesifieke webwerf kon weier?…. maar hierdie webwerf het baie bedieners ....
Ek beveel ander opsies aan:
1) U kan 'n vals sone in u dns skep ...
2) U kan 'n gevolmagtigde plaas met acl
sonde-embargo
Vir iptables kan u hiervan hou ... dit is nie altyd die beste opsie nie (daar is meer maniere)
iptables -A INGANG -s blog.desdelinux.ne -j DROP
iptables -A UITVOER -d blog.fromlinux.net -j DROP
Vertel my as dit gewerk het
Dankie vir die antwoord, alles is opgeklaar. Ek het gevra oor die hawe, want ek was verbaas om 7659 te gebruik, aangesien die private hawens begin by 49152, en dit kon inmeng met een of ander diens.
Weereens, dankie vir alles, dit is lekker!
Groete.
BrodyDalle, hoe kan ek met u in aanraking kom? Baie interessant u draaiboek.
soulofmarionet_1@hotmail.com
Die vorige reël "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" is daar om te voorkom dat u eie masjien spoof? Of is dit moontlik dat een of ander vergiftigde pakkie die vergiftigde bron binnekom en kan vertrek, en daarom word die reël ook by UITVOER opgeneem?
Baie dankie vir die toeligting !!!
dit is my eie iptables-skrif, dit is baie volledig:
# franes.iptables.airy
# doc.iptables.airoso: iptables vir nalatenskap en vir nft
#
# firewall-poorte
#################################
#! / bin / bash
#
# maak die skerm skoon
################################ begin van /etc/f-iptables/default.cfg |||||
duidelik
# los 'n leë lyn
mis
uitvoer ja = »» nee = »eggo af»
# die veranderlikes wat u kan verander om toegang te verleen
##################### veranderlikes om te verander met $ ja of $ nee
uitvoer hayexcepciones = »$ no»
# daar is uitsonderings: $ ja om uitsonderlike gashere toe te laat en $ nee om uit te skakel
uitvoer hayping = »$ no»
# hayping: $ ja om ping van derde partye toe te laat en $ nee om te ontken
uitvoer haylogserver = »$ no»
# haylogeosserver: $ ja om tcp te kan aanmeld $ nee om nie tcp te kan aanmeld nie
######
##################### veranderlikes om te verander deur "," of met reekse van ":" by te voeg
uitsonderings op uitvoer = »baldras.wesnoth.org»
# uitsonderings laat enkel of meerdere gashere toe van firewall of geen waarde nie
uitvoer logserver = gooi weg, ipp, dict, ssh
# tcp bedienerpoorte wat aangeteken word wanneer pakkies binnekom
uitvoer redserver = 0/0
# redserver: die netwerk vir bedienerpoorte verkieslik plaaslike netwerk of verskeie ips
uitvoer kliënt rooi = 0/0
#clientnet: die netwerk vir kliëntpoorte verkies bo alle netwerke
uitvoer servidortcp = weggooi, ipp, dict, 6771
# servidortcp: die gespesifiseerde tcp-bedienerpoorte
uitvoer serverudp = weggooi
#udpserver: die gespesifiseerde udp-bedienerpoorte
uitvoer clientudp = domein, bootpc, bootps, ntp, 20000: 45000
#udp-kliënt: die gespesifiseerde udp-kliëntpoorte
uitvoer clienttcp = domein, http, https, ipp, git, dict, 14999: 15002
# tcp-kliënt: die gespesifiseerde tcp-kliëntpoorte
################################ einde van /etc/f-iptables/default.cfg |||||
################################### einde van veranderlikes om aan te pas
uitvoer firewall = $ 1 veranderlikes = $ 2
if ["$ variables" = "$ NULL"]; dan bron /etc/f-iptables/default.cfg;
anders bron / etc / f-iptables / $ 2; fi
#################################### of u sal die veranderlikes oorskryf met 'n .cfg-lêer
##################################### ######################## ############################ ########################
uitvoer firewall = $ 1 uitvoer veranderlikes = $ 2
####################################### ########## outomatiese stelsel veranderlikes
as ["$ firewall" = "ontkoppel"]; eggo dan BRANDMUUR ONTKOPPEL;
uitvoer activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client"]; dan eggo FIREWALL CLIENT;
uitvoer activateserver = »$ no» activateclient = »» wet = »$ no»;
elif ["$ firewall" = "bediener"]; eggo dan FIREWALL SERVER;
uitvoer activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "kliënt en bediener"]; eggo dan VUURWANDKLIËNT EN SERVER;
uitvoer aktiveer bediener = »»; uitvoer activateclient = »»; uitvoer nat = »$ no»;
elif ["$ firewall" = "toelaatbaar"]; eggo dan PERMISSIVE FIREWALL;
uitvoer activateserver = »$ no» activateclient = »$ no» wet = »»;
anders
$ check sudo echo iptables-legacy:
$ check sudo iptables-legacy -v -L INPUT
$ check sudo iptables-legacy -v -L UITVOER
$ check sudo echo iptables-nft:
$ check sudo iptables-nft -v -L INPUT
$ check sudo iptables-nft -v -L UITVOER
eggo _____parameters____ $ 0 $ 1 $ 2
eggo "gegooi sonder parameters is om iptables te lys."
eggo "Die eerste parameter (aktiveer iptables): ontkoppel of kliënt of bediener of kliënt en bediener of toelaatbaar."
eggo "Die tweede parameter: (opsioneel): die standaard .cfg-lêer kies /etc/f-iptables/default.cfg"
eggo "Veranderlike instellings:" $ (ls / etc / f-iptables /)
uitgang 0; fi
###################
mis
eggo Gooi $ 0 ontkoppel of kliënt of bediener of kliënt en bediener of toelaatbaar of veranderlikes of sonder om parameter te gebruik om iptabels te lys.
eggo Die $ 0-lêer bevat enkele veranderlike veranderlikes binne.
#################################### Bogenoemde veranderlikes geaktiveer
######################################
eggo om die iptables-veranderlikes in te stel
eggo geaktiveerde veranderlikes
mis
############################### die iptables reëls
eggo Instelling van iptables-legacy
sudo / usr / sbin / iptables-legacy -t filter -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangel -F
sudo / usr / sbin / ip6tables-legacy -t filter -F
sudo / usr / sbin / ip6tables-legacy -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangel -F
sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A UITVOER -j DROP
sudo / usr / sbin / ip6tables-legacy -A VOORUIT -j DROP
sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / 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 $ exceptions -j ACCEPT> / dev / null
$ activeer sudo-bediener / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiveer bediener 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 –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-tipe echo-antwoord -j AANVAAR> / dev / null
sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-legacy -A UITVOER -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A UITVOER -d $ uitsonderings -j ACCEPT> / dev / null
$ aktiveer sudo-bediener / usr / sbin / iptables-legacy -A UITVOER -p udp -m multiport-sport $ serverudp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
$ aktiveer bediener sudo / usr / sbin / iptables-legacy -A UITVOER -p tcp -m multiport-sport $ serverrtcp -s $ redserver -d $ redserver -j AANVAAR> / 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 UITVOER -p tcp -m multiport-sport $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A UITVOER -p icmp –icmp-tipe eggo-versoek -j AANVAAR> / dev / null
sudo / usr / sbin / iptables-legacy -A UITVOER -j DROP
sudo / usr / sbin / iptables-legacy -A VOORUIT -j DROP
eggo iptables-legacy geaktiveer
mis
eggo Instelling van 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 UITVOER -j DROP
sudo / usr / sbin / ip6tables-nft -A VOORUIT -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –porten $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ exceptions -j ACCEPT> / dev / null
$ aktiveer server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktiveer bediener 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 –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-tipe echo-antwoord -j AANVAAR> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A UITVOER -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A UITVOER -d $ uitsonderings -j AANVAAR> / dev / null
$ aktiveer bediener sudo / usr / sbin / iptables-nft -A UITVOER -p udp -m multiport-sport $ serverudp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
$ aktiveer bediener sudo / usr / sbin / iptables-nft -A UITVOER -p tcp -m multiport-sports $ serverrtcp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A UITVOER -p udp -m multiport -porten $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A UITVOER -p tcp -m multiport –porten $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A UITVOER -p icmp –icmp-tipe eggo-versoek -j AANVAAR> / dev / null
sudo / usr / sbin / iptables-nft -A UITVOER -j DROP
sudo / usr / sbin / iptables-nft -A VOORUIT -j DROP
eggo iptables-nft geaktiveer
mis
$ nat sudo / usr / sbin / iptables-legacy -F> / dev / null
$ nat sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state –staat gevestig -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A UITVOER -j AANVAAR> / dev / null
$ nat sudo / usr / sbin / iptables-legacy -A VOORUIT -j DROP> / dev / null
$ nat sudo / usr / sbin / iptables-nft -F> / dev / null
$ nat sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state –staat gevestig -j ACCEPT> / dev / null
$ nat sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ nat sudo / usr / sbin / iptables-nft -A UITVOER -j AANVAAR> / dev / null
$ nat sudo / usr / sbin / iptables-nft -A VOORUIT -j DROP> / dev / null
################################
eggo, jy het $ 0 $ 1 $ 2 gegooi
# verlaat die skrif
uitgang 0
Hoe sou ek 'n reël stel as hierdie firewall dit vir my poort gebruik en 'n inkvis in die LAN gehad het ???