Mi iom pripensis du aferojn pri iptables: la plej multaj el tiuj, kiuj serĉas ĉi tiujn lernilojn, estas komencantoj kaj due multaj jam serĉas ion sufiĉe simplan kaj jam ellaboritan.
Ĉi tiu ekzemplo estas por retservilo, sed vi povas facile aldoni pli da reguloj kaj adapti ĝin al viaj bezonoj.
Kiam vi vidas "x" ŝanĝi por viaj IP-oj
#!/bin/bash
# Ni purigas iptables-tablojn -F iptables -X # Ni purigas NAT-iptables -t nat -F iptables -t nat -X # mangle tablo por aferoj kiel PPPoE, PPP, kaj ATM-iptables -t mangle -F iptables -t mangle -X # Politikoj Mi pensas, ke ĉi tio estas la plej bona maniero por komencantoj kaj # ankoraŭ ne malbone, mi klarigos eliron (eligo) ĉio ĉar ili estas eksiĝintaj ligoj #, enigo ni forĵetas ĉion, kaj neniu servilo devas plusendi. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. Ĉio, kio jam estas konektita (establita), restas tiel: iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, ni ne specifas la interfacon ĉar # ni volas, ke ĝi estu ĉiuj iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh nur interne kaj de ĉi tiu gamo de ip-iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intrareto --dport 7659 -j ACCEPT # monitorado ekzemple se ili havas zabbix aŭ iu alia snmp-servo iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intrareto --dport 10050 -j ACCEPT # icmp, ping bone dependas de vi 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 if you want to send some mail # iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - the real wan ip of your server LAN_RANGE = "192.168.xx / 21 "# LAN-gamo de via reto aŭ viaj vlan # Ip-oj, kiuj neniam devas eniri la retreto,estas uzi iom da # logiko se ni havas pure WAN-interfacon, ĝi neniam devas eniri # LAN-tipan trafikon tra tiu interfaco 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 "# Defaŭlta ago - plenumota kiam iu regulo kongruas kun ACTION =" DROP "# Pakaĵoj kun la sama ip de mia servilo per la malplenaj iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paketoj kun la LAN-Gamo por la malforta, mi metis ĝin tiel, se vi havas # iun apartan reton, sed ĉi tio estas superflua kun la sekva # regulo ene la buklo "por" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Ĉiuj SPOOF-Retoj ne permesataj de la malforta por ip en $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION done
Kiel ĉiam mi atendas viajn komentojn, restu atentaj en ĉi tiu blogo, Dankon
12 komentoj, lasu la viajn
Ĝi helpas min plu lerni iom pli dankon kopiitan.
vi estas bonvena, ĝoja esti helpa
Mi vere bedaŭras, sed mi havas du demandojn (kaj unu donace 😉):
Ĉu vi alvenus kun ĉi tiu agordo por havi Apache funkcianta kaj fermi la reston krom SSH?
#Ni purigas tablojn
iptables -F
iptables -X
Ni purigas NAT
iptables -t nat -F
iptables -t nat -X
iptables -A ENIGO -p tcp –dport 80 -j AKCEPT
ssh nur interne kaj de ĉi tiu gamo de ip-oj
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intrareto –port 7659 -j AKCEPTI
Dua demando: Ĉu 7659 estas la haveno uzita en SSH en ĉi tiu ekzemplo?
Kaj tria kaj lasta: en kiu dosiero oni devas konservi ĉi tiun agordon?
Koran dankon pro la lernilo, estas domaĝe, ke vi estas tia novulo kaj ne povas bone utiligi ĝin.
jen la regulo, kiun vi bezonas por http de apache
iptables -A ENIGO -p tcp –dport 80 -j AKCEPT
sed vi ankaŭ bezonas deklari malplenajn politikojn (ĝi estas en la skripto)
iptables -P ENIGA GUTO
iptables -P ELIDA AKCEPTO
iptables -P AVANTA GUTO
kaj ĉi tio ĉar se vi estas malproksima, ĝi forĵetos vin.
iptables -A INPUT -m state –state STARED, RELATED -j ACCEPT
se 7659 estas la haveno de tiu ssh en la ekzemplo, defaŭlte ĝi estas 22, kvankam mi rekomendas vin ŝanĝi al "ne konata" haveno
viro, mi ne scias, kiel vi volas ... firewall.sh kaj vi metas ĝin en rc.local (sh firewall.sh) tiel ke ĝi funkcias aŭtomate, ĝi dependas de kiu operaciumo vi havas, estas dosieroj kie vi povas meti la regulojn rekte.
He, via skripto estas tre bona, analizante ĝin ... Ĉu vi scias, kiel mi povus nei ĉiujn petojn de miaj uzantoj al specifa retejo? .... sed ĉi tiu retejo havas multajn servilojn ...
Mi rekomendas aliajn eblojn:
1) Vi povas krei falsan zonon en via dns ...
2) Vi povas meti prokurilon kun acl
peka embargo
Por iptables vi povas ŝati ĉi tion ... ĝi ne ĉiam estas la plej bona elekto (ekzistas pli da manieroj)
iptables -A INPUT -s blog.desdelinux.ne -j FALO
iptables -A ELITO -d blogo.fromlinux.net -j GUTU
Diru al mi, ĉu ĝi funkciis
Dankon pro la respondo, ĉio klariĝis. Mi demandis pri la haveno, ĉar mi surpriziĝis uzi la 7659, ĉar la privataj havenoj komenciĝas en la 49152, kaj ĝi povus malhelpi iun servon aŭ ion similan.
Denove, dankon pro ĉio, tio estas agrabla!
Salutojn.
BrodyDalle, kiel mi povas kontakti vin? Tre interesa via skripto.
soulofmarionet_1@hotmail.com
La antaŭan lastan linion "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" estas por malebligi ke via propra maŝino falsas? Aŭ ĉu eblas, ke iu venenigita pakaĵeto eniras kaj povas foriri kun tiu venenigita fonto kaj tial la regulo ankaŭ estas inkluzivita kun ELITO?
Koran dankon pro la klarigo !!!
ĉi tiu estas mia propra iptables-skripto, ĝi estas tre kompleta:
# franes.iptables.airy
# doc.iptables.airoso: iptables por heredaĵo kaj por nft
#
# fajroŝirmaj havenoj
##############################
#! / bin / bash
#
# malplenigi la ekranon
################################ komenco de /etc/f-iptables/default.cfg |||||
klara
# lasu malplenan linion
eĥo
eksporti jes = »» ne = »ripeti»
# la variabloj, kiujn vi povas ŝanĝi por permesi aliron
####################### variabloj por modifi per $ jes aŭ $ ne
eksporti hayexcepciones = »$ ne»
# estas esceptoj: $ jes por permesi esceptajn gastigantojn kaj $ ne malebligi
eksporti fojnadon = »$ ne»
# friponado: $ jes por permesi al triaj pingoj kaj $ ne por nei
eksporti haylogserver = »$ ne»
# haylogeosserver: $ jes por povi registri tcp $ ne por ne povi registri tcp
######
####################### variabloj modifeblaj aldonante "," aŭ kun gamoj de ":"
eksportaj esceptoj = »baldras.wesnoth.org»
# esceptoj permesas unuopajn aŭ plurajn gastigantojn de fajromuro aŭ senvalora
export logserver = forĵeti, ipp, dict, ssh
# TCP servilaj havenoj, kiuj estas registritaj kiam pakoj envenas
eksporta redservilo = 0/0
# redserver: la reto por servilaj havenoj preferinda loka reto aŭ pluraj IPs
eksporta kliento ruĝa = 0/0
#clientnet: la reto por klientaj havenoj preferinda al ĉiuj retoj
eksporti servidortcp = forĵeti, ipp, dikti, 6771
# servidortcp: la specifitaj tcp-servilaj havenoj
eksporti servilonudp = forĵeti
#udpserver: la specifaj havenoj de udp-servilo
eksporti clientudp = domajno, bootpc, bootps, ntp, 20000: 45000
#udp-kliento: la specifaj havenoj de kliento UDP
eksporti klienton = domajno, http, https, ipp, git, dict, 14999: 15002
# tcp-kliento: la specifaj tcp-klientaj havenoj
############################## fino de /etc/f-iptables/default.cfg |||||
################################ fino de modifeblaj variabloj
eksporti fajromuron = $ 1-variabloj = $ 2
if ["$ variabloj" = "$ NULL"]; tiam fonto /etc/f-iptables/default.cfg;
else source / etc / f-iptables / $ 2; fi
################################ aŭ anstataŭigos la variablojn per .cfg-dosiero
####################################################### ############################################
eksporti fajromuron = $ 1 eksporti variablojn = $ 2
########################################### aŭtomataj sistemaj variabloj
if ["$ firewall" = "malkonektita"]; tiam eou Fajromuro malkonektita;
eksportado activateserver = »$ ne» activateclient = »$ ne» malseka = »$ ne»;
elif ["$ firewall" = "kliento"]; tiam e echu Fajromura kliento;
eksporti activateserver = »$ ne» activateclient = »» malseka = »$ ne»;
elif ["$ firewall" = "servilo"]; tiam eou Fajromura Servilo;
eksporti activateserver = »» activateclient = »$ ne» malseka = »$ ne»;
elif ["$ firewall" = "kliento kaj servilo"]; tiam eou Fajromura kliento kaj servilo;
eksporti aktivigi servilon = »»; eksporti aktivan klienton = »»; eksporti malseka = »$ ne»;
elif ["$ firewall" = "permesa"]; tiam eou PERMESAN Fajromuron;
eksportado activateserver = »$ ne» activateclient = »$ ne» malseka = »»;
alia
$ kontrolu sudo echo iptables-heredaĵo:
$ kontrolu sudo iptables-legacy -v -L INPUT
$ kontrolu sudo iptables-legacy -v -L ELSENDO
$ kontrolu sudo echo iptables-nft:
$ kontrolu sudo iptables-nft -v -L INPUT
$ kontrolu sudo iptables-nft -v -L OUTPUT
eoo _____parametroj____ $ 0 $ 1 $ 2 $
eoo "rolantaro sen parametroj estas listigi iptables."
echo "Unua parametro (ebligi iptables): malkonektita aŭ kliento aŭ servilo aŭ kliento kaj servilo aŭ permesema."
echo "La dua parametro: (nedeviga): la dosiero default.cfg elektas /etc/f-iptables/default.cfg"
echo "Variaj agordoj:" $ (ls / etc / f-iptables /)
eliro 0; fi
##################
eĥo
eoo owsetas $ 0 malkonektitan aŭ klienton aŭ servilon aŭ klienton kaj servilon aŭ cedeman aŭ variablojn aŭ sen uzi parametron por listigi iptables.
echo La $ 0-dosiero enhavas kelkajn redakteblajn variablojn interne.
################################# la supraj variabloj aktivigitaj
###################################
eoa agordo de la variabloj iptables
eoo aktivigitaj variabloj
eĥo
############################ la iptables-reguloj
eoo Agordi iptables-heredaĵon
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 filtrilo -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 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 $ esceptoj -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivigi servilon 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 created -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 created -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -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
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ esceptoj -j ACCEPT> / dev / null
$ aktivigi sudan servilon / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivateclient 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 - deportoj $ 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
eoo iptables-heredaĵo ebligita
eĥo
echo Agordo iptables-nft
sudo / usr / sbin / iptables-nft -t filtrilo -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t filtrilo -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 ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport - deportoj $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ esceptoj -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiporto -portoj $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiporto -portoj $ 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 created -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 created -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -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
$ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ esceptoj -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivigi servilon sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ aktiva kliento sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiporto -portoj $ 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
eoo iptables-nft ebligita
eĥo
$ malseka sudo / usr / sbin / iptables-legacy -F> / dev / null
$ malseka sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-legacy -A INPUT -m stato –ŝtato establita -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ malseka sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -F> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -A INPUT -m stato –ŝtato establita -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ malseka sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
#############################
eoon vi ĵetis $ 0 $ 1 $ 2 $
# forlasas la skripton
eliro 0
Kiel mi starigus regulon, se ĉi tiu fajroŝirmilo uzus ĝin por mia enirejo kaj havus kalmaron ene de la LAN ???