Zabezpieczyc server tcp przed niechcianymi klientami

0

Jest jakaś opcja żeby zablokować możliwość łączenia się do mojego serwera innych klientów niż moja aplikacja mobilna?
Chcę uniknąć ataków fałszywych klientów (aplikacja na androida)

0

Administratorem nie jestem i nie chciałbym Cie wprowadzić w błąd ale z tego co wiem, problem można rozwiązać w następujący sposób:

  1. Na serwerze konfigurujesz firewalla (np. iptables) tak aby można się było połączyć tylko z sieci prywatnej na wybranych adresach IP.

  2. Konfigurujesz wirtualną sieć prywatną (VPN).

  3. Konfigurujesz połączenie w systemie Android tak aby łączył się do wirtualnej sieci prywatnej.

W takiej sytuacji dostęp do Twojego serwera powinien odbywać za pośrednictwem sieci prywatnej, do której trzeba być zalogowanym.

0

Co do sieci prywatnej może być ciężko, bo będzie to aplikacja ogólnodostępna i dostęp do serwera musi być z każdego miejsc na świecie.
Użytkownik też nic nie powinien musieć zrobić oprócz instalacji aplikacji

0
volau napisał(a):

Co do sieci prywatnej może być ciężko, bo będzie to aplikacja ogólnodostępna i dostęp do serwera musi być z każdego miejsc na świecie.
Użytkownik też nic nie powinien musieć zrobić oprócz instalacji aplikacji

Rzeczywiście trochę to komplikuje sprawę. Powiem tak: nie jestem specem od sieci, ale wydaje mi się, że można serwery HTTP skonfigurować tak aby wymagane były certyfikaty klienta. Mógłbyś po prostu taki certyfikat klienta zawrzeć w swojej aplikacji i wtedy Twoja aplikacja łączyłaby się z użyciem tego certyfikatu (inni klienci tego certyfikatu nie powinni mieć więc być może da się samą aplikację Android jakoś dodatkowo zaszyfrować żeby nie dało się wyciągnąć z niej certyfikatu). Na ile jest to bezpieczne to nie wiem, ale zawsze to jakaś propozycja.

Niestety tak jak wspomniałem wyżej nie jestem specem od sieci i nie wiem na ile to wszystko ma sens co tutaj pisze. Być może powinieneś zapytać na forach gdzie siedzi więcej administratorów typu webhostingtalk?

1

Jeśli mowa o zwykłym niskopoziomowym serwerze TCP (bo tak napisałeś w tytule wątku), przy twoich założeniach to jest niemożliwe od początku. Przy tworzeniu połączenia TCP wszystko co wie serwer to adres IP klienta i nic więcej, więc jeśli potrzebujesz dostępu z całego świata (czyli firewall na IP nie wchodzi w grę), to nie tędy droga. Musisz szukać czegoś na warstwie wyżej (jakiś klucz w headerze HTTP np.), ale pamiętaj, że i tak ostatecznie apkę mobilną można zdekompilować, podejrzeć ruch sieciowy itp. więc nie da się całkowicie przed tym zabezpieczyć z definicji.

0

Z tego co wiem to niestety nie da się ukryć certyfikatu zawartego w apce, 7-zip radzi sobie z rozpakowaniem pliku apk bez najmniejszych problemów

Dokładnie klucz w headerze też nic mi nie da.

1

OK, ale czy nie uważasz, że może lepiej byłoby pójść trochę inną drogą i po prostu zabezpieczyć serwer w taki sposób aby nie miało to znaczenia, który klient korzysta z Twojego API?

0
tk napisał(a):

OK, ale czy nie uważasz, że może lepiej byłoby pójść trochę inną drogą i po prostu zabezpieczyć serwer w taki sposób aby nie miało to znaczenia, który klient korzysta z Twojego API?

Ogólnie jest zabezpieczony, tzn nie ma dla niego różnicy czy jest to moja apka czy inny klient ale chciałem uniknąć "dzikich" klientów.

1

W jakim celu zatem chciałbyś tak właściwie wprowadzać dodatkowe zabezpieczenie?
Co jest złego w "dzikich" klientach?

1 użytkowników online, w tym zalogowanych: 0, gości: 1