Instalacja
Serwer
Aktualizujemy bazę dostępnych pakietów i aktualizujemy system do najnowszych wersji.
sudo apt update && sudo apt upgrade -y
Dodajemy kilka niezbędnych programów takich jak "sudo", edytor "nano", menadżer plików "mc", menadżer procesów "htop", "tmux" i "unzip".
sudo apt install sudo apt-utils apt-show-versions nano mc locales dialog htop tmux rsync git unzip wget p7zip-full -y
Instalujemy niezbędne pakiety. (Przy instalacji w dockerze mogą nie być potrzebne)
sudo apt install build-essential autoconf autoconf-archive gnu-standards zlib1g-dev psmisc libxml2 libxml2-dev libpcre3 libpcre3-dev libssl-dev autoconf2.13 libcurl4 libcurl4-openssl-dev libgd-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libmcrypt-dev libxslt1-dev bzip2 libbz2-dev libxml2-dev libevent-dev libltdl-dev libmagickwand-dev libmagickcore-dev imagemagick libreadline-dev libc-client2007e-dev libsnmp-dev snmpd snmp uuid uuid-dev nfs-kernel-server nfs-common python3-setuptools python3-dev python3-pip python-is-python3 libonig-dev iptables parallel -y
Następnie ustawiamy stronę kodową wybierając wszystkie en_US oraz pl_PL i ustawiając jako domyślną pl_PL.UTF8
sudo dpkg-reconfigure locales
oraz strefę czasową
sudo dpkg-reconfigure tzdata
Zmieniamy plik konfiguracyjny sshd (/etc/ssh/sshd_config) uniemożliwiając logowanie się poprzez ssh jako root.
Polecenie zmienia także port, na którym pracuje serwer ssh na 21, tak aby w systemach, gdzie wyłączona jest możliwość połączenia się na porcie 22, można było skorzystać z otwartego portu dla połączeń ftp. Zmiana ta jednak, gdy nie ma blokady portu 22, nie jest konieczna.
sudo sed -i -e "s:Port 22:Port 21:g" -e "s:LoginGraceTime 120:LoginGraceTime 45:g" -e "s:PermitRootLogin yes:PermitRootLogin no:g" /etc/ssh/sshd_config
#sudo sed -i -e "s:Subsystem sftp /usr/lib/openssh/sftp-server:Subsystem sftp internal-sftp:g" /etc/ssh/sshd_config
Możliwe, że należy także na firewallu otworzyć port 21, jeżeli wczesniej nie zostało to zrobione.
sudo iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
sudo netfilter-persistent save
Przy okazji można otworzyć także porty dla usługi http:, https oraz PostGis
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -I INPUT -p udp -m udp --dport 443 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
sudo netfilter-persistent save
Ponieważ użytkownik root nie ma już możliwości zalogowania się poprzez ssh, to kolejnym etapem jest dodanie użytkownika www-data.
Jako nazwa_uzytkownika należy wpisać nazwę dodawanego użytkownika
adduser nazwa_uzytkownika
Następnie modyfikujemy plik sudores i dodajemy uprawnienia do korzystania z sudo dla utworzonego użytkownika.
sudo sh -c 'echo "nazwa_uzytkownika ALL=(ALL:ALL) ALL" >> /etc/sudoers.d/nazwa_uzytkownika'
Po wykonaniu powyższych kroków logowanie na użytkownika root jest niemożliwe, w związku z czym należy logować się do systemu jako nowo utworzony użytkownik. W przypadku konieczności skorzystania z uprawnień superużytkownika root, należy wykonać polecenie:
su - root
W związku z tym, że większość oprogramowania serwera będzie pracować na uprawnieniach użytkownika www-data to dodajemy dla niego katalog domowy i włączamy możliwość logowania się do systemu ustawiając hasło.
sudo mkdir -p /home/www-data
sudo chown -R www-data:www-data /home/www-data
sudo usermod -d /home/www-data -s /bin/bash www-data
sudo passwd www-data
Na koniec restartujemy serwer sshd.
sudo systemctl restart ssh