Vraag Waarom ICMP niet blokkeren?


Ik denk dat ik mijn iptables-configuratie bijna heb voltooid op mijn CentOS 5.3-systeem. Hier is mijn script ...

# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains

# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP

# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Block all other traffic 
iptables -A INPUT -j DROP

Voor de context is deze machine een Virtual Private Server Web-app-host.

In een vorige vraag, Lee B zei dat ik "ICMP een beetje meer moest afsluiten". Waarom blokkeer je het niet gewoon helemaal? Wat zou er gebeuren als ik dat zou doen (wat zou er dan gebeuren)?

Als ik ICMP niet moet blokkeren, hoe kan ik er dan meer aan doen om het te vergrendelen?


50
2017-11-15 20:15


oorsprong


iptables -A INPUT -j DROP <fout (mening) u moet het beleid instellen op iptables -P INPUT DROP die in principe hetzelfde is als het instellen van een standaardwaarde. ONDANKS DEFINITIEF. - xenoterracide
Ontdek waarom het een slecht idee is om icmp te blokkeren: security.stackexchange.com/a/22713/485 - Rory Alsop


antwoorden:


ICMP is veel meer dan alleen "traceroute" en "ping". Het wordt gebruikt voor feedback wanneer u een DNS-server (poort onbereikbaar) uitvoert die, in een moderne DNS-server, daadwerkelijk kan helpen bij het selecteren van een andere machine om sneller te zoeken.

ICMP wordt ook, zoals hierboven vermeld, gebruikt voor pad MTU-ontdekking. De kans bestaat dat uw OS-sets "DF" (geen fragment) vormen op TCP-pakketten die het verzendt. Het verwacht een ICMP-pakket "fragmentatie vereist" terug te krijgen als iets langs het pad die pakketgrootte niet aankan. Als u alle ICMP blokkeert, moet uw machine andere fallback-mechanismen gebruiken, die in principe een time-out gebruiken om een ​​"zwart gat" van PMTU te detecteren en nooit correct zullen optimaliseren.

Bovendien moet u uzelf afvragen waarom u ICMP wilt blokkeren. Wat probeer je hier specifiek te voorkomen? Het is vrij duidelijk dat u niet begrijpt waarvoor ICMP wordt gebruikt, wat vrij algemeen is. Ik zou uiterst voorzichtig zijn in het blokkeren van iets dat je niet volledig begrijpt.

Om het nog moeilijker te maken om dit te leren, zeggen veel voorkomende firewallboeken "blokkeer ICMP" - het is duidelijk dat hun auteurs nog nooit een RFC hebben gelezen of problemen rond dergelijk advies moeten oplossen. Het is slecht advies om alle ICMP te blokkeren.

Nu kan snelheidsbeperking ook pijn doen. Als uw apparaat bezet is, of zelfs als dit niet het geval is, kunt u een goede hoeveelheid ICMP-verkeer ontvangen. Mijn webserver krijgt waarschijnlijk ongeveer 10-100 ICMP-pakketten per minuut, waarvan de meeste PMTU-ontdekking is. Zelfs als iemand ervoor koos mijn server aan te vallen met ICMP-pakketten van een bepaald type, is het echt niet zo'n probleem. Als je machine zelfs maar één TCP-verbinding accepteert (ssh, http, mail, enz.) Is de kans groot dat dit een grotere aanvalsvector is dan onbegrepen ICMP ooit zal zijn.


112
2017-11-15 20:56



Had het niet beter kunnen zeggen. 1 - Massimo
Er bestaat een type ICMP dat kan schadelijk zijn voor de redirect type. Dat is de enkel en alleen ICMP-type dat u ooit zou moeten overwegen om te blokkeren. - Hubert Kario
@Hubert het zou erg handig zijn als je zou kunnen linken naar meer advies over het blokkeren van de redirect. Ik begrijp nu dat ik het moet overwegen, maar ik ben niet beter - kan nog steeds niet beslissen hoe dan ook :) Is het een risico of niet? - RomanSt
Redirect ICMP-bericht vertelt de host (routers mogen deze nooit accepteren) dat een dergelijk subnet of die host beschikbaar is op een andere gateway (meestal door een snellere router). Dat zegt althans wat RFC1122 zegt. - Hubert Kario
Ik denk dat omleidingen standaard worden genegeerd op linux. Maar ja, beter om die te filteren. - Fox


