IPsec (**Internet Protocol Security**) ist eine Sammlung von Protokollerweiterungen für das [[ip|Internet Protokoll (IP)]]. Die Erweiterungen ermöglichen die [[kryptographie|Verschlüsselung]] und Authentifizierung der mit IP übertragenen Informationen und sorgen für eine sichere Kommunikation in IP-Netzwerken wie dem Internet. IPsec entstand im Zuge der Entwicklung von IPv6 und ist in verschiedenen aktuellen RFCs spezifiziert. Siehe auch [[vpn|VPN]]. Siehe auch [[https://www.computerweekly.com/de/antwort/Was-ist-der-Unterschied-zwischen-GRE-und-IPsec-Tunneln|GRE]] (Generic routing encapsulation, IPSec Alternative für Tunnel).
* Site-to-Site-VPN / LAN-to-LAN-VPN / Gateway-to-Gateway-VPN
* End-to-Site-VPN / Host-to-Gateway-VPN / Remote-Access-VPN
* End-to-End-VPN / Host-to-Host-VPN / Remote-Desktop-VPN / Peer-to-Peer-VPN
Siehe auch [[GRE]].
=====Interesting traffic=====
Der Begriff wird verwendet, um festzulegen, welche Datenpakete über die IPSec-Sicherheitsverbindung geschützt werden sollen.
Wenn eine IPSec-Verbindung eingerichtet wird, wird normalerweise festgelegt, welche Art von Datenverkehr als "interesting traffic" betrachtet wird und über die Verbindung geschützt werden soll. Dies kann anhand verschiedener Kriterien definiert werden, wie beispielsweise basierend auf Quell- und Ziel-IP-Adressen, Protokolltypen oder Portnummern.
Der "interesting traffic" wird dann von den IPSec-Geräten erkannt und entsprechend den Sicherheitsrichtlinien verschlüsselt und über die IPSec-Verbindung übertragen. Datenverkehr, der nicht als "interesting traffic" definiert ist, wird normalerweise unverschlüsselt übertragen und nicht von IPSec geschützt.
=====Funktionsweise=====
Man kann mit ACLs bestimmen welcher Traffic encryptet wird und welcher nicht. Es gibt Tunnel mode und Transport mode.
{{ipsec_mode.png}}
====Tunnel mode====
Ein IP Paket mit einer privaten IP Adresse als Ziel wird dabei vom Edge Router verschlüsselt und als Payload in ein neu generiertes IP Paket eingefügt. Der Edge Router vom Zielnetz entpackt das äußere IP Paket, entschlüsselt das darin enthaltene IP Paket mit den privaten Adressen und stellt es im lokalen Netz zu.
====Transport mode====
Beim Transport mode wird kein neuer IP Header generiert sondern nur der Payload über Layer 3 des [[osi|OSI Modells]] verschlüsselt.
=====Hauptkomponenten=====
* IKE (Policy negotiation & key exchange)
* ESP (Encapsulation for Encryption and Authentication)
* AH (**mostly obsolete**, Encapsulation for Authentication)
Siehe [[https://www.youtube.com/watch?v=rwu8__GG_rw|Understanding AH vs ESP and ISKAKMP vs IPSec in VPN tunnels (Youtube)]].
====IKE====
Siehe [[IKE]].
IKE (Internet Key Exchange) ist das Protokoll, das verwendet wird, um die **Sicherheitsparameter zwischen den VPN-Endpunkten zu verhandeln**. Dazu gehören die Verschlüsselungs- und Integritätsalgorithmen sowie der Schlüsselaustauschmechanismus. IKE stellt sicher, dass die beteiligten Parteien authentisch sind und die Kommunikation sicher geschützt ist.
Die wichtigsten Aufgaben von IKE sind:
* **Authentifizierung und Schlüsselaustausch**: IKE ermöglicht den sicheren Austausch von Schlüsseln zwischen den VPN-Endpunkten in Phase 1. Dies ist entscheidend, um sicherzustellen, dass die Kommunikation sicher und vertraulich ist.
* **Verhandlung von Sicherheitsparametern**: IKE ermöglicht es den Parteien, die Verschlüsselungs- und Integritätsalgorithmen sowie andere Sicherheitsparameter zu verhandeln, die in IPSec verwendet werden sollen.
* **Authentifizierung der Parteien**: IKE stellt sicher, dass die beteiligten Parteien tatsächlich diejenigen sind, für die sie sich ausgeben, um sicherzustellen, dass keine bösartigen Angriffe stattfinden.
Zusammen mit ESP (Encapsulating Security Payload) oder AH (Authentication Header) bildet IKE eine kritische Komponente eines sicheren IPSec-VPN.
Siehe [[https://www.youtube.com/watch?v=15amNny_kKI|IPSec Fundamentals (Youtube)]].
[[https://www.omnisecu.com/tcpip/ikev1-main-aggressive-and-quick-mode-message-exchanges.php|IKE Phase 1 Messages]], [[https://ccie-or-null.net/2012/03/26/ike-main-mode-aggressive-mode-phase-2/|IKE Phase 1/2 Messages]]
====ESP====
Siehe [[ESP]].
ESP (Encapsulating Security Payload) bietet **Verschlüsselung und Integritätsschutz für den Datenverkehr**, der über das Internet übertragen wird. Es ist eines der Hauptprotokolle von IPSec und sorgt dafür, dass die Daten zwischen den Endpunkten sicher und vertraulich bleiben.
====AH====
Siehe [[AH]].
IKE nutzt den Authentication Header (AH) um Datenintegrität, Authentifizierung und Anti-Replay-Funktionen für IPSec VPN bereitzustellen. Aber **keine Verschlüsselung** des Nutztraffic.
=====Beispiele=====
====Cisco====
{{ipsec_tunnel_cisco_gns3.png}}
! R2
int fa0/0
ip addr 100.0.0.2 255.255.255.0
no shut
exit
int fa1/0
ip addr 192.168.1.1 255.255.255.0
no shut
exit
ip route 0.0.0.0 0.0.0.0 100.0.0.1
crypto isakmp policy 1
encryption aes 256
authentication pre-share
group 2
hash md5
crypto isakmp key cisco address 200.0.0.2
crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
crypto map MYMAP 1 ipsec-isakmp
set transform-set MYSET
set peer 200.0.0.2
match address 100
int fa0/0
crypto map MYMAP
! R3
int fa0/0
ip addr 200.0.0.2 255.255.255.0
no shut
exit
int fa1/0
ip addr 192.168.2.1 255.255.255.0
no shut
exit
ip route 0.0.0.0 0.0.0.0 200.0.0.1
crypto isakmp policy 1
encryption aes 256
authentication pre-share
group 2
hash md5
crypto isakmp key cisco address 100.0.0.2
crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
crypto map MYMAP 1 ipsec-isakmp
set transform-set MYSET
set peer 100.0.0.2
match address 100
int fa0/0
crypto map MYMAP
show crypto ipsec sa interface fastethernet0/0
====Fortigate====
{{ipsec_tunnel_fortigate_gns3.png}}
# FG1
config system interface
edit port1
set mode static
set ip 100.0.0.2 255.255.255.0
set role wan
set alias "WAN"
next
edit port2
set mode static
set ip 192.168.1.1 255.255.255.0
set role lan
set alias "LAN"
next
end
config vpn ipsec phase1-interface
edit to_FG2
set interface port1
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 200.0.0.2
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit to_FG2
set phase1name to_FG2
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end
config router static
edit 0
set device port1
set gateway 100.0.0.1
next
edit 0
set dst 192.168.2.0 255.255.255.0
set device to_FG2
next
end
config firewall address
edit "subnet_192.168.1.0_24"
set subnet 192.168.1.0 255.255.255.0
next
edit "subnet_192.168.2.0_24"
set subnet 192.168.2.0 255.255.255.0
next
end
config firewall policy
edit 0
set name "inbound"
set srcintf to_FG2
set dstintf port2
set srcaddr "subnet_192.168.2.0_24"
set dstaddr "subnet_192.168.1.0_24"
set action accept
set schedule "always"
set service "ALL"
next
edit 0
set name "outbound"
set srcintf port2
set dstintf to_FG2
set srcaddr "subnet_192.168.1.0_24"
set dstaddr "subnet_192.168.2.0_24"
set action accept
set schedule "always"
set service "ALL"
next
end
# FG2
config system interface
edit port1
set mode static
set ip 200.0.0.2 255.255.255.0
set role wan
set alias "WAN"
next
edit port2
set mode static
set ip 192.168.2.1 255.255.255.0
set role lan
set alias "LAN"
next
end
config vpn ipsec phase1-interface
edit to_FG1
set interface port1
set peertype any
set net-device enable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set remote-gw 100.0.0.2
set psksecret sample
next
end
config vpn ipsec phase2-interface
edit to_FG1
set phase1name to_FG1
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm chacha20poly1305
set auto-negotiate enable
next
end
config router static
edit 0
set device port1
set gateway 200.0.0.1
next
edit 0
set dst 192.168.1.0 255.255.255.0
set device to_FG1
next
end
config firewall address
edit "subnet_192.168.1.0_24"
set subnet 192.168.1.0 255.255.255.0
next
edit "subnet_192.168.2.0_24"
set subnet 192.168.2.0 255.255.255.0
next
end
config firewall policy
edit 0
set name "inbound"
set srcintf to_FG1
set dstintf port2
set srcaddr "subnet_192.168.1.0_24"
set dstaddr "subnet_192.168.2.0_24"
set action accept
set schedule "always"
set service "ALL"
next
edit 0
set name "outbound"
set srcintf port2
set dstintf to_FG1
set srcaddr "subnet_192.168.2.0_24"
set dstaddr "subnet_192.168.1.0_24"
set action accept
set schedule "always"
set service "ALL"
next
end
====GRE IPSec Tunnel====
{{gre_ipsec_tunnel.png}}
Zwischen R2 und R3 ist ein GRE Tunnel eingerichtet
#R2
crypto isakmp policy 1
encryption aes 256
authentication pre-share
crypto isakmp key cisco address 200.0.0.2
crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
ip access-list extended GRE-IN-IPSEC
permit gre any any
crypto map IPSECVPN 10 ipsec-isakmp
match address GRE-IN-IPSEC
set transform-set MYSET
set peer 200.0.0.2
interface fa0/0
crypto map IPSECVPN
#R3
crypto isakmp policy 1
encryption aes 256
authentication pre-share
crypto isakmp key cisco address 100.0.0.2
crypto ipsec transform-set MYSET esp-aes esp-sha-hmac
ip access-list extended GRE-IN-IPSEC
permit gre any any
crypto map IPSECVPN 10 ipsec-isakmp
match address GRE-IN-IPSEC
set transform-set MYSET
set peer 100.0.0.2
interface fa0/0
crypto map IPSECVPN
=====Links=====
* [[https://networklessons.com/cisco/ccie-routing-switching/ipsec-internet-protocol-security|IPSec Network Lessons]]
* [[https://www.youtube.com/watch?v=15amNny_kKI|IPSec Fundamentals (Youtube)]]
* [[https://www.security-insider.de/was-ist-ipsec-a-781354/|IPSec - Security Insider]]
* [[https://www.elektronik-kompendium.de/sites/net/0906191.htm|Elektronik-Kompendium]]
* [[https://duconet.com/ipsec-crypto-maps-gre-vti/|Duconet]]
* [[https://www.youtube.com/watch?v=2PtK8HgkRvM|IPsec over a GRE tunnel]]
* [[https://youtu.be/CuxyZiSCSfc|CBT Nuggets Shorts]]
* [[https://www.youtube.com/watch?v=tapoOQ-MkPU|IPsec - IKE Phase 1 | IKE Phase 2]]
* [[https://www.youtube.com/watch?v=ScxCFzxVel8|Authentication Header (AH) and Encapsulating Security Payload (ESP) - Youtube]]
* [[https://youtu.be/Z7LwU6H5IGE|Create an IPsec VPN tunnel using Packet Tracer - CCNA Security (Youtube)]]
* [[https://youtu.be/wZRfDQ1-YNo|Configure Cisco Site-to-Site IPSec VPN]]
* [[https://www.youtube.com/watch?v=7YrfluBpXQM|IPSEC All in One - Expert Level knowledge in just 30 minutes.-2022]]
* [[https://www.youtube.com/watch?v=FuPC08Cjeso| Digging Deeper into IPSEC: Uncover the Message Exchange Details!]]
* [[https://www.youtube.com/watch?v=j3K_kQVt-x8|IPSEC VPN: Difference between Main Mode and Aggressive Mode]]
* [[https://www.youtube.com/watch?v=wx82fqQQ6rA|Analysis and Troubleshooting of IPsec VPNs with Wireshark]]
* [[https://www.youtube.com/watch?v=FS2QiueP4uA|Implementing and Troubleshooting a Site-to-Site IPSec VPN]]
* [[https://www.youtube.com/watch?v=6DvSkHp38Dk|Basic IPSec VPN Configuration with PAN-OS]]