Kolejna reinstalacja, tym razem kamal + obrazy docker
Podstawowa konfiguracja
Ruby
sudo apt install -y git curl autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev
Instalacja RBENV
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
rbenv install -l # Lists all available Ruby versions
Instalacja wybranej wersji ruby i ustawienie jej jako domyślnej (globalnie):
rbenv install 3.3.5
rbenv global 3.3.5
ruby -v
Instalacja kamal
gem install kamal
kamal version
mkdir kamal
kamal init
Użytkownicy i logowanie
Dodanie nowego użytkownika którego będziemy używać do pracy zamiast konta root
adduser lambda
Dodanie użytkownika lambda
do grupy administratorów:
gpasswd -a lambda sudo
Dodanie niestandardowego portu do połączeń przez SSH:
grep 'ssh' /etc/services
sudo ufw allow <port number>/tcp
Wyłączenie możliwości logowania użytkownika root
poprzez SSH (+ zmiana domyslengo portu)
sudo nano /etc/ssh/sshd_config
PermitRootLogin yes
zamienić na:
Protocol 2
PermitRootLogin no
Port <port number>
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Aktywacja firewalla, dodanie reguły dla OpenSSH
sudo ufw app list
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Poprawna konfiguracja:
Status: active
To Action From
-- ------ ----
12345/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
12345/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
restart
sudo service ssh restart
Wysyłanie klucza SSH na wskazany serwer
ssh-copy-id root@1.2.3.4
ssh-copy-id
może przyjąć dodatkowy parametr -i w którym, możemy wskazać który klucz ma być podpięty, jeśli mamy więcej niż jeden.
ssh-copy-id -i ~/.ssh/id_rsa root@1.2.3.4
Polecenie ssh-copy-id nie robi nic innego niż to, że wkleja nasz klucz publiczny SSH do .ssh/authorized_keys w folderze domowym użytkownika, na którego się logujemy. Możemy też ręcznie dopisać nasz klucz w tym pliku. Jeżeli nie istnieje to możemy stworzyć ten plik(oraz folder nadrzędny .ssh, jeżeli taki też nie istnieje).
Fail2Ban
sudo apt-get install fail2ban
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
banaction = ufw
banaction_allports = ufw
sudo systemctl restart fail2ban
sudo iptables -L f2b-sshd --line-numbers
O tym dlaczego warto to zrobić dla własnego bezpieczenstwa, można poczytać w artykule Lessons Learned from SSH Credential Honeypots
Jeżeli mimo wszystko potrzebujesz naocznie przekonać się na jakie zagrożenia narażone sa komputery podłączone do internetu to polecam wykonanie komendy
sudo grep "Failed password" /var/log/auth.log
Aktualizacja systemu
sudo apt-get update
sudo apt-get upgrade
sudo apt-get --with-new-pkgs upgrade
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# manual run
sudo unattended-upgrade -v
Przydatne programy:
sudo apt install mc
sudo apt-get install curl
sudo apt-get install htop
sudo apt install net-tools
W przypadku problemów z DNS (Temporary failure resolving 'security.ubuntu.com'
):
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
sudo nano /etc/systemd/resolved.conf
DNS=1.1.1.1 8.8.8.8
FallbackDNS=8.8.4.4
Docker
https://docs.docker.com/engine/install/ubuntu/
Firewall
Do konfiguracji firewalla można użyć (wyświetli dostępne domyślnie tryby):
sudo ufw app list
Wybranie któregoś z nich odbywa się poprzez:
sudo ufw allow 'Nginx Full'
Sprawdzenie statusu:
sudo ufw status
Wynik:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
http://192.166.219.228/