ICMP wordt gebruikt voor een reeks diagnostische (bijv. Ping, traceroute) en netwerkbesturing (bijv. PMTU-ontdekking) -functies. Het willekeurig blokkeren van ICMP veroorzaakt andere mensen allerlei brandend maagzuur, en tenzij je precies weet wat je doet, moet je het met rust laten.


25
2017-11-15 20:29





Ik heb nooit begrepen waarom mensen ICMP klokten, zoals hierboven gezegd, het veroorzaakt alleen maar hoofdpijn voor jezelf en anderen. U kunt bepalen of een host gemakkelijk genoeg op is en zolang deze voldoende beperkt is om niet als DOS te worden gebruikt, dan heb ik nog nooit een overtuigende reden gehoord om deze te blokkeren. (Als iemand een reden kan verzinnen, plaats dan aub)


14
2017-11-15 20:37



Het maakt deel uit van de cultus van informatiebeveiliging. Beveiligingsmensen voelen dat ze de dingen niet hoeven te rechtvaardigen, omdat gewone stervelingen de veiligheidsimplicaties onmogelijk kunnen begrijpen. Aan de andere kant kunnen netwerk- en systeembeheershoofdpijn worden toegeschreven aan eenvoudige luiheid. Immers, als de admins wisten wat er aan de hand was, zou het nooit breken ... - duffbeer703
het lijkt me vreemd om diagnostische hulpmiddelen in wezen te doden omwille van het; omdat de informatie waar een aanvaller in zou geïnteresseerd zijn waarschijnlijk afgeleid zou kunnen zijn, ervan uitgaande dat je een andere dienst hebt die op de machine draait. Je hebt gelijk; het lijkt erg "cult" y, vraag het niet gewoon. - Antitribu
Ik heb nooit begrepen waarom auteurs van firewallboeken volledig lijken te missen dat ICMP veel meer is dan "ping" en "traceroute" en toch zeggen boeken en blogs en HOW-TO's allemaal "blokkeer ICMP". - Michael Graff
niveaus en niveaus hiervan, was uw antwoord terecht gestemd, goed gezegd. Meestal weet ik wanneer het geblokkeerd is, je kunt nooit helemaal zien wat er misgaat met intermitterende dingen, vooral wanneer er meerdere ICMP-blokken zijn onderweg. - Antitribu


je kunt gewoon proberen om icmp op die manier te beperken, het kan niet worden gebruikt als een DOS-aanval. maar er zijn veel te veel hulpprogramma's voor probleemoplossing, zoals ping, mtr (ik ben Windows-equivalent vergeten), traceroute (tracert), die icmp gebruiken. ze helemaal laten vallen is gewoon dom. Het is een goede manier om te controleren of uw instantie actief is, ook al kunt u niet telnet op poorten.

--limit 10/second
naar uw icmp-regel (s) is waarschijnlijk een fatsoenlijke limiet, gegeven hoeveel een computer daadwerkelijk aankan.


8
2017-11-15 20:28





Hier is een alternatief gezichtspunt, in de geest van wat de beveiligingstheorie zou suggereren. Andere posters hebben gelijk dat de beveiligingspraktijk vaak overijverig is, maar er is een goede basis te veel van.

De beveiligingstheorie is over het algemeen dat je alleen inschakelt WAT JE NODIG HEBT. Andere dingen (die nuttig kunnen zijn - bijvoorbeeld, ping-antwoorden) kunnen door een aanvaller worden gebruikt om uw systeem te bepalen, of mogelijk als een aanvalsvector voor een nog te ontdekken kwetsbaarheid.

