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