Zabezpiecz serwer Linux, blokując zdalne logowanie root (baza danych SSH i FTP oraz MySQL)
W tym poście wiemy, jak ważne jest bezpieczeństwo. Jeśli zarządzasz swoim serwerem (VPS, hosting w chmurze lub serwer dedykowany), musisz mieć uprawnienia administratora. Root jest jak konto administratora w systemie Windows, ale tylko potężniejsze (możesz w zasadzie zrobić wszystko).
Prawdopodobnie nie jest dobrym pomysłem zmienianie nazwy konta root (lub ukrywanie go) w systemie Linux, jest to spowodowane faktem, że wiele aplikacji/programów, takich jak sendmail, zakłada, że istnieje konto root lub coś zacznie się psuć, jeśli konto root nie został znaleziony (w systemie Windows można zmienić nazwę konta administratora ). Jednak musisz mieć normalne konto użytkownika (mniej wydajne), które obsługuje codzienne zadania, więc nie spowodujesz uszkodzeń systemu, jeśli od czasu do czasu popełnisz błędy.
SSH
Aby utworzyć zwykłego użytkownika, uruchom polecenie sudo adduser nuser gdzie nuser to konto użytkownika, które chcemy dodać. Postępuj zgodnie z instrukcjami, aby ustawić hasło lub możesz wydać hasło passwd nuser później.
Dokładnie sprawdź, czy możesz zalogować się za pomocą SSH i przełączyć się na root za pomocą su. Po ich potwierdzeniu musisz edytować plik w /etc/ssh/sshd_config swoim ulubionym edytorem tekstu (np. vim). Następnie poszukaj linii PermitRootLogin yes i zmień ją na PermitRootLogin no. Zrestartuj serwer ssh w ten sposób:
Następnie, jeśli ponownie zalogujesz się za pomocą root, zawsze zostanie odrzucony, co czyni system nieco bezpiecznym (jak wiesz, istnieje wiele adresów IP wymuszających brutalne ataki i próbujących włamać się do twojego konta root).
FTP (w porównaniu z FTP)
FTP nie jest tak bezpieczny, ale jeśli nalegasz na jego używanie, upewnij się, że używasz SFTP lub SSL/TLS, jeśli dotyczy. Popularnym serwerem FTP w systemie Linux jest vsFTP i po zainstalowaniu upewnij się, że wyłączyłeś również logowanie jako root.
Konfiguracja vsFTP znajduje się w pliku /etc/vsftp.conf i należy upewnić się, że ustawione są następujące wartości (można je dołączyć):
anonymous_enable=NO # no anonymous login plz
local_enable=YES
write_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.users
I utwórz plik w /etc/vsftpd.users, jeśli jeszcze go tam nie ma, i dodaj dozwolonych użytkowników linia po linii w pliku. Zrestartuj vsFTP przez:
sudo service vsftpd restart
A jeśli zalogujesz się za pomocą root, odmówi z tą wiadomością:
Connecting to: XXXXXXXXX
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
Certificate:
Can't connect
LastError: 0
Baza danych MySQL
Wyłącz zdalne logowanie root
Usuń zdalne logowanie root do bazy danych MySQL, ponieważ istnieje duże ryzyko, że twoje konto root będzie dostępne z innego komputera, a nie lokalnie. Jeśli jednak masz serwer dedykowany służący jako baza danych, to jest to inna historia, w takim przypadku musisz wzmocnić hasło roota i ewentualnie korzystać z normalnych kont w swoim wordpressie lub innych witrynach. Upewnij się, że nie udostępniasz łatwo tych plików konfiguracyjnych (np. wp-config.php). Po prostu spraw, aby te pliki nie były zapisywalne.
Zaloguj się do MySQL z wiersza poleceń i uruchom następujące dwie komendy, aby usunąć zdalne logowanie root.
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
flush privileges;
Wyłącz wszystkie loginy zdalnie
Jeśli chcesz zabronić zdalnego logowania i zezwalać tylko na połączenia lokalne, możesz po prostu dodać pomijanie sieci (lub odkomentować linię) w /etc/mysql/my.cnf w sekcji [mysqld].
[mysqld]
port=3306
skip-networking
Następnie musisz zrestartować demona MySQLd.
sudo service mysqld restart