Dus, kijkend naar ICMP-berichttypen, wat heeft u nodig voor een normale, juiste werking van uw systeem?

  • echo antwoord (ping) - niet zo veel
  • bestemming onbereikbaar - veel nuttige informatie hier. Schakel dit uit en u verbreekt de toegang tot uw server voor sommige clients.
  • source quench - verouderd sinds 1995 en blijkbaar verwijderd van hostimplementaties sinds (ten laatste) 2005. tools.ietf.org/html/rfc6633#section-1.
  • omleiding - bijna zeker niet
  • routeradvertentie & uitnodiging - niet nodig als u uw routes statisch configureert en zou kunnen worden gebruikt voor DoS. Ik zou het blokkeren tenzij je weet dat je het nodig hebt, en als je het nodig hebt, codeer dan misschien een regel om informatie te accepteren van alleen de mogelijk bekende routers.
  • ttl overschreden - niet alleen voor traceroute, vertelt u dat uw verkeer niet op zijn bestemming aankomt

...enzovoorts. Als je dit echt wilt begrijpen, leer dan over de verschillende ICMP-typen en waar ze voor zijn. De wikipedia-artikel is een goed startpunt.

In de praktijk is de echt lelijke redirect; als je gewoon iets snel en nuttig wilt doen, blokkeer dat en laat de rest toe.

Ik zou willen toevoegen dat het bijhouden van IPtables-verbindingen ervoor zorgt dat de juiste ICMP-pakketten kunnen worden geretourneerd voor actieve verbindingen. Dus als u conntrack gebruikt, zou u in staat moeten zijn om de meeste ICMP inkomende te blokkeren, zolang u VERWANTE pakketten accepteert (voordat u ICMP in uw regelset blokkeert).


6
2017-12-07 16:32



Feitelijk is source quench gedeprecieerd sinds 1995 en blijkbaar verwijderd van hostimplementaties sinds (uiterlijk) 2005 :). tools.ietf.org/html/rfc6633#section-1. - sourcejedi
antwoord bijgewerkt, bedankt. Als ik het wat moeilijker had gemaakt, had ik dat wel onthouden, duh. - Dan Pritts
Ik denk dat ICMP PING vereist is voor PMTU-ontdekking (die veel browsers en hulpmiddelen gebruiken). Als u het niet toestaat, is het alsof u niet beleefd bent voor uw gebruikers. Ping wordt ook voor veel diagnostische doeleinden gebruikt, en de meeste grote spelers laten het toe. Bovendien heeft het weinig zin om het te weigeren. - jjmontes
Echo (ping) -pakketten zijn niet vereist voor PMTU-detectie. PMTU-detectie wordt gedaan door het niet-fragmenteren (DF) bit op uitgaande pakketten in te stellen, en hangt af van ICMP-bestemming onbereikbaar - fragmentatie nodig berichten die terugkomen van routers met kleinere link MTU's. Ping is zeker handig voor diagnostische doeleinden, maar het is ook handig voor netwerkverkenning en mogelijk voor DoS. Voor zover jij en ik weten is er een latente remote-root bug in de ICMP-stack in Linux. Als uw standaard "ik heb dit nodig" is, is het antwoord "nee". - Dan Pritts
(Merk op dat ik in het antwoord schreef dat het blokkeren van niet-bereikbare bestemmingsberichten dingen zal verbreken. PMTU-ontdekking was eigenlijk waar ik aan dacht. :) - Dan Pritts


Het is een handige diagnostische tool voor het oplossen van netwerkconnectiviteitsproblemen.

U kunt ook verbindingen elders op internet gebruiken die kleinere MTU's gebruiken dan in uw netwerk. Als u probeert een pakket ergens te verzenden dat te groot is en niet gefragmenteerd kan worden, laat het apparaat het pakket vallen en verzendt een ICMP fragmentatie nodig pakket terug naar de afzender. Als u alle ICMP-pakketten laat vallen, verliest u die en gebeuren rare dingen op uw netwerk.

De echte vraag is "waarom ICMP blokkeren?" Wat krijg je? Heb gewoon goede filterregels aan je grens en voor je waardevolle bezittingen.


4
2017-11-15 20:37





ping is een leuke diagnostische tool, je zou echt willen dat je het ooit had. Ik gebruik deze:

-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT

je zou het ook willen afremmen.


3
2017-11-15 20:19



Dit is hopeloos ontoereikend om redenen die anderen hebben aangevoerd (ICMP is veel meer dan alleen ping). Je moet selectief blokkeren specifiek, potentieel schadelijk ICMP-berichten en staan ​​andere besturingsberichten toe via ongehinderd. - voretaq7