Server Set Up Instruction
sudo apt update && apt upgrade -y && sudo apt install libffi-dev
sudo apt install -y mosh tmux htop git curl wget unzip zip gcc build-essential make
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
sudo apt install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev
libssl-dev libreadline-dev libffi-dev wget
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev \
zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev \
libncursesw5-dev libffi-dev uuid-dev
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
sudo apt install libffi-dev
ssh-keygen
ssh-copy-id {username}@{ip-сервера}
or copy from /root/.ssh/id_rsa.pub
If your SSH folder does not yet exist, create it manually:
mkdir ~/.ssh chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys
Paste the SSH public key into your ~/.ssh/authorized_keys file (see Installing and Using the Vim Text Editor on an Cloud Server):
sudo vim ~/.ssh/authorized_keys
Для putty требуется скачать PuTTy Key Generator, чтобы сделать .ppk ключ из .pub
И сохраняем его под новым именем:
Далее убедимся, что директория ~/.ssh
и файл authorized_keys
имеют подходящие права доступа:
chmod -R go= ~/.ssh
Эта команда удаляет права доступа для “group” и “other” для директории
~/.ssh/.
~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.
~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать.
Если вы используете аккаунт root
для настройки ключей для аккаунта пользователя, важно, чтобы директория ~/.ssh
принадлежала этому самому пользователю, а не пользователю root
:
chown -R {username}:{groupname} ~/.ssh
sudo nano /etc/ssh/sshd_config
AllowUsers www PermitRootLogin no PasswordAuthentication no # Отключает доступ с паролем на сервер MaxAuthTries 2 LoginGraceTime 120 #*на* 30 Port 22 # *на* 2223 Protocol 2 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PermitEmptyPasswords no UsePAM no DenyUsers nginx DenyGroups nginx UsePrivilegeSeparation sandbox
sudo service ssh restart // sudo reload ssh
Install python 3.x
check latest python.org/downloads
Build from source python 3.x, install with prefix to ~/.python folder:
mkdir ~/.python ; \ wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tgz ; \ tar xvf Python-3.x.x.tgz ; \ cd Python-3.x.x ; \ ./configure --enable-optimizations --prefix=/home/{username}/.python ; \ make -j4 ; \ sudo make altinstall
*"sudo make install" или в папку local: "sudo make altinstall"
* # alternatively `make -j 4` will utilize 4 threads
sudo rm -rf cd /home/{username}/Python-3.x.x sudo rm -rf cd /home/{username}/Python-3.x.x.tgz
sudo /home/{username}/.python/bin/python3.x -m venv /home/{username}/venv
source /home/{username}/venv/bin/activate
Now python3.x in /home/{username}/.python/bin/python3.x
. Update pip:
sudo /home/{username}/.python/bin/python3.x -m pip install -U pip
sudo /home/{username}/.python/bin/python3.x -m pip install -U --index-url=http://pypi.python.org/simple/ --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip
Ok, now we can pull our project from Git repository (or create own), create and activate Python virtual environment:
cd code
git pull project_git
cd project_dir
python3.x -m venv env
. ./env/bin/activate
configure systemd...
nginx
sudo apt install nginx service nginx start
/etc/nginx/sites-available/default
измменить время сервера:
"dpkg-reconfigure tzdata"
# Ограничим возможности потенциальных злоумышленников к подбору паролей SSH. Воспользуемся утилитой fail2ban. Также позже мы настроим fail2ban для блокирования возможности подбора пароля к WordPress.
"sudo apt-get install fail2ban"
nano /etc/fail2ban/jail.d/sshd.conf
[sshd] enabled = true port = 9724 filter = sshd ignoreip = 127.0.0.1/8 logpath = /var/log/auth.log findtime = 300 maxretry = 3 bantime = 3600
port — по какому порту банить IP, попавший на bantime. Если на сервере нестандартный порт SSH, укажите его здесь ignoreip — белый список IP, меняем на свои значения findtime — время, в течение которого можно ошибиться не более maxretry раз maxretry — максимальное число попыток авторизоваться по SSH в течение findtime bantime — время бана
[sshlongterm] enabled = true filter = sshd logpath = %(sshd_log)s banaction = iptables-allports findtime = 1d maxretry = 21 bantime = 1w
banaction — как банить. Чтобы банить по всем портам, указываем iptables-allports, в таком случае, указывать port не обязательно
После внесения изменений нужно перезагрузить fail2ban
Как перезагрузить fail2ban
# sudo service fail2ban start
service fail2ban restart
https://sheensay.ru/ssh
apt-get install fail2ban
Отредактируем файлик jail
nano /etc/fail2ban/jail.conf
Находим секцию ssh и приводим к такому виду:
[ssh] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log findtime = 3600 maxretry = 6 bantime = 86400