350 likes | 503 Views
Божидар Цендов TEST SOLUTIONS Bojidar_Tzendov@mtel.net 02 9696060 0888 605365. Информационна сигурност и наличност на приложения използващи СУБД . ТЕСТ СОЛЮШЪНС. Решения за наблюдение и управление за телекомуникациите
E N D
Божидар Цендов TEST SOLUTIONS Bojidar_Tzendov@mtel.net 02 9696060 0888 605365 Информационна сигурност и наличност на приложения използващи СУБД
ТЕСТ СОЛЮШЪНС • Решения за наблюдение и управление за телекомуникациите • Решения за информационна сигурност – FW, VPN, Intrusion Prevention, Antivirus, Web Filtering, Anti-Spam и т.н. • Оценка на сигурността/Security Audit • Откриване проблеми в мрежи и приложения (LAN/WAN, IP, MPLS, Voice и т.н.)
СЪДЪРЖАНИЕ - Защо да контролираме входните данни- Проверка за цялостна сигурност- Наличност на Web приложения
Конфиденциалност – Запазване на информацията Интегритет – Непротиворечивост на данните Наличност – Услугата може да се ползва винаги, когато е нужна Трите елемента на сигурността
Доколко да вярваме на потребителите ?!?!? Потребители: Злонамерени Немарливи Просто допускащи грешки Резултатът: Разкриване на информация Загуба на Интегритет Загуба на данни Потребител -> Приложение -> База от Данни
Контролът на входните данни от страна на клиента (клиентската част) е само за негово улесняване и on-line корекции. Контролът на входните данни и къде го правим
Средство за манипулиране на входните данни номер 1
Средство за манипулиране на входните данни номер 2
Средство за манипулиране на входните данни номер 2
int get_user_profile_number (char **user_data) { char username[256]; strcpy(username, user_data[1]); } Първо да проверим за размер
Формирали сме стринг string sql = "select * from client where name = '" + name + "'" Очакваме променливата name от потребителя. Той ни дава: GOSHO' or 1=1 – Така получаваме заявка: select * from client where name = ‘GOSHO' or 1=1 -- Какво получава потребителя? Но да оставим дължината
Добаване последователност оператори Викане функции Викане съхранени процедури SQL injection И за да стане по-зле:Името става GOSHO' drop table client --
Друг пример: .................. try { ………………. } catch (SqlException se) { Status = sqlstring + " failed\n\r"; foreach (SqlError e in se.Errors) { Status += e.Message + "\n\r"; } } catch (Exception e) { Status = e.ToString(); } Какъв ще е резултатът? SQL injection
int age = каквото ни дава потребителя string name = каквото ни дава потребителя name = name.Replace("'","''"); //Да заменим единичния апостроф с два. Резултатът – грешен SQL оператор. Проблемът е решен? Да опитаме да решим проблема с конкатенацията – да махнем апострофите на хакера
При горния пример хакерът може да: Въведе възрастage = 35; shutdown ИЛИ35 shutdown Замени апострофа с char(0x27) Да използва declare @a char(20) select @a=0x73687574646f776e exec(@a) Проверката за символи не решава проблема
exec sp_GetName ‘GOSHO' or 1=1 -- ‘ е невалиден оператор, но exec sp_GetName ‘GOSHO' insert into client values(1005, 'Mike') -- ' Съхранените процедури го решават донякъде
Не използвайте административни потребители, когато се връзвате от Web Проверявайте входните данни ... за всичко Не използвайте string concatenation Не оставяйте пароли на потребители в кода Не давайте излишна информация на крайния потребител Добри практики
Вариант е използването на автентикация през операционната система По-добрият е създаването на специален потребител на базата от данни с точно определени и ограничени привилегии Този потребител трябва редовно да бъде проверяван от гледна точка на права и слабости в политиката на сигурността, както така трябва да бъде проверявана и цялата база от данни Създайте междинна База от Данни, която е между ДМЗ и вътрешната мрежа Административен достъп и сигурност на Базите от Данни
Защита в дълбочина Company Confidential
Автоматичен анализ на уязвими места свързани с пароли, роли, привилеги, ресурси и т.н. Следене за базова линия на сигурността (baseline) Следене за сигурността на операционната система Вградена експертиза Средства за анализ на сигурността на база от данни и поддържане на базова линия на сигурносттаInternet Security System (ISS) Database&System Scanner (www.iss.net)
Параметризиране на SQL изразите: SELECT count(*) FROM client WHERE name=? AND pwd=? След това дефиниране и проверка на параметрите Входните данни
Никакви “празни” пароли за достъп до База от Данни. Като четете паролата от някъде, я проверявате дали е празна и ако е празна, не правите опит да се вържете до базата. Може админа по погрешка да е направил такъв потребител за достъп. Ако четете само един ред, се подсигурете, че четете само него. Твърдо се проверява всеки вход дали отговаря на дефинициите. Стрингът за връзка в базата не е в кода, а някъде другаде (регистър на Windows машината например) Използвайте съхранени процедури, за да скриете логиката на приложението. Използвайте възможно най-безсилния по привилегии достъп до базата Изпозлвайте параметри, не конкатенация В случай на грешка не давайте информация Връзката с базата винаги се прекратява, независимо от това дали кода е успял или е имало грешки Използване няколко нива на защита
Цялостна картина на осигуряване на наличност на Web приложения и бази данни с помоща на: Firewall Two-way Load Balancing Aplication level Inspection Two Site Fail-Over Наличност + защита в дълбочина
Клиент ИНТЕРНЕТ LAN Тръгваме от Firewall – ако искаме наличност на Web приложение, то наличността на Firewall-а не трябва да е по-малка StoneGateна Stonesoft (www.stonesoft.com) От най-защитените firewall (EAL4, augm ALC_FLR.1) Високо надежденскалируем firewall с вградена клъстеризация База от Данни Web Приложение On-Line Клъстер (до 16 машини или appliances) Firewall-ът изглежда и се управлява като една машина Link fail-over ISP C
Традиционен FW сравнен със StoneGate • Традиционни решения: • - Много доставчици • допълнителен хардуер • много администрация • нужда от режим на администриране • поддръжка на допълнителен хардуер и операционни системи
Multi-Link Техноогия Интернет/Интранет Връзка A ВръзкаB ВръзкаC LAN StonegateTwo-way Load Balancing • Непрекъсваем мрежов достъп • Възка към множество преносни канали (стандартни Интернет, MAN мрежи, наети линии, LAN, ISDN и т.н.) • Автоматично прехвърляне и балансиране • Три решима на работа: • Изходящи връзки • Входящи връзки • VPN тунели
Клиент SYN • SYN пакет стига до клъстера • StoneGate репликира SYN пакета към всички връзки и го маркира различно за всяка NAT NAT NAT RST Преносна Среда RST • Сърверът отноваря на всички SYN пакети със SYN-ACK • Връзката връщаща SYN-ACK пакет с най-добра скорост и т.н. ще се използва за комуникацията • RST – останалите линии се изчистват LAN Stonegate Two-way Load Balancing • Multi-Link Technology : Изходящи Връзка A Връзка C Връзка B Сървер
Клиент прави DNS заявка • DNS връща адреси – по един за всяка връзка • Клиентът се връзва към сървера посредством един от адресите. Internet/Intranet • Firewall-ът NAT-ва входящата връзка към вътрешния адрес на сървера • Обратните пакети се маршрутизират през същата връзка LAN Stonegate Two-way Load Balancing • Multi-Link Technology : Входящи DNS Сървер Web Сървер Връзка A Връзка B Връзка C • Ako има timeout клиентът използва някой от другите IP адреси и така автоматично минава по друга връзка
Multi-Link VPN създава подканали използвайки всяка възможна комбинация от крайните IP адреси Преносна среда • Ако подканал откаже се използват автоматично останалите LAN LAN Stonegate Two-way Load Balancing • Multi-Link Technology : VPN Тунели • Multi-Link контролира състоянието и производителността на всеки подтунел Връзка A Връзка B Връзка C • Подтунелите с по-добра производителност получават повече трафик Връзка Y Връзка X
Клиент ИНТЕРНЕТ LAN Stonegate Application Level Inspection Добавя сигурност на протоколно ниво и други възможности с помоща на протоколни агенти База от Данни Web Приложение Exec Drop Session Found tag ‘SELECT * FROM….” ISP C
Клиент ИНТЕРНЕТ/ИНТРАНЕТ LAN Stonesoft Full Cluster Oracle Agent Failover StoneGate Cluster – висока надежндност за приложения и бази от данни ORACLE База от Данни Web Приложение StoneGate On-Line Клъстер ISP C
Клиент Клиент ИНТЕРНЕТ/ИНТРАНЕТ LAN LAN Stonesoft Full Cluster Oracle Agent Failover Failover Между Две Площадки ORACLE База от Данни Web Приложения ORACLE База от Данни StoneGate On-Line Клъстер StoneGate On-Line Клъстер VPN Канали ISP C
Клиент Клиент ИНТЕРНЕТ/ИНТРАНЕТ LAN LAN Най-добра комбинация: StoneGate + Oracle RAC Disaster Recovery Case ORACLE REAL APPLICATION CLUSTER Web Приложения StoneGate On-Line Клъстер StoneGate On-Line Клъстер VPN Канали ISP C