Unicast Reverse Path Forwarding

Tanım :

Unicast Reverse Path Forwarding (URPF), ağ üzerinde istenmiyen trafiğin kontrol edilmesini  sağlıyan bir güvenlik özelliğidir. Router’lar gelen pakedin kaynak adresinin erişilebilirliğinini kontrol ederler. Router iletilen pakedin kaynak adresini ve paket iletim tablosunu (FIB) kullanarak bu kontorolü yapar.

İki tip çalışma şeklı vardır:

  • Strict Mode (Sıkı şekil)
  • Loose Mode (Ğevşek şekil)

Strict Mode :

URPF’in ilk aşamasıdır. Gelen pakedin kaynak adresine doğru olan route’un (Geri dönüş Route), pakedin alındığı interface’e doğru olup olmadığı kontrol edilir. Bir başka deyişle söz konusu interface’e gelen paketlerin o interface’e atanmış ip adres bloğundan geldiğinin kontrol edilmesidir.

URPF Strich Mode
Şekil 1

Strict mode isminden de anlaşıldığı üzere oldukça sıkı bir kontrol yapmaktadır. Asimetrik routing’in olası olduğu yerlerde veya bir pakedin beklendiği interface’den gelmediği durumlarda sorun yaratabilir. Bu tarz durumlar birden fazla çıkışı olan networklerde (multi-homed), özellikle ISP’lerde olabilir.

URPF Strict Mode, Asymmetrical Routing Problem
Şekil 2

Şekil 2’de görüldüğü gibi, ISP C, ISP A’ya internet üzerinden erişir iken ISP A bağlı olduğu interface üzerinden erişebilir. Bu durumda ISP A’nın uyguladığı URPF Strict uygulamasından dolayı ISP C’nin paketleri ISP A üzerinde (ISP C -> internet -> ISP B) drop edilir.

Strict mode tek bir internet çıkışı olan bağlantılar için kullanışlıdır.

Loose Mode :

URPF’in ikinci aşamasıdır. Strict (katı) mode’un aksine, gelen pakedin kaynak adresinin sadece FIB tablosunda olup olmadığına bakar. Yani kaynak adresi için bir FIB tablosunda (route tablosunda) bir kayıt olması yeterlidir. Dolayısı ile asimetrik için bir sorun oluşturmaz.

URPF Loose Mode

 

Cisco’da kullanımı :

ip verify unicast source reachable-via (rx|any) [allow-default] [allow-self-ping] [<list>] interface komutu ile kullanılır.

İnterface üzerinde uygulanma sırası ;

  1. Giriş ACL kontrol edilir.
  2. URPF kontrolü yapılır.
  3. CEF tablosu kullanılır ve çıkış interface bulunur.
  4. Çıkış ACL kontrol edilir.
  5. Paket iletilir.

Eğer kaynak için null0 doğru route eklenmiş ise paket her iki modda’da drop edilir.

URPF istatistikleri global olarak veya interface seviyesinde tutulabilir.Global seviyedeki istatistik, giriş interface hakkında bilgi vermez.İnterface seviyesindeki istatistik ise bu konuda bize bilgi verir. Ayrıca URPF dropları hakkında iki tip bilgi sunar.

• URPF DROPS : URPF başarısız olan. ACL ile iletilemesine izin verilmiş olsa bile!
• URPF SUPPRESSED DROPS : ACL URPF ile başarısız olmuş ama ACL ile iletilmesine izin verilmiş.

Eğer gelen paket URPF kontrolunde başarız olmuş ise, bir ACL ile kontrole edilebilir. ACL’de kontrolunden başarılı olarak geçmiş ise, iletilir aksi takdirde paket iletilmez. Eğer bu iş için kullanılan ACL’de pakedin uyuşduğu satırda logging girilerek loglama yapılabilir.

ACL kullanılması veya kullanılmaması durumunda, URPF başarılı olması veya olmaması durumunda bile bu giriş interface istatistiklerinde URPF Drops olarak görülür.

