Mam projekt, aby zabezpieczyć serwer Ubuntu w jak największym stopniu. Serwer jest serwerem hostingowym. Na serwerze będą działać LAMP, Mail i DNS.
Mam projekt, aby zabezpieczyć serwer Ubuntu w jak największym stopniu. Serwer jest serwerem hostingowym. Na serwerze będą działać LAMP, Mail i DNS.
Odpowiedzi:
Oto lista rzeczy, które robię, aby zabezpieczyć mój serwer.
sudo ufw enable
), a następnie zezwól tylko na faktycznie używane porty. ( sudo ufw allow 80
)sudo apt-get install denyhosts
)Jeszcze kilka rzeczy do rozważenia. Większość ludzi zapomina o fizycznym dostępie. Wszystkie konfiguracje oprogramowania na świecie nic nie znaczą, jeśli mogę fizycznie wejść z LiveCD i ukraść twoje dane. Strzeż się inżynierii społecznej. Zadawaj pytania, aby sprawdzić, kto rozmawia przez telefon i upewnij się, że ma upoważnienie do złożenia żądanego wniosku.
Ponieważ nadal jestem „nowym” użytkownikiem, nie mogę opublikować więcej niż 2 linków. Możesz przeczytać więcej na ten temat tutaj: https://help.ubuntu.com/12.04/serverguide/index.html i zwrócić szczególną uwagę na https://help.ubuntu.com/12.04/serverguide/security.html
iptables
zasad, aby uniemożliwić zewnętrzny dostęp do jakiejkolwiek usługi, z której nie będziesz korzystać, jeśli masz dziwne- ustawienie piłki, które wymaga zaawansowanego routu i tak dalej.
/ dev / shm może być użyty w ataku na działającą usługę, taką jak httpd. Zmodyfikuj / etc / fstab, aby był bardziej bezpieczny.
Otwórz okno terminala i wprowadź następujące dane:
sudo vi /etc/fstab
Dodaj następujący wiersz i zapisz. Musisz ponownie uruchomić, aby to ustawienie zaczęło obowiązywać:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
Plik /etc/sysctl.conf zawiera wszystkie ustawienia sysctl. Zapobiegaj routingowi źródłowemu przychodzących pakietów i rejestruj zniekształcone adresy IP, wprowadź następujące informacje w oknie terminala
sudo vi /etc/sysctl.conf
Edytuj plik /etc/sysctl.conf i usuń komentarz lub dodaj następujące wiersze:
# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1
Aby ponownie załadować sysctl z najnowszymi zmianami, wprowadź:
sudo sysctl -p
Otwórz terminal i wprowadź następujące dane:
sudo vi /etc/host.conf
Dodaj lub edytuj następujące linie:
order bind,hosts
nospoof on
Edytuj plik php.ini:
sudo vi /etc/php5/apache2/php.ini
Dodaj lub edytuj następujące linie:
disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On
DenyHosts to program w języku Python, który automatycznie blokuje ataki SSH poprzez dodawanie wpisów do /etc/hosts.deny. DenyHosts poinformuje również administratorów Linuksa o obrażających hostach, zaatakowanych użytkownikach i podejrzanych logowaniach.
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install denyhosts
Po instalacji edytuj plik konfiguracyjny /etc/denyhosts.conf i zmień adres e-mail oraz inne ustawienia zgodnie z wymaganiami.
Aby edytować ustawienia administratora, otwórz okno terminala i wprowadź:
sudo vi /etc/denyhosts.conf
Zmień następujące wartości zgodnie z wymaganiami na serwerze:
ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES
Fail2ban jest bardziej zaawansowany niż DenyHosts, ponieważ rozszerza monitorowanie dziennika na inne usługi, w tym SSH, Apache, Courier, FTP i inne.
Fail2ban skanuje pliki dziennika i blokuje adresy IP, które pokazują złośliwe znaki - zbyt wiele awarii haseł, szukanie exploitów itp.
Zasadniczo Fail2Ban następnie aktualizował reguły zapory sieciowej w celu odrzucenia adresów IP na określony czas, chociaż można również skonfigurować dowolne inne działanie. Po wyjęciu z pudełka Fail2Ban zawiera filtry dla różnych usług (apache, kurier, ftp, ssh itp.).
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install fail2ban
Po instalacji edytuj plik konfiguracyjny /etc/fail2ban/jail.local i utwórz reguły filtrów zgodnie z wymaganiami.
Aby edytować ustawienia, otwórz okno terminala i wprowadź:
sudo vi /etc/fail2ban/jail.conf
Aktywuj wszystkie usługi, które chcesz monitorować fail2ban, zmieniając włączone = false na * włączone = true *
Na przykład, jeśli chcesz włączyć monitorowanie SSH i banowanie więzienia, znajdź wiersz poniżej i zmień opcję z false na true . To jest to.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Jeśli chcesz otrzymywać e-maile od Fail2Ban, jeśli hosty są zbanowane, zmień następujący wiersz na swój adres e-mail.
destemail = root@localhost
i zmień następujący wiersz z:
action = %(action_)s
do:
action = %(action_mwl)s
Możesz także utworzyć filtry reguł dla różnych usług, które chcesz monitorować fail2ban, które nie są domyślnie dostarczane.
sudo vi /etc/fail2ban/jail.local
Dobre instrukcje konfiguracji fail2ban i tworzenia różnych filtrów można znaleźć w HowtoForge - kliknij tutaj, aby zobaczyć przykład
Po zakończeniu konfiguracji Fail2Ban uruchom ponownie usługę za pomocą:
sudo /etc/init.d/fail2ban restart
Możesz także sprawdzić status za pomocą.
sudo fail2ban-client status
Zarówno RKHunter, jak i CHKRootkit w zasadzie robią to samo - sprawdź system pod kątem rootkitów. Bez szkody przy użyciu obu.
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install rkhunter chkrootkit
Aby uruchomić chkrootkit, otwórz okno terminala i wprowadź:
sudo chkrootkit
Aby zaktualizować i uruchomić RKHunter. Otwórz terminal i wprowadź następujące dane
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
Nmap („Network Mapper”) to darmowe narzędzie typu open source do wykrywania sieci i audytu bezpieczeństwa.
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install nmap
Przeskanuj system w poszukiwaniu otwartych portów za pomocą:
nmap -v -sT localhost
Skanowanie SYN za pomocą:
sudo nmap -v -sS localhost
Logwatch to konfigurowalny system analizy dzienników. Logwatch analizuje dzienniki systemu i tworzy raport analizujący określone obszary. Logwatch jest łatwy w użyciu i będzie działał od razu w pakiecie na większości systemów.
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install logwatch libdate-manip-perl
Aby wyświetlić dane wyjściowe z zegarka, użyj mniej:
sudo logwatch | less
Aby wysłać raport z zegarem z ostatnich 7 dni na adres e-mail, wprowadź następujące dane i zastąp mail@domain.com wymaganym adresem e-mail. :
sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today'
Tiger to narzędzie bezpieczeństwa, które może być używane zarówno jako audyt bezpieczeństwa, jak i system wykrywania włamań.
Otwórz terminal i wprowadź następujące dane:
sudo apt-get install tiger
Aby uruchomić tygrysa, wprowadź:
sudo tiger
Wszystkie dane wyjściowe Tiger można znaleźć w / var / log / tiger
Aby wyświetlić raporty bezpieczeństwa tygrysa, otwórz terminal i wprowadź następujące dane:
sudo less /var/log/tiger/security.report.*
magic_quotes_gpc = On
. Magiczne cytaty zostały najpierw przestarzałe, a następnie usunięte: php.net/manual/en/security.magicquotes.whynot.php
Ponieważ powiedziałeś, że jest to serwer hostingowy ... Chciałbym podzielić się moimi najlepszymi praktykami i doświadczeniem z 5 długich lat w branży hostingowej.
Z moich przeszłych doświadczeń, zamiast od razu przejść do konfiguracji piekła, powinieneś najpierw złożyć nisko wiszące winogrona bezpieczeństwa, jak wskazano w danym artykule.
Ponieważ masz LAMP, musisz być bardzo ostrożny wobec PHP i jego ustawień php.ini. To dobry link do zabezpieczenia PHP. PHP ma super moce, które mogą stać się pętlą bezpieczeństwa, jeśli nie są odpowiednio skonfigurowane.
Możesz użyć zadania cron, aby sprawdzić, kiedy Twoje pliki zostały zmodyfikowane bez Twojej zgody i ewentualnie włamane; za pomocą tego zadania cron . Wolę Notepad ++, aby porównać wyniki cron (bezpośrednio pobierz e-mail cron z serwera WWW i otwórz w Notepad ++).
Jeśli chcesz zainstalować SEM, najlepiej wybrać cPanel (niezależnie od tego, czy jest płatny). Webmin i zpanel są bardzo dobrymi darmowymi alternatywami. Webmin jest lepszy, ponieważ przynajmniej używa samopodpisanych certyfikatów i zwiększa bezpieczeństwo.
Jeśli chcesz, aby coś działało od razu po wyjęciu z pudełka, możesz wybrać system Linux pod klucz. Jest oparty na Ubuntu, niezwykle łatwy do wdrożenia i elastyczny dla twoich potrzeb. Przy bardzo małym wysiłku zyskujesz bezpieczeństwo po wyjęciu z pudełka. To jest ich stos LAMP . Ja osobiście używam i wolę tylko to.
Jeśli zaczynasz od zera, możesz także zainstalować ISPconfig3. Instrukcja tutaj .
możesz przetestować swoje bezpieczeństwo, próbując przeniknąć do swojego bezpieczeństwa przy użyciu Back-Track-Linux .
przechowuj złożone długie i losowe hasła. Nie przechowuj ich na komputerze. spisać je. Użyj płyty CD na żywo, aby uzyskać dostęp do tych danych logowania.
uzyskaj oprogramowanie do ochrony przed brutalną siłą , takie jak fail2ban.
Nie uruchamiaj demonów, których nie potrzebujesz.
Zablokuj wszystkie niepotrzebne porty . bądź bardzo ostrożny z portem SSH (22).
Zdobądź statyczny adres IP w systemie, przez który będziesz zarządzać serwerem. Zrób większość rzeczy, blokując adres IP i zezwól tylko twojemu adresowi IP na dostęp do tych miejsc konfiguracji, takich jak port 22.
Pod koniec dnia ... pracuj z całkowitym spokojem, nie przejmuj się instalacją, a stosowanie zdrowego rozsądku zabierze Cię znacznie dalej.
**My heartiest best wishes to you. good luck.**
brute force attacks
i dictionary attacks
.. Losowe długie hasło to jedyny sposób, aby zabezpieczyć się przed takimi atakami.
Skorzystaj z projektu Bastille Linux.
Zapewnia interaktywne narzędzie do wykonywania dodatkowych środków zwiększających bezpieczeństwo w celu zwiększenia ogólnego bezpieczeństwa i zmniejszenia podatności na kompromisy w systemie Ubuntu (z Bastille Linux ).
Oferuje funkcje oceny i raportowania, dzięki czemu można powiedzieć, które części systemu nie są zablokowane. Bada system w trybie tylko do odczytu, raportując stan każdego z jego elementów utwardzających. Na przykład Bastille może sprawdzić, czy serwer DNS jest zamknięty w więzieniu chroot, czy telnet jest wyłączony, a nawet jeśli wymagane jest, aby hasła były dobrej długości. Za pomocą tego linku możesz obejrzeć wersję demonstracyjną dostępną tylko w Internecie (więcej informacji ).
Możesz mieć podgląd w sieci (tylko) demo tutaj .
Używaj nmap
na wszystkich interfejsach komputera, abyś wiedział, jakie usługi uruchamiasz na swoim komputerze. Jest to niezbędne narzędzie bezpieczeństwa.
Usuń wszystkie niepotrzebne usługi z zewnętrznych interfejsów. Możesz skonfigurować MySQL, aby nasłuchiwał tylko na określonych interfejsach, takich jak localhost.
Użyj ufw, aby chronić swoją usługę SSH (i możliwe inne), aby nie zezwalała na zbyt wiele (nieudanych) połączeń na minutę z tego samego komputera. To utrudni ataki brutalną siłą. Zmiana numeru portu nie jest tak przydatna, po prostu niejasność, brak bezpieczeństwa.
Ograniczaj liczbę kont na swoim komputerze. Nie instaluj też więcej pakietów / programów niż faktycznie używasz. Instaluj tylko klientów X11, a nie serwer X11.
Zezwól tylko na logowanie ssh do urządzenia za pomocą certyfikatów cyfrowych, bez hasła. To sprawi, że brutalne ataki będą trudne / niemożliwe.
Chciałbym również zapoznać się z dokumentem CIS Debian Benchmarks, który zawiera znaczną liczbę procedur i procesów mających na celu wzmocnienie systemu operacyjnego, który będzie miał zastosowanie do Ubuntu, ponieważ jest on pochodną Debiana. Poradziłbym również:
Bezpieczeństwo zawsze ma swoją cenę. Ustalenie realistycznych granic pomoże ci osiągnąć swoje cele. Rozważę następujące aspekty:
Sprawdzając wszystkie linki tutaj opublikowane, myślę, że ten należy dodać. Szczegółowo opisuje nie tylko sposób konfiguracji oprogramowania, ale także przemyślenie planu bezpieczeństwa. Na plus, każde polecenie do wykonania jest wyjaśnione ze źródłem.
Niedawno napisałem o tym w jaki sposób zabezpieczyć Ubuntu 16.04-18.04. Kroki te obejmują:
Zastąp hasło Zaloguj się autoryzowanymi kluczami Zainstaluj zaporę na serwerze Linux
i trochę więcej. https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/