Dit document beschrijft hoe u de Cisco security applicaties ASA/PIX 8.x kunt configureren die gebruik maakt van reguliere expressies met Modular Policy Framework (MPF) om bepaalde FTP-sites te blokkeren of toe te staan op basis van de servernaam.
Dit document gaat ervan uit dat de Cisco security applicatie correct is geconfigureerd en werkt.
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
Cisco 5500 Series adaptieve security applicatie (ASA) die de softwareversie 8.0(x) en hoger uitvoert
Cisco Adaptieve Security Device Manager (ASDM) versie 6.x voor ASA 8.x
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Raadpleeg Cisco Technical Tips Conventions (Conventies voor technische tips van Cisco) voor meer informatie over documentconventies.
MPF biedt een consistente en flexibele manier om de functies van security applicaties te configureren. U kunt bijvoorbeeld MPF gebruiken om een tijdelijke configuratie te maken die specifiek is voor een bepaalde TCP-toepassing, in tegenstelling tot een die van toepassing is op alle TCP-toepassingen.
MPF ondersteunt deze functies:
TCP-normalisatie, TCP- en UDP-verbindingslimieten en -time-outs, en randomisatie van TCP-volgnummer
CSC
Toepassingscontrole
IPS
Toezicht QoS-invoer
QoS-uitvoertoezicht
QoS-prioriteitswachtrij
De configuratie van MPF bestaat uit vier taken:
Identificeer Layer 3- en Layer 4-verkeer waarop u acties wilt toepassen. Verwijs naar het Identificeren van verkeer met behulp van een Layer 3/4 Class Map voor meer informatie.
(Alleen toepassingscontrole) Definieer speciale acties voor applicatiecontroleverkeer. Raadpleeg Speciale acties configureren voor toepassingsinspecties voor meer informatie.
Pas acties op Layer 3 en Layer 4-verkeer toe. Zie Acties definiëren met behulp van een Layer 3/4 Policy Map voor meer informatie.
Activeer de acties op een interface. Zie Een Layer 3/4-beleid toepassen op een interface met een servicebeleid voor meer informatie.
Een reguliere expressie matcht tekststrings ofwel letterlijk als een exacte string of met het gebruik van metacharacters, zodat je meerdere varianten van een tekststring kunt matchen. U kunt gebruikmaken van een reguliere expressie om de inhoud van bepaald toepassingsverkeer aan te passen. U kunt bijvoorbeeld een URL-string aanpassen in een HTTP-pakket.
Opmerking: Gebruik Ctrl+V om alle speciale tekens in de CLI te ontwijken, zoals vraagtekens (?) of tabbladen. Typ bijvoorbeeld d[Ctrl+V]g om d?g in te voeren in de configuratie.
Gebruik de opdracht Regex om een reguliere expressie te maken. Daarnaast kan de regex-opdracht gebruikt worden voor verschillende functies die tekstaanpassing vereisen. U kunt bijvoorbeeld speciale acties voor toepassingsinspectie configureren met behulp van het MPF dat een overzicht van het inspectiebeleid gebruikt. Raadpleeg de opdracht Beleids-plattegrond inspecteren voor meer informatie.
In de kaart van het inspectiebeleid, kunt u het verkeer identificeren u wilt handelen op als u een kaart creeert van de inspectieklasse die één of meerdere gelijke bevelen bevat, of u kunt gelijke bevelen in de kaart van het inspectiebeleid direct gebruiken. Met sommige matchopdrachten kunt u tekst in een pakket herkennen met behulp van een reguliere expressie. U kunt bijvoorbeeld URL-strings aanpassen binnen HTTP-pakketten. U kunt reguliere expressies groeperen in een klassenkaart voor reguliere expressies. Verwijs naar het klasse-kaart type regex bevel voor meer informatie.
Deze tabel geeft de metatekens aan die een speciale betekenis hebben.
Teken | Beschrijving | Opmerkingen |
. | stip | Komt overeen met één willekeurig teken. Bijvoorbeeld, d.g komt overeen met hond, dag, dtg, en elk woord dat die tekens bevat, zoals doggonnit. |
(exp) | Subexpression | Een subexpressie scheidt tekens van omliggende tekens, zodat u andere tekens op de subexpressie kunt gebruiken. Bijvoorbeeld, d(o|a)g past hond en dag, maar do|ag wedstrijden doen en ag. Een subexpressie kan ook gebruikt worden met herhaalde kwantificeerders om de tekens te onderscheiden die bedoeld zijn voor herhaling. Bijvoorbeeld, ab (xy){3} z past abxyxyxyxyz aan. |
| | Alternatie | Komt overeen met beide expressies die worden gescheiden. Bijvoorbeeld, hond|kat past hond of kat. |
? | Vraagteken | Een kwantificeermiddel dat aangeeft dat er 0 of 1 van de vorige expressie is. Bijvoorbeeld, o?se komt overeen met verlies of verlies. N.B.: U moet Ctrl+V invoeren en vervolgens het vraagteken plaatsen of de Help-functie wordt aangeroepen. |
* | Asterisk | Een kwantificeermiddel dat aangeeft dat er 0, 1, of een willekeurig aantal van de vorige expressie zijn. Bijvoorbeeld, lo*se komt overeen met verlies, verlies, los, enzovoort. |
{x} | Herhalingskwantificator | Doe dit exact x keer. Bijvoorbeeld, ab (xy){3} z past abxyxyxyxyz aan. |
{x,} | Minimale herhalingskwantificator | Herhaal dit ten minste x keer. Bijvoorbeeld, ab(xy){2} z komt overeen met abxyxyz, abxyxyxyxyxyz, enzovoort. |
[abc] | Tekenklasse | Komt overeen met elk teken tussen haakjes. Bijvoorbeeld, [abc] komt overeen met a, b of c. |
[^abc] | Negatieve tekenklasse | Komt overeen met één teken dat niet tussen de haakjes voorkomt. Bijvoorbeeld [^abc] komt overeen met elk teken anders dan a, b of c. [^A-Z] komt overeen met elk teken dat geen hoofdletter is. |
[a-c] | Klasse van tekenbereik | Komt overeen met elk teken in het bereik. [a-z] komt overeen met elke kleine letter. U kunt tekens en bereiken combineren: [abcq-z] komt overeen met a, b, c, q, r, s, t, u, v, w, x, y, z en [a-cq-z] ook. Het streepje (-) teken is alleen letterlijk als het het laatste of het eerste teken binnen de haakjes is: [abc-] of [-abc]. |
"" | Aanhalingstekens | Behoudt spaties aan het einde of aan het begin in de string. Bijvoorbeeld, " test" bewaart de leidende ruimte wanneer het op zoek is naar een overeenkomst. |
^ | caret | Specificeert het begin van een regel. |
\ | Escape-teken | Wanneer gebruikt met een metateken, past een letterlijk teken aan. Bijvoorbeeld \[komt overeen met de linkervierkante haakje. |
klusje | Teken | Wanneer het teken geen metateken is, komt dit overeen met het letterlijke teken. |
\r | Retourvlucht | Komt overeen met een wagenterugloop: 0x0d. |
\n | Newline | Komt overeen met een nieuwe regel: 0x0a. |
\t | Tab | Komt overeen met een tabblad: 0x09. |
\f | FormFiller | Komt overeen met een formulierfeed: 0x0c. |
\xNN | Geëindigd hexadecimaal nummer | Komt overeen met een ASCII-teken dat een hexadecimaal teken gebruikt dat exact twee cijfers bevat. |
\NNN | Ontsnapt octale nummer | Komt overeen met een ASCII karakter als octal dat precies drie cijfers is. Het teken 040 geeft bijvoorbeeld een spatie weer. |
Deze sectie bevat informatie over het configureren van de functies die in dit document worden beschreven.
Opmerking: Gebruik de Command Lookup Tool (alleen voor geregistreerde klanten) voor meer informatie over de opdrachten die in deze sectie worden gebruikt.
Het netwerk in dit document is als volgt opgebouwd:
Opmerking: geselecteerde FTP-sites zijn toegestaan of geblokkeerd via reguliere expressies.
Dit document gebruikt de volgende configuraties:
ASA CLI configureren |
---|
ciscoasa#show run
: Saved
:
ASA Version 8.0(4)
!
hostname ciscoasa
domain-name cisco.com
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface GigabitEthernet0/0
nameif outside
security-level 0
ip address 10.66.79.86 255.255.255.224
!
interface GigabitEthernet0/1
nameif inside
security-level 100
ip address 10.238.26.129 255.255.255.248
!
interface Management0/0
shutdown
no nameif
no security-level
no ip address
!
!--- Write regular expression (regex) to match the FTP site you want !--- to access. NOTE: The regular expression written below must match !--- the response 220 received from the server. This can be different !--- than the URL entered into the browser. For example, !--- FTP Response: 220 g1u0103c.austin.hp.com
regex FTP_SITE1 "([0-9A-Za-z])*[Hh][Pp]\.[Cc][Oo][Mm]"
regex FTP_SITE2 "([0-9A-Za-z])* CISCO SYSTEMS ([0-9A-Za-z])*"
!--- NOTE: The regular expression will be checked against every line !--- in the Response 220 statement (which means if the FTP server !--- responds with multiple lines, the connection will be denied if !--- there is no match on any one line).
boot system disk0:/asa804-k8.bin
ftp mode passive
pager lines 24
logging enable
logging timestamp
logging buffered debugging
mtu outside 1500
mtu inside 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image disk0:/asdm-61557.bin
no asdm history enable
arp timeout 14400
global (outside) 1 interface
nat (inside) 1 0.0.0.0 0.0.0.0
route outside 0.0.0.0 0.0.0.0 10.66.79.65 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
dynamic-access-policy-record DfltAccessPolicy
http server enable
http 0.0.0.0 0.0.0.0 inside
http 0.0.0.0 0.0.0.0 outside
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
telnet timeout 5
ssh scopy enable
ssh timeout 5
console timeout 0
management-access inside
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept
class-map type regex match-any FTP_SITES
match regex FTP_SITE1
match regex FTP_SITE2
!−−− Class map created in order to match the server names !−−− of FTP sites to be blocked by regex.
class-map type inspect ftp match-all FTP_class_map
match not server regex class FTP_SITES
!−−− Write an FTP inspect class map and match based on server !--- names, user name, FTP commands, and so on. Note that this !--- example allows the sites specified with the regex command !--- since it uses the match not command. If you need to block !--- specific FTP sites, use the match command without the not option.
class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map type inspect ftp FTP_INSPECT_POLICY
parameters
class FTP_class_map
reset log
!−−− Policy map created in order to define the actions !--- such as drop, reset, or log.
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect h323 h225
inspect h323 ras
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
inspect icmp
inspect ftp strict FTP_INSPECT_POLICY
!--- The FTP inspection is specified with strict option !--- followed by the name of policy.
service-policy global_policy global
prompt hostname context
Cryptochecksum:40cefb1189e8c9492ed7129c7577c477
: end |
Voltooi de volgende stappen om de reguliere expressies te configureren en pas ze toe op MPF om de specifieke FTP-sites te blokkeren:
Bepaal de naam van de FTP-server.
De FTP-inspectie engine kan inspectie leveren met behulp van andere criteria, zoals opdracht, bestandsnaam, bestandstype, server en gebruikersnaam. Bij deze procedure wordt de server als criterium gebruikt. De FTP-inspectietool gebruikt de server 220-respons die door de FTP-site is verzonden als de serverwaarde. Deze waarde kan verschillen van de domeinnaam die door de site wordt gebruikt. Dit voorbeeld gebruikt Wireshark om FTP-pakketten op te nemen op de site die is geïnspecteerd om de respons 20-waarde te krijgen voor gebruik in onze reguliere expressie in stap 2.
Gebaseerd op de Capture is de response 220-waarde voor ftp://hp.com (bijvoorbeeld) q5u0081c.atlanta.hp.com.
Reguliere expressies maken.
Kies Configuratie > Firewall > Voorwerpen > Reguliere expressies, en klik op Add onder het tabblad Reguliere expressie om reguliere expressies te maken zoals in deze procedure wordt beschreven:
Maak een reguliere expressie, FTP_SITE1, om de respons aan te passen 220 (zoals te zien is in de pakketopname in Wireshark of een ander gebruikt gereedschap) die ontvangen is van de ftp-site (bijvoorbeeld ".* hp\.com.*") en klik op OK.
Opmerking: u kunt klikken op Build voor hulp bij het maken van meer geavanceerde reguliere expressies.
Klik op Toepassen nadat de reguliere expressie is gemaakt.
Maak reguliere expressieklassen.
Kies Configuratie > Firewall > Voorwerpen > Reguliere expressies, en klik op Add onder het kopje Reguliere expressieklassen om de klasse te maken zoals in deze procedure wordt beschreven:
Maak een reguliere expressieklasse aan, FTP_SITES, zodat deze overeenkomt met een van de reguliere expressies FTP_SITE1 en FTP_SITE2, en klik op OK.
Zodra de klassenkaart wordt gemaakt, klikt u op Toepassen.
Inspecteer het geïdentificeerde verkeer met klassenkaarten.
Kies Configuratie > Firewall > Voorwerpen > Klasse Maps > FTP > Add, klik met de rechtermuisknop op en kies Add om een klassenkaart te maken om het FTP-verkeer te inspecteren dat wordt geïdentificeerd door verschillende reguliere expressies zoals in deze procedure beschreven:
Maak een class map, FTP_Block_Site, om de FTP response 220 te matchen met de reguliere expressies die u aanmaakt.
Als u de in de reguliere expressie gespecificeerde sites wilt uitsluiten, klikt u op het keuzerondje Geen overeenkomst.
Kies in het vak Waarde een reguliere expressie of een reguliere expressieklasse. Voor deze procedure, kies de klasse die vroeger werd gecreëerd.
Klik op Apply (Toepassen).
Stel de acties voor het overeenkomende verkeer in in het inspectiebeleid.
Kies Configuratie > Firewall > Objecten > Kaarten inspecteren > FTP> Toevoegen om een inspectiebeleid te maken en stel de actie voor het overeenkomende verkeer in zoals vereist.
Voer de naam en een beschrijving in voor het inspectiebeleid. (Bijvoorbeeld FTP_INSPECT_POLICY.)
Klik op Details.
Klik op het tabblad Inspecties. (1)
Klik op Add (Toevoegen). (2)
Klik op de radioknop Meerdere overeenkomsten en kies de verkeersklasse in de vervolgkeuzelijst. (3)
Kies de gewenste reset-actie om in- of uit te schakelen. In dit voorbeeld kan FTP-verbinding worden hersteld voor alle FTP-sites die niet overeenkomen met onze gespecificeerde sites. (4)
Klik op OK, klik nogmaals op OK en klik vervolgens op Toepassen. (5)
Pas het FTP-beleid van de inspectie toe op de algemene inspectielijst.
Kies Configuratie > Firewall > Regels voor servicebeleid.
Selecteer aan de rechterkant het inspection_default beleid en klik op Bewerken.
Klik op de knop Configureren onder het tabblad Handelingen regels (1) voor FTP. (2)
In het dialoogvenster FTP-inspectiekaart selecteren, schakelt u het selectievakje Streng FTP gebruiken in en klikt u vervolgens op de FTP-controlekaart voor fijne controle over de controleknop.
Het nieuwe FTP-inspectiebeleid, FTP_INSPECT_POLICY, moet in de lijst zichtbaar zijn.
Klik op OK, klik nogmaals op OK en klik vervolgens op Toepassen.
Gebruik deze sectie om te controleren of uw configuratie goed werkt.
De Output Interpreter Tool (OIT) (alleen voor geregistreerde klanten) ondersteunt bepaalde opdrachten met show. Gebruik de OIT om een analyse te bekijken van de output van de opdracht show.
toon in werking stelt -in werking stellen-Config—Toont de regelmatige uitdrukkingen die zijn gevormd.
ciscoasa#show running-config regex regex FTP_SITE1 "[Cc][Ii][Ss][Cc][Oo]\.[Cc][Oo][Mm]" regex FTP_SITE2 ".*hp\.com.*"
toon in werking stelt -in werking stellen-configuratieklasse−map-toont de klassenkaarten die zijn gevormd.
ciscoasa#show running-config class-map class-map type regex match-any FTP_SITES match regex FTP_SITE1 match regex FTP_SITE2 class-map type inspect ftp match-all FTP_Block_Site match not server regex class FTP_SITES class-map inspection_default match default-inspection-traffic !
toon in werking stelt-in werking stelt beleid-kaart type inspecteren http-toont de beleidskaarten die het verkeer van HTTP inspecteren dat is gevormd.
ciscoasa#show running-config policy-map type inspect ftp ! policy-map type inspect ftp FTP_INSPECT_POLICY parameters mask-banner mask-syst-reply class FTP_Block_Site reset log !
Toon in werking stelt -in werking stellen-Config beleid-kaart-Toont alle configuraties van de beleidskaart, evenals de configuratie van de standaardbeleidskaart.
ciscoasa#show running-config policy-map ! policy-map type inspect dns preset_dns_map parameters message-length maximum 512 policy-map type inspect ftp FTP_INSPECT_POLICY parameters mask-banner mask-syst-reply class FTP_Block_Site reset log policy-map global_policy class inspection_default inspect dns preset_dns_map inspect h323 h225 inspect h323 ras inspect netbios inspect rsh inspect rtsp inspect skinny inspect esmtp inspect sqlnet inspect sunrpc inspect tftp inspect sip inspect xdmcp inspect ftp strict FTP_INSPECT_POLICY !
toon in werking stelt -in werking stellen-in werking stellen dienst-beleid-Toont alle momenteel lopende configuraties van het de dienstbeleid.
ciscoasa#show running-config service-policy service-policy global_policy global
Deze sectie bevat informatie waarmee u problemen met de configuratie kunt oplossen.
U kunt de opdracht show service-policy gebruiken om te verifiëren dat de inspectieengine het verkeer inspecteert en deze correct toestaat of verlaagt.
ciscoasa#show service-policy Global policy: Service-policy: global_policy Class-map: inspection_default Inspect: dns preset_dns_map, packet 0, drop 0, reset-drop 0 Inspect: h323 h225 _default_h323_map, packet 0, drop 0, reset-drop 0 Inspect: h323 ras _default_h323_map, packet 0, drop 0, reset-drop 0 Inspect: netbios, packet 0, drop 0, reset-drop 0 Inspect: rsh, packet 0, drop 0, reset-drop 0 Inspect: rtsp, packet 0, drop 0, reset-drop 0 Inspect: skinny , packet 0, drop 0, reset-drop 0 Inspect: esmtp _default_esmtp_map, packet 0, drop 0, reset-drop 0 Inspect: sqlnet, packet 0, drop 0, reset-drop 0 Inspect: sunrpc, packet 0, drop 0, reset-drop 0 Inspect: tftp, packet 0, drop 0, reset-drop 0 Inspect: sip , packet 0, drop 0, reset-drop 0 Inspect: xdmcp, packet 0, drop 0, reset-drop 0 Inspect: ftp strict FTP_INSPECT_POLICY, packet 40, drop 0, reset-drop 2
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
21-Jul-2009 |
Eerste vrijgave |