Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#26  2017-09-11 00:39:11

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: Hosting... dedyk (czy jak to się zwie) - pod development

[quote=Huk]1. Firewall - standardowo odrzucać wszystko, poza portami dla HTTP/HTTPS oraz SSH[/quote]
Na początek tyle ci wystarczy.

wyłączyć logowanie root'a, włączyć tylko protokół mk. 2 itd.[/quote]
To jest w standardzie.

To w zasadzie tyle co mi do głowy przychodzi jako taka podstawa zabezpieczeń - o czymś jeszcze powinienem pamiętać?[/quote]
Klucze zamiast hasła? W ogóle po skonfigurowaniu kilku rządzeń (kilka niezależnych opcji logowania przy użyciu kluczy) ja bym całkiem wyłączył logowanie po haśle.

Jeszcze się tak zastanawiam, czy jest sens jakoś próbować dodawać czasowy banning IP, w przypadku iluś tam nieudanych prób logowania? Do tego jest chyba trzeba użyć [b]Fail2Ban[/b] lub czegoś podobnego?[/quote]
Sam firewall to lepsze rozwiązanie niż takie zabawki jak fail2ban. Iptables może od razu wycinać i banować intruzów.

Może poświeć jakiś tydzień na różne tego typu eksperymenty z konfiguracją i zabezpieczeniami, gdzieś sobie zapisuj procedury, a potem wszystko zaoraj i postaw od nowa poprawnie, wiedząc mniej więcej co i jak chcesz osiągnąć.

Offline

 

#27  2017-09-11 09:35:32

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Hosting... dedyk (czy jak to się zwie) - pod development

@Huk

Usługi typu SSH radziłbym zbroić tak:

Kod:

iptables -N SSH
iptables -A INPUT  -p tcp --dport 11343 -m connlimit --connlimit-upto 20 --connlimit-mask 0 --connlimit-saddr -j SSH
iptables -A SSH -m hashlimit --hashlimit 15/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name SSH -j ACCEPT 
iptables -A SSH -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A SSH -j LOG --log-prefix "SSH - zablokowany"
iptables -A SSH -j DROP

Gdzie 11343 to port SSH.

Identycznie, ale oczywiście z różnymi limitami connlimita i  hashlimita radzę zbroić wszystkie usługi.


PS:
A tu mała pułapka na skanery portów:
https://forum.dug.net.pl/viewtopic.php?pid=269383#p269383

Pozdro

Ostatnio edytowany przez Jacekalex (2017-09-11 09:38:16)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#28  2017-09-11 21:45:47

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: Hosting... dedyk (czy jak to się zwie) - pod development

Dobra panowie, na razie naskrobałem sobie coś takiego jako firewall:

Kod:

#! /bin/sh
# /etc/init.d/firewall
#

# Some things that run always
touch /var/lock/firewall

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting firewall "
    # Clear everything
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    
    # Change the default policy of all three chains to DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    
    # Accept input from loopback device
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Accept input from already established connections
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # Drop input from not defined connections
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP

    # Accept SSH connections
    iptables -N SSH
    iptables -A INPUT -p tcp --dport 11343 -m connlimit --connlimit-upto 20 --connlimit-mask 0 --connlimit-saddr -j SSH
    iptables -A SSH -m hashlimit --hashlimit 15/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name SSH -j ACCEPT 
    iptables -A SSH -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -A SSH -j LOG --log-prefix "SSH - zablokowany"
    iptables -A SSH -j DROP
    
    # Accept HTTP and HTTPS connections
    iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    
    ;;
  stop)
    echo "Stopping firewall"
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X

    iptables -P INPUT ACCEPT
    ;;
  *)
    echo "Usage: /etc/init.d/firewall {start|stop}"
    exit 1
    ;;
esac

exit 0

I pożeniłem z systemd żeby włączało się na starcie - o ile dobrze myślę to chyba powinno wystarczyć? Dopuszczam tylko ssh po innym porcie + http/https - nic innego na razie nie trzeba...

@Jacekalex:

W sumie to połączyłem swój stary skrypt z tym co zapodałeś do SSH - czytając jakieś poradniki na necie wydaje się że podejście chyba poprawne...

@yossarian:

Planuję zrobić tak jak mówisz - na razie rozczajam i zapisuję sobie co i jak, a potem dam reinstall VPS'a i postawię już 'bo Bożemu' ...

W sumie to pozostaje kwestia bezpieczeństwa samej strony. Generalnie jeżeli chodzi o .NET Core (ale pewnie też o inne ustrojstwa) MS podszedł do tematu tak że napisali mini-server o nazwie Kestrel na którym odpala się aplikacja, ale zalecają przed niego ustawić jakiś 'normalny' serwer (nginx'a, Apach'a, czy w przypadku Windos - IIS) i zrobić reverse proxy.

