Bölüm 6. İletim Katmanı Güvenliği w3.gazi.edu.tr/~suatozdemir
WEB Güvenliği World Wide Web, temel olarak Internet ve TCP / IP intranetlerinde çalışan bir istemci /sunucu uygulamasıdır Web kullanımının aşağıdaki özellikleri nedeniyle güvenlik araçlarına ihtiyaç vardır Web sunucularını yapılandırmak ve yönetmek nispeten kolaydır Web içeriği gittikçe daha kolay geliştirilmektedir Altta yatan yazılım karmaşık Birçok olası güvenlik kusuru gizli kalabiliyor Bir Web sunucusu, şirketin tüm bilgisayar kompleksine izinsiz erişim için kullanılabilir Web tabanlı servislerin kullanıcıları güvenlik konularında bilgisizdir Bu tür kullanıcılar, mevcut güvenlik risklerinin farkında değildirler ve etkiliönlemleri alacak donanım veya bilgiye sahip değildirler. 2
WEB Güvenlik Tehlikeleri 3
WEB Güvenlik Yaklaşımları Web güvenliği farklı şekillerde sağlanabilir Network katmanı IPSec. Kullanıcıya görünmez, trafiği filitreler Trasport Layer SSL/TLS. Application Layer Uygulamaya bağımlı HTTP FTP SMTP S/MIME HTTP FTP SMTP SSL or TLS Kerberos SMTP HTTP TCP TCP UDP TCP IP/IPSec IP IP (a) Network Level (b) Transport Level (c) Application Level Figure 6.1 Relative Location of Security Facilities in the TCP/IP Protocol Stack 4
Transport Layer Security (TLS) İletim Katmanı Güvenliği (TLS) En çok kullanılan güvenlik servislerinden biridir TLS, Secure Sockets Layer (SSL) olarak bilinen ticari bir protokolden evrimleşen bir İnternet standardıdır. TLS, TCP'ye dayanan bir dizi protokol olarak uygulanan genel amaçlı bir hizmettir TLS, temelprotokol ailesinin bir parçası olarak sağlanabilir ve bu nedenle uygulamalar/kullanıcılar için şeffaf olabilir Alternatif olarak, TLS belirli paketlere gömülebilir. Browserlar vb. uygulamalarda 5
SSL/TLS Protokol Yığını SSL iki katmandan oluşur Record katmanı üst katman protokollerine (http vb.) temel web güvenlik servisleri sağlar Diğerleri SSL mesaj değişimlerini kontrol etmek için kullanılır: Handshake Protocol, Change Cipher Spec Protocol, Alert Protocol Handshake Protocol Change Cipher Spec Protocol Alert Protocol HTTP Heartbeat Protocol Record Protocol TCP IP Figure 6.2 SSL/TLS Protocol Stack 6
SSL/TLS Mimarisi TLS in önemli iki kavramı SSL/TLS Bağlantısı (TLS Connection) Uygun bir servis türünü sağlayan bir ulaşım aracıdır TLS için bu tür bağlantılar peer-to-peer ilişkilerdir Bağlantılar geçicidir Her bağlantı bir oturumla ilişkilendirilir SSL/TLS Oturumu (TLS Session) Bir istemci ve bir sunucu arasındaki bir ilişkidir Handshaking protokolü tarafından oluşturulur Birden fazla bağlantı arasında paylaşılabilen kriptografik güvenlik parametreleri kümesini tanımlar Her bağlantı için yeni güvenlik parametresi oluşturmanın önüne geçer 7
Oturum Parametreleri Session identifier Peer certificate An arbitrary byte sequence chosen by the server to identify an active or resumable session state An X509.v3 certificate of the peer; this element of the state may be null Compression method Cipher spec Master secret The algorithm used to compress data prior to encryption Specifies the bulk data encryption algorithm and a hash algorithm used for MAC calculation; also defines cryptographic attributes such as the hash_size 48-byte secret shared between the client and the server Is resumable A flag indicating whether the session can be used to initiate new connections 8
Bağlantı Parametreleri Server and client random Server write MAC secret Byte sequences that are chosen by the server and client for each connection The secret key used in MAC operations on data sent by the server Initialization vectors When a block cipher in CBC mode is used, an initialization vector (IV) is maintained for each key This field is first initialized by the SSL Handshake Protocol The final ciphertext block from each record is preserved for use as the IV with the following record Client write MAC secret Server write key Client write key The secret key used in MAC operations on data sent by the client The secret encryption key for data encrypted by the server and decrypted by the client The symmetric encryption key for data encrypted by the client and decrypted by the server Sequence numbers Each party maintains separate sequence numbers for transmitted and received messages for each connection When a party sends or receives a change cipher spec message, the appropriate sequence number is set to zero Sequence numbers may not exceed 2 64-1 9
SSL/TSL Kayıt (Record) Protokolü Kayıt protokolü iki servis sağlar Gizlilik Mesaj Bütünlüğü El sıkışma protokolü verinin şifrelenmesi için gizli bir anahtar sağlar El sıkışma protokolü mesaj doğrulama kodu MAC için gizli bir anahtar sağlar 10
SSL Record Protocol işlemleri Application Data Fragment Compress Add MAC Encrypt Append TLS Record Header Figure 6.3 TLS Record Protocol Operation 11
SSL Record Protocol işlemleri Üst katmandan gelen mesaj 2 14 byte (16384 byte) yada daha küçük parçalara bölünür. Compression isteğe bağlıdır MAC hesaplanır 12
SSL Record Protocol işlemleri Şifreleme. Aşağıdaki algoritmalar kullanılabilir. Veri+MAC şifrelenir Fortezza smart card enc. için 13
SSL Record Protocol işlemleri 14
SSL Record Protocol yükleri 15
SSL Protocols Change Cipher Spec Protocol Durum güncellemesi yapar Kullanılacak olan cipher suite güncellenir Alert Protocol SSL-ilişkili uyarıları iletir İlk byte uyarının türünü belirtir: warning (1) or fatal (2) unexpected_message, bad_record_mac vb. Handshake Protocol İstemci ve sunucu arasında kimlik doğrulama Şifreleme, kimlik doğrulama algoritmaları ve anahtarların üzerinde anlaşma Aşağıdaki alanlardan oluşur: Type (1 byte): Indicates one of 10 messages. Length (3 bytes): The length of the message in bytes. Content ( bytes): 16
TLS Handshake Protocol Message Types Message Type hello_request client_hello server_hello certificate server_key_exchange certificate_request server_done certificate_verify client_key_exchange finished Parameters null version, random, session id, cipher suite, compression method version, random, session id, cipher suite, compression method chain of X.509v3 certificates parameters, signature type, authorities null signature parameters, signature hash value 17
SSL Handshake Protocol 4 temel aşamadan oluşur Güvenlik Yeteneklerinin Oluşturulması İstemci tarafından başlatılır Mantıksal bağlantıyı başlatır ve kullanılacak güvenlik parametrelerini belirler Ör: Anahtar değişimi için kullanılacak protokol vb. Sunucu Kimlik Doğrulama ve Anahtar Değişimi Sunucu X.509 sertifikasını gönderir Belirlenenanahtar değişimi protokolüne göre anahtar değişimi İstemci Kimlik Doğrulama ve Anahtar Değişimi İstemci X.509 sertifikasını gönderir Belirlenenanahtar değişimi protokolüne göre anahtar değişimi Son Bağlantı tamamlanır change_cipher_spec mesajı ile belirlenen durum oturuma aktarılır 18
Handshake 19
Handshake client_hello message Version: Random: Session ID: CipherSuite: Compression Method: CipherSuite: İlk element key exchange method CipherAlgorithm: MACAlgorithm: MD5 or SHA-1 CipherType: Stream or Block IsExportable: True or False HashSize: 0, 16 (for MD5), or 20 (for SHA-1) bytes Key Material: A sequence of bytes that contain data used in generating the write keys IV Size: The size of the Initialization Value for Cipher Block Chaining (CBC) encryption 20
Handshake Kriptografik Hesaplamalar Anahtar değişimi yoluyla paylaşılan bir ana şifre (master secret) oluşturulması Paylaşılan ana şifre, bu oturum için güvenli anahtar değişimi yoluyla üretilen bir seferlik 48 baytlık bir değerdir Ana şifreden şifreleme parametrelerinin oluşturulması CipherSpecs ana şifreden türetilmiş aşağıdaki şifreleri gerektirir Istemci MAC secret, Sunucu MAC secret, Istemci key, Sunucu key, Istemci IV, Sunucu IV Bu parametreler, ana şifrenin tüm parametreler için yeterli uzunlukta byte dizisi ile hash lenmesi ile oluşturulur 21
TLS TLS is an IETF standardization initiative whose goal is to produce an Internet standard version of SSL. Record formatı SSL ile aynı MAC formatında SSL e göre değişiklik vardır TLS HMAC kullanır SSLv3 aynı algoritmayı kullanır. Sadece opad ve ipad XOR lanmaz, eklenir. 22
Heartbeat Protokolü Bir kalp atışı, normal çalışmayı göstermek veya bir sistemin diğer parçalarını senkronize etmek için donanım veya yazılım tarafından üretilen periyodik bir sinyaldir Bir kalp atışı protokolü, genellikle bir protokol varlığının kullanılabilirliğini izlemek için kullanılır Kalp atışı protokolü, TLS Record Protocol'un üstünde çalışır İki ileti türünden oluşur: heartbeat_request ve heartbeat_response Kalp atışının iki amacı vardır: Altta yatan TCP bağlantısı üzerinde herhangi bir etkinlik olmasa bile, gönderene alıcının hala hayatta olduğunu garanti eder Boşta kalma süreleri boyunca bağlantı boyunca etkinlik üretir ve boşta olan bağlantıları tolere etmeyen bir güvenlik duvarı tarafından kapatılmasını önler 23
HTTPS (HTTP over SSL) Web tarayıcısı ile Web sunucusu arasında güvenli iletişim kurmak için HTTP ve SSL'nin kombinasyonudur HTTPS yeteneği tüm modern web tarayıcılarında bulunur Web tarayıcısının bir kullanıcısı, http: // yerine https: // ile başlayan URL adreslerini görür HTTPS belirtilirse, SSL'yi çağıran 443 numaralı portu kullanılır. RFC 2818 -- HTTP Over TLS HTTP'yi SSL veya TLS üzerinden kullanma konusunda temel bir değişiklik yoktur ve her iki uygulama da HTTPS 24
HTTPS (HTTP over SSL) HTTPS kullanıldığında, iletişimin aşağıdaki unsurları şifrelenir: Istenen belgenin URL'si Dokümanın içeriği Tarayıcı formlarının içeriği Tarayıcıdan sunucuya ve sunucudan tarayıcıya gönderilen çerezler HTTP header içeriği 25
Bağlantı Başlangıcı HTTPS de, HTTP istemcisi aslında bir TLS istemcisidir The client initiates a connection to the server on the appropriate port and then sends the TLS ClientHello to begin the TLS handshake When the TLS handshake has finished, the client may then initiate the first HTTP request All HTTP data is to be sent as TLS application data HTTPS bağlantısı: At the HTTP level, an HTTP client requests a connection to an HTTP server by sending a connection request to the next lowest layer Typically the next lowest layer is TCP, but it may also be TLS/SSL At the level of TLS, a session is established between a TLS client and a TLS server This session can support one or more connections at any time A TLS request to establish a connection begins with the establishment of a TCP connection between the TCP entity on the client side and the TCP entity on the server side 26
Bağlantı Sonlandırma Bir HTTP istemcisi veya sunucusu, bir bağlantıyı kapatmak için Connection: close mesajı kullanır Bir HTTPS bağlantısının kapanması, TLS'in uzaktaki taraftaki akran TLS birimi ile olan bağlantıyı kapatmasını gerektirir; Bu işkem alttaki TCP bağlantısının kapanmasını içerecektir TLS uygulamaları, bir bağlantıyı kapatmadan önce kapatma uyarıları değişimini başlatır Bir TLS uygulaması, bir kapatma uyarısı gönderdikten sonra, eşin kapatma uyarısını göndermesini beklemeden bağlantıyı kapatabilir; "tamamlanmamış bir kapatma Habersiz olmayan bir TCP kapanışı, bir tür saldırı olduğunun kanıtı olabilir, bu durumda HTTPS istemcisi bir çeşit güvenlik uyarısı üretir 27
Secure Shell (SSH) Güvenli Kabuk (SSH), nispeten basit ve ucuz şekilde uygulanabilir olarak tasarlanmış güvenli ağ iletişimi protokolüdür Güvenli olmayan TELNET ve benzeri uygulamaların yerini alması için geliştirilmiştir SSH ayrıca daha genel bir istemci / sunucu kapasitesi sağlar ve dosya aktarımı ve e-posta gibi ağ işlevleri için kullanılabilir. SSH istemci ve sunucu uygulamaları çoğu işletim sisteminde yaygın olarak bulunur. Uzaktan oturum açma ve X tünelleme için tercih edilen yöntem haline gelmiştir Gömülü sistemler dışında şifreleme teknolojisinde en yaygın uygulamalardan biri haline geldi. 28
SSH 3 temel protokol TCP üstünde çalışır 29
SSH Transport Layer Protocol Sunucu kimlik doğrulaması, veri gizliliği ve ileri gizlilikle veri bütünlüğü sağlar Taşıma katmanı isteğe bağlı olarak sıkıştırma sağlayabilir. User Authentication Protocol Kullanıcının kimliğini sunucuya doğrulaması Connection Protocol Tek bir temelssh bağlantısı üzerinden çoklu mantıksal iletişim kanallarını toplar. 30
31
32
33
SSH Authentication Methods Publickey The client sends a message to the server that contains the client s public key, with the message signed by the client s private key When the server receives this message, it checks whether the supplied key is acceptable for authentication and, if so, it checks whether the signature is correct Password The client sends a message containing a plaintext password, which is protected by encryption by the Transport Layer Protocol Hostbased Authentication is performed on the client s host rather than the client itself This method works by having the client send a signature created with the private key of the client host Rather than directly verifying the user s identity, the SSH server verifies the identity of the client host 34
Bağlantı Protokolü SSH Bağlantı Protokolü, SSH Tranport Layer Protokolü üzerinde çalışır ve güvenli kimlik doğrulama bağlantısının kullanıldığını varsayar Güvenli bağlantı tünel olarak adlandırılır Kanal mekanizması SSH kullanan her tür iletişim ayrı kanalları kullanarak desteklenir Her iki taraf da kanal açabilir Her kanal için her bir taraf benzersiz bir kanal numarası ilişkilendirir Kanallar bir pencere mekanizması kullanan akış kontrollüdür Pencere alanının mevcut olduğunu belirtmek için bir ileti alınana kadar hiçbir kanal bir kanala gönderilemez Bir kanalın ömrü üç aşamalı olarak ilerlemektedir: bir kanalı açma, veri aktarımı ve bir kanalı kapatma 35
36
Kanal Türleri Session The remote execution of a program The program may be a shell, an application such as file transfer or e-mail, a system command, or some built-in subsystem Once a session channel is opened, subsequent requests are used to start the remote program X11 Refers to the X Window System, a computer software system and network protocol that provides a graphical user interface (GUI) for networked computers X allows applications to run on a network server but to be displayed on a desktop machine Forwarded-tcpip Remote port forwarding Direct-tcpip Local port forwarding 37
Port Yönlendirme SSH'nin en kullanışlı özelliklerinden birisidir Herhangi bir güvensiz TCP bağlantısını güvenli bir SSH bağlantısına çevirebilir (SSH tünellemesi olarak da adlandırılır) Gelen TCP trafiği, port numarasına bağlı olarak uygun uygulamaya gönderilir (bir port TCP kullanıcısının bir tanımlayıcısıdır) Bir uygulama birden çok port numarası kullanabilir 38
39