Skocz do zawartości
Ganicjusz

Moje zabezpieczenia - prośba o ocenę

Polecane posty

No więc tak - na razie oto co zrobiłem (wirtualizacja OpenVZ):

1. zrobiłem nowego usera i ustawiłem logowanie przez klucze (czy to nie będzie się jakoś gryzło z przyszłym ftp? Ftp jeszcze nie ogarnąłem).

2. zablokowałem logowanie się na root

3. "ustawiłem" firewalla - z tego niezbyt jestem zadowolony bo jeszcze nie dodałem portów 21 i 20, ogólnie nie wiem czy dobrze to zrobiłem i...czy w ogóle firewall jest potrzebny. Na koniec podam swoją konfigurację.

4. zainstalowałem fail2ban.

5. myślę nad zmianą portu ssh jeszcze ale gdzieś przeczytałem, że to jest dość problemowe bo trzeba grzebać w ustawieniach jakiś aplikacji, które chcą korzystać z portu 22 właśnie - jeśli tak jest to jakie to są aplikacje?

 

To są moje regułki firewalla

 

*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections
#
#  The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

 

A to wynik polecenia iptables -L :

Chain INPUT (policy ACCEPT)
target	 prot opt source			   destination		
fail2ban-ssh  tcp  --  anywhere			 anywhere			multiport dports ssh
ACCEPT	 all  --  anywhere			 anywhere			
REJECT	 all  --  anywhere			 loopback/8		  reject-with icmp-port-unreachable
ACCEPT	 all  --  anywhere			 anywhere			state RELATED,ESTABLISHED
ACCEPT	 tcp  --  anywhere			 anywhere			tcp dpt:www
ACCEPT	 tcp  --  anywhere			 anywhere			tcp dpt:https
ACCEPT	 tcp  --  anywhere			 anywhere			state NEW tcp dpt:ssh
ACCEPT	 icmp --  anywhere			 anywhere			icmp echo-request
LOG		all  --  anywhere			 anywhere			limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
REJECT	 all  --  anywhere			 anywhere			reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target	 prot opt source			   destination		
REJECT	 all  --  anywhere			 anywhere			reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target	 prot opt source			   destination		
ACCEPT	 all  --  anywhere			 anywhere			

Chain fail2ban-ssh (1 references)
target	 prot opt source			   destination		
RETURN	 all  --  anywhere			 anywhere 

 

I tu znowu kilka pytań - jak to dla was wygląda? Czy jak sobie zrestartuje firewalla na domyślne ustawienia bądź w ogóle zmienie ustawienia to nie popsuje ustawień fail2ban? To są tymczasowe ustawienia fail2ban więc chyba powinno być ok?

W Panelu intovps (Hypanel czy jakoś tak) jakieś błędy się pojawiły - error loading tooltips oraz error loading status - może to związane z tym firewallem właśnie?

Co byście jeszcze dodali lub usuneli? Porty 21 i 20 zamierzam dodać poleceniem:

 

iptables -I input 2 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -I input 2 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

 

Czy w ogóle firewall jest potrzebny? Nie wystarczyłoby logowanie przez klucz jako user + fail2ban? Albo dodac tylko niektóre reguły, bez blokowania portów?

Edytowano przez Ganicjusz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie stosuj reject, tylko drop. Żadne zabezpieczenia nie są najlepsze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

1. zrobiłem nowego usera i ustawiłem logowanie przez klucze (czy to nie będzie się jakoś gryzło z przyszłym ftp? Ftp jeszcze nie ogarnąłem).

W przypadku FTP user nie musi mieć ustawionego shella bash, wystarczy /sbin/nologin albo /bin/false. Należy tylko pamiętać by te powłoki były wymienione w /etc/shells

 

