Les firewalls Cisco ASA 5505 sont encore très répandus. On en trouve de plus d’occasion ou reconditionnés à des prix intéressants. Nous publions ci-après une configuration de base pour ce matériel.
Cette configuration suppose une utilisation de l’équipement en mode routage, avec une IP publique directe chez un opérateur. Cette configuration a le mérite d’être simple, de fonctionner et de pouvoir servir de base à une configuration plus avancée en fonction des besoins en sécurité. Cette configuration fonctionne également, avec quelques modifications mineures sur les ASA 5506-X.
Cette configuration permet d’accéder en VPN anyconnect à l’équipement pour l’administrer via SSH. Nous n’avons pas ajouté, dans cette version de base, l’authentification par clé, qui fera l’objet d’un post ultérieur.
Définition de la configuration
LAN
- Management : 192.168.77.1
- Gateway (interface in) : 192.168.22.254
- Ip publique : 19.22.25.45
- Domain : ISITIX-france.com
- Ne pas utiliser la .1 sur le réseau interne (192.168.22.1) qui correspond à la box operateur.
- Machines sont en 192.168.22.x / 24
A l’issue de la mise en place du nouveau firewall, modifier le pool d’adresses IP privées pour passer la passerelle operateur en 192.168.22.1 (ticket à déposer chez OBS)
Pool public
- Sous-réseau : 19.22.25.40 (réservé)
- Plage : 40 jusqu’à 47
- Broadcast : 47
- Routeur opérateur : 46
- Masque : 255.255.255.248
- DNS : 19.2.0.20, 19.2.0.50
Pool privé spécifique opérateur avec natage sur un gros routeur central Pool privé : 192.168.22.1 (adresse IP privé du routeur opérateur) libre
Réalisation de la configuration : phase 1, démarrage du nouvel ASA
Plan de travail pour la mise en place du nouvel ASA 5505
- Se connecter sur l’ASA en port série OK
- Connecter l’ASA au réseau local => lui attribuer une adresse LAN (interface Lan et inteface de management) OK
- Activer SSH et SCP OK
- Faire l’inventaire des versions installées OK
- Rechercher les nouvelles versions sur le site Cisco OK
- Installer les nouvelles versions OK
- Mettre ensuite en place la configuration (filtrage, NAT) OK
- Accès VPN Anyconnect pour administrer le routeur
Connexion port série
Pour se connecter directement depuis Linux avec un câble série Cisco et un adaptateur série-usb :
$sudo minicom -s
Configuration des interfaces physiques
Activation des deux ports inside (port 0) et outside (port 5) et désactivation des autres ports.
Les ports 6 et 7 sont POE.
ISITIX-fw(config)# interface ethernet 0/0 ISITIX-fw(config-if)# description outside ISITIX-fw(config-if)# no shutdown ISITIX-fw(config)# interface ethernet 0/5 ISITIX-fw(config-if)# description inside ISITIX-fw(config-if)# no shutdown ISITIX-fw(config)# interface ethernet 0/1 ISITIX-fw(config-if)# shutdown ISITIX-fw(config)# interface ethernet 0/2 ISITIX-fw(config-if)# shutdown ISITIX-fw(config)# interface ethernet 0/3 ISITIX-fw(config-if)# shutdown ISITIX-fw(config)# interface ethernet 0/4 ISITIX-fw(config-if)# shutdown ISITIX-fw(config)# interface ethernet 0/6 ISITIX-fw(config-if)# shutdown ISITIX-fw(config)# interface ethernet 0/7 ISITIX-fw(config-if)# shutdown
Définition des paramètres réseaux
name 192.168.77.2 mgt_ip name 192.168.22.254 inside_ip name 19.22.25.45 outside_ip name 19.2.0.20 operateur_dns name 185.94.77.77 europe_pool_ntp_org name 192.168.22.0 inside_lan name 19.22.25.46 operateur_router
Mise en place des interfaces VLAN
Configuration des VLANS, 1 pour l’administration, 2 pour le LAN et 9 pour le WAN
interface Vlan1 management-only nameif management security-level 100 ip address mgt_ip 255.255.255.0 ! interface Vlan2 description inside nameif inside security-level 99 ip address inside_ip 255.255.255.0 ! interface Vlan9 description outside nameif outside security-level 0 ip address outside_ip 255.255.255.248
Ajout des ports dans les bons VLANs
interface ethernet 0/0 switchport mode access switchport access vlan 9 interface ethernet 0/5 switchport mode access switchport access vlan 2
Hostname, domain, time
Configuration générale du parefeu
hostname ISITIX-fw domain-name ISITIX-france.com clock timezone CET 1 clock summer-time CEST recurring dns domain-lookup inside name 19.2.0.20 operateur_dns dns name-server operateur_dns name 185.94.77.77 europe_pool_ntp_org ntp server europe_pool_ntp_org aaa authentication enable console LOCAL
Vérification de l’heure
show ntp associations show clock show ntp status
Désactivation de smart call home
clear config call-home no service call-home
Authentification des utilisateurs Sur base locale avec pwd (basic)
user-identity default-domain LOCAL aaa authentication enable console LOCAL
Activation de SSH et SCP
ssh version 2 ssl server-version tlsv1-only ssl client-version tlsv1-only ssh scopy enable crypto key generate rsa modulus 2048 write memory aaa authentication ssh console LOCAL username admin password XXXXXX privilege 15 ssh timeout 15 ssh inside_lan 255.255.255.0 inside
Mise à jour du firmware
Linux$scp asa924-k8.binCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. :disk0:/asa924-k8.bin boot system disk0:/asa924-k8.bin
Phase 2 de la configuration de l’ASA : NAT, routage, filtrage
Network objects
Ajout des objets réseau pour les ACL éventuelles
object network WAN_NETWORK subnet 19.22.25.40 255.255.255.248 object network LAN_IP host 192.168.22.254 object network WAN_IP host 19.22.25.45 object network operateur_ROUTER host 19.22.25.46 object network LAN_NETWORK subnet 192.168.22.0 255.255.255.0
Route par défaut
route outside 0 0 operateur_router 1
Natage du LAN vers le WAN
object network LAN_NETWORK nat (inside,outside) dynamic interface
Filtrage du sortant LAN par ACL
Définition de la liste des services
object-group service dns service-object tcp-udp destination eq domain object-group service https service-object tcp destination eq https object-group service http service-object tcp destination eq www service-object tcp destination eq 8080 service-object tcp destination eq 8008 object-group service pop service-object tcp destination eq pop3 service-object tcp destination eq 995 object-group service smtp service-object tcp destination eq smtp service-object tcp destination eq 465 object-group service rtmp service-object tcp-udp destination eq 1935 service-object tcp destination eq 8134 service-object tcp destination eq 1111 object-group service ssh service-object tcp destination eq ssh object-group service google-play service-object tcp destination eq 5228 service-object tcp destination eq 5229 service-object tcp destination eq 5320 service-object udp destination eq 5228 object-group service teamviewer service-object tcp-udp destination eq 5938 object-group service spotify service-object tcp destination eq 4070 object-group service imap service-object tcp destination eq imap4 service-object tcp destination eq 993 object-group service ping service-object icmp traceroute service-object icmp echo service-object icmp alternate-address service-object icmp mask-request service-object icmp redirect service-object icmp object-group service telnet service-object tcp destination eq telnet object-group service ntp service-object tcp-udp destination eq 123 object-group service vpn service-object udp destination eq isakmp service-object udp destination eq 1701 service-object tcp destination eq pptp object-group service ftp service-object tcp destination eq ftp service-object tcp destination eq ftp-data
Regroupement des services dans un ensemble de services autorisés :
object-group service service_enabled group-object https group-object http group-object pop group-object smtp group-object rtmp group-object ssh group-object google-play group-object teamviewer group-object spotify group-object imap group-object ping group-object telnet group-object ntp group-object vpn
Ajout d’ACL pour contrôler le trafic
access-list inside_in_acl extended permit object-group service_enabled object LAN_NETWORK any access-list inside_in_acl extended permit ip object LAN_NETWORK any log access-group inside_in_acl in interface inside
Inspection du trafic
Ajout d’une politique globale (permet également le passage du trafc icmp/ping)
icmp unreachable rate-limit 1 burst-size 1 icmp permit any echo inside icmp permit any echo-reply inside class-map global_map match default-inspection-traffic policy-map global_policy class global_map inspect icmp inspect dns inspect ftp inspect h323 h225 inspect h323 ras inspect http inspect sip inspect snmp inspect ipsec-pass-thru inspect ip-options inspect pptp inspect esmtp service-policy global_policy global
Détection des menaces basiques
Scan et autres
threat-detection basic-threat threat-detection statistics access-list threat-detection statistics tcp-intercept rate-interval 30 burst-rate 400 average-rate 200
Spoofing
ip verify reverse-path interface inside ip verify reverse-path interface outside
Phase 3 : accès anyconnect admin
Objectif : pouvoir manager l’ASA en SSH sur un tunnel VPN.
Remarque : comme il n’y a qu’une groupe policy et un seul tunnel groupe, tout se passe bien et on tombe sur les valeurs par défaut. Sinon, il y aurait un mapping à réaliser entre le client, le username et les autres paramètres.
Définition du pool d’adresses et du sous-réseau
ip local pool VPN_POOL 192.168.22.193-192.168.22.198 mask 255.255.255.0 object network VPN_NETWORK subnet 192.168.22.192 255.255.255.248
Définition de l’ACL pour le split du trafic sur le client
access-list SplitVPNTunnel standard permit 192.168.22.0 255.255.255.0
Modification du NAT
Pour désactiver le NAT vers le pool d’adresses VPN
nat (outside,inside) source static VPN_NETWORK VPN_NETWORK destination static LAN_NETWORK LAN_NETWORK no-proxy-arp nat (inside,outside) source static LAN_NETWORK LAN_NETWORK destination static VPN_NETWORK VPN_NETWORK no-proxy-arp
Activation de anyconnect
ssl server-version tlsv1-only webvpn enable outside anyconnect image disk0:/anyconnect-linux-2.2.0140-k9.pkg 1 anyconnect enable tunnel-group-list enable cache disable error-recovery disable
Définition de la VPN Policy
group-policy VPNGroupPolicy internal group-policy VPNGroupPolicy attributes vpn-tunnel-protocol ssl-client split-tunnel-policy tunnelspecified split-tunnel-network-list value SplitVPNTunnel address-pools value VPN_POOL ipv6-address-pools none webvpn anyconnect ssl dtls enable anyconnect keep-installer none anyconnect dtls compression none anyconnect ask none default anyconnect
Définition du tunnel
tunnel-group VPNTunnelGroup type remote-access tunnel-group VPNTunnelGroup general-attributes default-group-policy VPNGroupPolicy tunnel-group VPNTunnelGroup webvpn-attributes group-alias ANYCONNECT-VPN enable
et accrochage de la policy au tunnel :
group-policy VPNGroupPolicy attributes group-lock value VPNTunnelGroup
Ajout d’un utilisateur
username ISITIXanyconnect password XXXXXX/eq encrypted username ISITIXanyconnect attributes service-type remote-access
Activation du ssh sur l’ASA depuis VPN
management-access inside
Filtrage du trafic pour limiter l’accès au ssh sur l’IP interne de l’ASA Remarque :
Il est intéressant de tester que tout fonctionne bien avant d’ajouter ces règles de filtrage supplémentaires.
access-list FilterVPN extended permit object-group ssh object VPN_NETWORK object LAN_IP log group-policy VPNGroupPolicy attributes vpn-filter value FilterVPN
Raccordement physique
Cordon entre le FW et la box sur la 0/0 ou la 0/3 (data), 0/1 ou 0/2 pour la téléphonie