Czy dobrze myślę że tutaj wypadało by utworzyć sobie usera systemowego [b]typowo pod stronę[/b], pozabierać mu wszelkie uprawnienia poza niezbędnym minimum i na jego koncie odpalać samą stronę (na Kestrel'u) a nginx'a czy Apatcha normalnie na kontach domyślnych na których się poinstalują?

Dodam tyko że ja tutaj nie potrzebuję jakichś 'bankowych' zabezpieczeń... celuję bardziej w jakieś podstawy, żeby nie pozostawiać jakichś oczywistych luk - jak to mówią 'nikt z tego strzelać nie będzie' :P

Offline

 

#29  2017-09-11 21:51:34

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Hosting... dedyk (czy jak to się zwie) - pod development

Na 80,443 też daj jakieś sensowne wartości connlimit i hashlimit.


Do tego port SSH masz nieprawidłowy, przed chwilką w totolotku wylosowali inny...
Do testowania zbrojeń na porcie SSH radzę puścić SSH równocześnie na dwóch portach, żeby sobie nie odciąć dostępu do serwera przez przypadek.
Dopiero,jak masz pewność, ze wszystko jest optymalne, to ten drugi port usuwasz z sshd_config.

Jeszcze weselej wygląda SSH,kiedy hashlimit umieścisz przed connlimitem, żeby przekierowywał do łańcucha SSH, ale obejmował zakres jakieś +-250 portów od faktycznego.

Wtedy żaden skaner portów ani za pół roku nie znajdzie serwera SSH, bo zawsze będzie dropowany po kilku próbach na portach w okolicy SSH.

Można tam też elegancko wsadzić na sąsiednich portach ipseta, z opcją timeout, sznurka do metody ipset wypad masz tam wyżej.

Ostatnio edytowany przez Jacekalex (2017-09-11 21:55:59)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#30  2017-09-12 22:06:59

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: Hosting... dedyk (czy jak to się zwie) - pod development

@Jacekalex:

Hmm po kilku godzinach czytania różnych poradników chyba wiem mniej niż zanim zacząłem... dopisałem sobie na dole jeszcze coś takiego, analogicznie do tej Twojej reguły do SSH:

Kod:

iptables -N HTTP
    
iptables -A INPUT -p tcp -m multiport --dports 80,443 -m connlimit --connlimit-upto 20 --connlimit-mask 0 --connlimit-saddr -j HTTP
iptables -A HTTP -m hashlimit --hashlimit 1/min --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name HTTP -j ACCEPT 
iptables -A HTTP -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A HTTP -j LOG --log-prefix "HTTP - zablokowany"
iptables -A HTTP -j DROP

Wydawało mi się że to powinno teoretycznie ograniczać zwrotki z serwera do jednej na minutę max... tymczasem mogę sobie spokojnie odpytywać stronę i zwraca jakby nigdy nic - no chyba że hashlimit nie działa tak jak mi się wydawało... albo Fiddler napierdziela z jakiegoś cholernego cache...

Tak btw - wszędzie gdzie czytam jakieś odniesienia odnośnie hashlimit na porcie 80 jest zwykle zdanie 'tylko sobie ustaw hashlimit i burst na taki jaki ci trzeba' - co to w praktyce oznacza? Skąd ja mam wiedzieć 'jaki mi trzeba' ? Mam rozumieć że admini stron bankowych codziennie sobie ten limit wyliczają na podstawie ilości połączeń z ostatnich 24 godzin czy coś?

Offline

 

#31  2017-09-12 22:16:44

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Hosting... dedyk (czy jak to się zwie) - pod development

Kod:

iptables -A HTTP -m hashlimit --hashlimit 1/min --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name HTTP -j ACCEPT 
iptables -A HTTP -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

[/quote]
To nie ma sensu,bo jak limit zadziała w regule 1, to i tak wpuszcza w regule 2.

Do http użyj lepiej SYNPROXY:
https://morfitronik.pl/unikanie-atakow-ddos-z-synproxy/

Wcześniej do usług publicznych stosowałem hashlimit i connlimit tak:
https://forums.gentoo.org/viewtopic-p-7081326.html#7081326

Ostatnio edytowany przez Jacekalex (2017-09-13 12:20:33)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.014 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00016 SET CHARSET latin2
0.00008 SET NAMES latin2
0.00110 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.139.70.131' WHERE u.id=1
0.00120 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.139.70.131', 1713539825)
0.00065 SELECT * FROM punbb_online WHERE logged<1713539526
0.00081 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29667 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00650 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29667 ORDER BY p.id LIMIT 25,25
0.00133 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29667
Total query time: 0.01188 s