URPF Tunnellenmiş paketleri kontrol etmez. GRE, L2TP, PPTP.

 

Örnek :

Cisco URPF Örnek
Cisco URPF Örnek Topology

 

Strict Mode :

Understanding Unicast Reverse Path Forwarding

Router-1 :

!

ip route 2.2.2.2 255.255.255.255 1.1.12.2

!
interface GigabitEthernet0/0/2
ip address 1.1.12.5 255.255.255.252
ip verify unicast reverse-path # (eski format ile )
ip verify unicast source reachable-via rx # (yeni format ile )
negotiation auto
cdp enable
end

!

 

Router-1#ping 2.2.2.2 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
…..
Success rate is 0 percent (0/5)
Router-1#show ip interface gigabitEthernet 0/0/2 | inc drops
5 verification drops
0 suppressed verification drops

Strict Mode (allow-default) :

Router-1 :

Router-1(config)#interface GigabitEthernet0/0/2
Router-1(config-if)# ip verify unicast source reachable-via rx allow-default
Router-1(config-if)#end
Router-1#ping 2.2.2.2 source loopback 0
*Dec 24 05:21:28.442: %SYS-5-CONFIG_I: Configured from console by console
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Router-1#

Loose Mode :

Unicast Reverse Path Forwarding Loose Mode

Kontorl ettiği değişkenler ;

• RFC 1918 addres aralığı
• Özel kullanım olan adress aralığı
• Henüz atanmamış adress aralığı
• Null interface route edilmiş paketleri

Kısace kaynak addresi FIB tablosunda var ise iletir, yok ise iletmez (giriş interface’ine bakmaz).

Router-1#sh run | inc ip route
ip route 2.2.2.2 255.255.255.255 1.1.12.2

Router-1#sh run int gi0/0/2
Building configuration…

Current configuration : 167 bytes
!
interface GigabitEthernet0/0/2
ip address 1.1.12.5 255.255.255.252
ip verify unicast source reachable-via any
load-interval 30
negotiation auto
cdp enable
End

Router-1#ping 2.2.2.2 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Router-1#show ip interface gigabitEthernet 0/0/2 | inc drops
0 verification drops
5 suppressed verification drops

Loose Mode (allow-default şeçeneği ile) :

Router-1#sh run | inc ip route

ip route 0.0.0.0 0.0.0.0 1.1.12.2

Router-1#ping 2.2.2.2 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
…..

Success rate is 0 percent (0/5)

Router-1#show ip interface gigabitEthernet 0/0/2 | inc drops
5 verification drops
0 suppressed verification drops
Router-1#

Router-1#conf t

Enter configuration commands, one per line. End with CNTL/Z.
Router-1(config)#int gi0/0/2

Router-1(config-if)#$unicast source reachable-via any allow-default
Router-1(config-if)#end
Router-1#clear counters
*Dec 24 05:28:31.538: %SYS-5-CONFIG_I: Configured from conping 2.2.2.2 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Router-1#

Juniper’da Kullanımı :

Configuring Unicast RPF

Strict Mode :

Router-1 :

root# show interfaces
fe-1/3/0 {
unit 0 {
family inet {
address 1.1.12.1/30;
}
}
}
fe-1/3/1 {
unit 0 {
family inet {
rpf-check;
address 1.1.12.5/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 1.1.1.1/32;
}
}
}
root# show routing-options
static {
route 2.2.2.2/32 next-hop 1.1.12.2;
}

run ping 2.2.2.2 source 1.1.1.1
PING 2.2.2.2 (2.2.2.2): 56 data bytes
^C
— 2.2.2.2 ping statistics —
21 packets transmitted, 0 packets received, 100% packet loss

run show interfaces fe-1/3/1 statistics | match rpf
Flags: uRPF
RPF Failures: Packets: 21, Bytes: 1764

Loose Mode :

 