PS. Dla ssha możesz dodatkowo wprowadzić użytkowników, którzy mają pozwolenie na dostęp ssha: AllowUsers

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zastosuj też fail2ban, który będzie pilnował, aby żaden inny nie próbował odpytywać masowo SSH i zgadywał loginy i hasła.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na początek nie jest źle. Jak korzystasz ze stałego IP to możesz zblokować połączenia przychodzące na port ssh i ograniczyć tylko do jednego IP. W innym wypadku możesz np wykupić vps/inną usługę z dostępem ssh za pomocą którego będziesz logować się do swojego serwera.

 

Dodatkowo nie zapominaj o najważniejszym - aktualizuj wykorzystywane aplikacje na serwerze. Jak korzystasz z CMSów do serwowania stron - dodaj się do Google Webmaster Tools - ostatnio zaczęli przysyłać powiadomienia "Twoja aplikacja jest stara, zaktualizuj ją".

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość dmho

Chain INPUT (policy ACCEPT)

target prot opt source destination

fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh

ACCEPT all -- anywhere anywhere

REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable

 

Tego raczej nie powinno być :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość pzebracki

Jeszcze IPS'a Tobie brakuje :P i IDS'a :P + Tokeny :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A gdzie IPsec? :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość pzebracki

A gdzie IPsec? smile.png

 

Co masz na mysli ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W przypadku gdybyś chciał wykonać tą operację w połączeniu ze zmianą portu SSH (którą polecam wykonać, więcej o tym niżej) to w konfiguracji fail2ban ustaw sobie:

 

[ssh]
enabled  = true
port	 = NowyPort
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5

[ssh-ddos]
enabled  = true
port	 = NowyPort,sftp
filter   = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

 

W kwestii zmiany portu to jak najbardziej polecam, gdyż za czasów gdy miałem port 22, co chwilę logi puchły mi od nadmiernej ilości botów i innych script kiddies... Teraz gdy port mam wyrzucony powyżej 5000, dawno nie widziałem nic podejrzanego w logach.

Na koniec pytanie, które powinno pojawić się na początku: czym ma się ten serwer zajmować (jakie usługi będą na nim stały)?

 

O to ciekawe...czyli port zmieniam w /etc/ssh/sshd_config tak? I gdzie jeszcze oprócz fail2ban? A mój stacjonarny komp będzie się wtedy normalnie łączył przez ssh?

 

Wiesz co ja mam 2 VPS na tym akurat się uczę i ma być tylko forum phpbb3 i kilka statycznych stron. Ale powiem Ci ze ataki mam często patrząc na logi fail2ban.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak, będzie się łączył normalnie ale musisz też zmienić port w putty, bo jak zmienisz np. na 5555 w sshd_config na serwerze, a zapomnisz o zmianie portu w putty, to się nie połączysz, choć to chyba oczywiste.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zależy z czego korzystasz. Przykładowo u mnie musiałem tylko skonfigurować sobie fail2ban i monit, bo one monitorują tę usługę.

 

Co do kompa z którego łączysz się, jedyną zmianą jest parametr "-p port" czyli łączysz się wtedy:

ssh login@domena.pl -p XXXX, gdzie XXXX to numer portu.

 

EDIT - wszystko działa ok, musiałem zrestartować maszynę z panelu bo w firewalu miałem regułę dla starego portu ;)

Edytowano przez Ganicjusz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Co do zabezpieczania SSH to zapraszam do siebie smile.png Dzisiaj napisałem mały poradnik. Moim zdaniem ciekawy jest punk 12. Jakoś nie spotykałem go na polskich serwisach. Rozwiązanie trochę dla opętanych bezpieczeństwem.

 

http://centos.linux....zpieczanie-ssh/ (komentujcie i polecajcie na FB, głupio tak pisać nie widząc efektów)

Edytowano przez Grz3chu (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Zmiana portu ssh to pikuś :)

 

Ja korzystam na niektórych maszynach z 4 cyfrowych adresów i powiem ci że sporo się zmieniło.

 

 

Na początku na standardowym miałem kilkadziesiąt prób logowania dziennie na root / ssh z chin, rosji, korei i innych okolicznych wiosek :D

 

Teraz cisza i spokój :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×