root# delete routing-options static route 2.2.2.2/32 next-hop 1.1.12.6

[edit]
root# set routing-options static route 2.2.2.2/32 next-hop 1.1.12.2

[edit]
root# set interfaces fe-1/3/1 unit 0 family inet rpf-check mode loose

[edit]
root# commit
commit complete

[edit]
root#

[edit]
root# run ping 2.2.2.2 source 1.1.1.1
PING 2.2.2.2 (2.2.2.2): 56 data bytes
64 bytes from 2.2.2.2: icmp_seq=0 ttl=255 time=0.606 ms
64 bytes from 2.2.2.2: icmp_seq=1 ttl=255 time=0.572 ms
64 bytes from 2.^C
— 2.2.2.2 ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.572/0.590/0.606/0.014 ms

Nerelerde Nasıl kullanılmalıdır :

Kullanıcı networklerine olabildiğince yakın uygulamalıdır. Müşteri ile olan bağlantılarda Strict Mode kullanılabilir. Fakat birden fazla bağlantılı kullanıcılarda (multi-homed), geri dönüş route ile kullanıcının çıkış yaptığı bağlantı farklı olabilir. Bu durumlarda kullanıcı hangi interface’den geri dönülmesini istediğini BGP kullanarak ayarlanmalıdır. Kullanıcı BGP communitilerini kullanarak bunu ISP bildirebilir. ISP’de local pref veya weight kullanarak kendi routing tablolarını düzenler. Weight kullanmak AS-PATH prepen’de karşı daha avantajlıdır.

ISP-ISP bağlantının olduğu ve IXP bağlantılarında Loose Mode kullanılması gerekmektedir. Zira asimetrik routing söz konusu olabilir.

Ayrıntılı bilgi için :

UNICAST REVERSE PATH FORWARDING ENHANCEMENTS FOR THE INTERNET SERVICE PROVIDER—INTERNET SERVICE PROVIDER NETWORK EDGE

 DOS/DDOS Karşı uygulaması :

IDS veya firewallar ile birlikte oldukça hızlı bir reaksiyon sağlamaktadır.

URPF uygulmasında eğer geri dönüş route’u, yani pakedin kaynak ip adresi  NULL0 route edilmiş ise paket iletilmes ve hemen silinir. Bu özellikden yararlanarak atak yapan ip adreslerinden gelen paketlerin ISP girişlerinde drop edilmesi sağlanır. URPF loose mode (default route’u kullanmıyan seçeneği ile) giriş interfacelerine uygulanır.

Atak yapan ip addresleride next-hop’u bu ip olacak şekilde, giriş routerlarına anons edilir. Dolayısı ile bu ipler null0 route edilmiş olur.

İlk olarak IDS/Firewall atağı sezer ve atack yapan ip adresini bir sunucuya, Network Management Station (NMS) bildirir.

DDOS/DOS engellemesi BGP+URPF

Bu syslog aracılığı ile olabilir. NMS sunucusunda çalışan bir syslog sunucusu bu bilgiyi alır almaz, atak yapan ip için route dağıtacak cihaza bu route’u yazar. Syslog-ng ve bir perl script kullanılarak bu yapılabilir. Syslog-ng gelen syslog bilgisinin alınıp, incelenmesi (eğer IDS veya firewall sadece log gönderip atak olup olmadığını bildirmiyor ise, gelen loglarından atağı algılamak amacı ile) ve uygun formatta dış bir program aracılığı ile route sunucusuna ilgilli route’u bildirir.

DDOS/DOS engellemesi BGP+URPF

Söz konusu route’dan IBGP ile next-hop’u null0’a route edilmiş ip olacak şekilde anons edilir.

DDOS/DOS engellemesi BGP+URPF

Edge Routerlarda ise URPF loose’mode (default route bakmadan) kullanılarak atağı yapan ip network’e ilk girdiği yerde drop edilir.

 

 

 

Leave a Reply

Your email address will not be published.