Определение
Первым делом необходимо определить:
- IP сервер, адрес сервера для работы, например 192.168.66.10
- IP BMC карты (IPMI), доступ к консоли сервера, например 192.168.66.11
- Маска сети, например 255.255.255.0 или 24
- Адрес сети, например 192.168.66.0/24 или 192.168.66.0/255.255.255.0
- Шлюз по умолчанию (gateway), например 192.168.66.4
- Name server, например 192.168.66.4 или 8.8.8.8 (google)
Загрузка образа дистрибутива
Скачать образ ubuntu с оффициально сайта https://ubuntu.com/download/server
Проверяйте наличие новых версий!
1. Сделать мультизагрузочную флешку ventoy в Windows.
Подробный обзор утилиты Ventoy – https://www.youtube.com/watch?v=88RS7H0p8kQ
2. Записать образ на флешку в Windows с помощью rufus.
В rufus необходимо выставить такие параметры:
- Схема раздела – GPT
- Целевая система – UEFI;
- Файловая система: FAT32
Все остальные параметры rufos – по умолчанию. После завершения записи ваша флешка готова к использованию.
3. Записать образ на флешку из командной строки linux
wget https://releases.ubuntu.com/20.04.5/ubuntu-20.04.5-live-server-amd64.iso
sudo dd if=./ubuntu-20.04.5-live-server-amd64.iso of=/dev/sdc bs=4M status=progress oflag=direct
Дополнительно: Установка Linux на UEFI EFI(ESP) Установка загрузчика GRUB
Установка
Установку можно проводить непостредственно с консоли сервера (монитор, клавиатура) или через удаленный доступ по IPMI (web)
IPMI – зайти в биос, установить IP адрес карты BMC для доступа через IPMI, в дальнейшем зайти через браузер на этот адрес. Установить в windows утилиту openwebstart для открытия launch.jnlp
Далее установить загрузочную флешку в сервер и включить сервер
В BIOS выставить загрузку с флешки
запустить его и следовать инструкциям по установке Ubuntu
Инструкция по установке с официального сайта – https://ubuntu.com/tutorials/install-ubuntu-server#1-overview
Разбивка диска
- Не выбираем – Use an entire disk, выбираем Custom storage layout
- Disk-Reformat-yes
- Use as boot device – в результате будет создан /boot/efi (512Mb)
- Под / выделить 60Gb ext4 SSD (включая swap.img. – RAM:Swap 32GB:6GB 64GB:8GB 128GB:12GB)
- Под /data выделить не менее 500 Gb SSD. Далее на нем будет создан LVM
- Под /backup выделить не менее 2TB HDD
Структура директорий
/data/agis /data/root_docker /data/config /backup/day /backup/week /backup/month
Пользователь
- Обязательно завести в качестве пользователя (username) agis. Server name – любой. После установки проверить UID(agis)=1000
- Install openSSH server – YES
- Дополнительные пакеты не ставим
Пример использования дискового пространства
Раздел / и данных (/data) монтировать на LVM разделах
Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 3904292863 3903242240 1.8T Linux filesystem $ mount | grep sda /dev/sda2 on / type ext4 (rw,relatime) /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) $ mount | grep vg /dev/mapper/vg-lv1 on /data type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
Команда sudo
Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root, либо других пользователей. Для редактирования, удаления копирования и т.д файлов, где владельцем является root нужно запустить команду
sudo -i
В этом случае значок $ поменятся на #
$ sudo -i agis@server:~#
SSH сервер
По умолчанию порт SSH=22
$ cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
Изменить порт ssh сервера в /etc/ssh/sshd_config например на 2978. Можно выбрать любой другой.
$ sudo -i # nano /etc/ssh/sshd_config # cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Include /etc/ssh/sshd_config.d/*.conf Port 2978
Перезапустите ssh сервер (force-reload reload restart start status stop try-restart)
# service ssh restart
Дополнительная информация – https://help.ubuntu.ru/wiki/ssh
Добавить пользователя work
Пользователь work будет иметь возможность запускать и останавливать контейнеры без возможности менять и смотерть конфигурационные файлы
# adduser work Adding user `work' ... Adding new group `work' (1001) ... Adding new user `work' (1001) with group `work' ... Creating home directory `/home/work' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for work Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct?[Y/n] y
Работа через прокси (proxy)
Open the /etc/environment file with vi (or your favorite editor). This file stores the system-wide variables initialized upon boot.
Add the following lines, modifying appropriately. You must duplicate in both upper-case and lower-case because (unfortunately) some programs only look for one or the other:
$ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" http_proxy="http://192.168.64.18:8080/" https_proxy="http://192.168.64.18:8080/" ftp_proxy="http://192.168.64.18:8080/" no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" HTTP_PROXY="http://192.168.64.18:8080/" HTTPS_PROXY="http://192.168.64.18:8080/" FTP_PROXY="http://192.168.64.18:8080/" NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
apt-get, aptitude, etc. will not obey the environment variables when used normally with sudo. So separately configure them; create a file called 95proxies in /etc/apt/apt.conf.d/, and include the following:
$ cat /etc/apt/apt.conf.d/95proxies Acquire::http::proxy "http://192.168.64.18:8080/"; Acquire::ftp::proxy "ftp://192.168.64.18:8080/"; Acquire::https::proxy "https://192.168.64.18:8080/";
Дополнительные пакеты
Установите следующие пакеты
$ sudo apt update && sudo apt install -y jq tree net-tools ethtool unzip ntp
Пакеты для расширенной работы
# sudo apt update && sudo apt install -y smartmontools ioping iperf3 hddtemp lm-sensors mongo-tools
.bashrc
Добавить в конец файла /home/agis/.bashrc
PATH=$PATH:/data/agis/agis-script:.
После этого скрипты из папки /data/agis/agis-script будут набираться и выполнтяься без ввода абсалютного пути.
Если этого не сделать, то нужно будет набирать в командной строке
$ /data/agis/agis-script/agis-start-cont
Если это сделать, то нужно будет набирать в командной строке лишь
$ agis-start-consudo apt update && sudo apt install -y smartmontools ioping iperf3
Внимание!
Настоятельно рекомендуем использовать VPN для поключения к серверу
Изменить имя компьютера или хоста
Имя компьютера или по-другому, имя хоста устанавливается во время установки системы. Оно используется для идентификации компьютера в локальной сети, например, передается службой NetBIOS как имя сервера Samba, а также вы будете постоянно видеть его в терминале перед приглашением ввода команды.
$ sudo hostnamectl set-hostname новое_имя $ sudo nano /etc/hosts 127.0.0.1 старое_имя - заменить на новое $ systemctl restart systemd-logind.service
Дата и время
Установите timezone и locale
$ sudo timedatectl set-timezone Asia/Almaty $ sudo update-locale LC_TIME=C.UTF-8 $ date Sat Jan 9 15:13:42 +06 2021 $ date --utc
Список доступных timezones
$ timedatectl list-timezones
sudo без пароля
Добавить пользователя в группу sudo
# usermod -aG sudo agis
$ sudo visudo # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) NOPASSWD: ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Если надо дать доступ sudo без пароля пользователю myuser, то
myuser ALL=(ALL) NOPASSWD: ALL for a single user, or
Если надо дать доступ sudo без пароля пользователям в группе sudo, то
%sudo ALL=(ALL) NOPASSWD: ALL for a group
Поддержка swap
1) Войдите на хост Ubuntu или Debian как пользователь с привилегиями sudo.
2) Отредактируйте /etc/default/grub файл. Добавьте или измените GRUB_CMDLINE_LINUX строку
GRUB_CMDLINE_LINUX=”cgroup_enable=memory swapaccount=1″
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1" GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
3) Обновление GRUB.
$ sudo update-grub
The changes take effect when the system is rebooted!!!
Обязательно перегрузите сервер!!!!
Как настроить vsftpd на Ubuntu
Коротко
apt install -y vsftpd systemctl start vsftpd systemctl enable vsftpd
# cat /etc/vsftpd.conf local_enable=YES chroot_local_user=YES user_sub_token=$USER local_root=/home/$USER/ftp user_sub_token=$USER local_root=/home/$USER/ftp userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO pasv_enable=Yes pasv_address=XX.XX.XX.XX pasv_min_port=30100 pasv_max_port=30200
Так выглядит файл /etc/vsftpd.user_list
# cat /etc/vsftpd.user_list zander
adduser zander mkdir -p /home/zander/ftp/zander chmod 550 /home/zander/ftp chmod 750 /home/zander/ftp/zander/ chown -R zander: /home/zander/ftp echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly echo "/bin/ftponly" | sudo tee -a /etc/shells usermod zander -s /bin/ftponly systemctl restart vsftpd.service
Открыть порты 21, 30100 – 30200 в pfsense
# Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # # Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=YES # # This directive enables listening on IPv6 sockets. By default, listening # on the IPv6 "any" address (::) will accept connections from both IPv6 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6 # sockets. If you want that (perhaps because you want to listen on specific # addresses) then you must run two copies of vsftpd with two configuration # files. #listen_ipv6=NO # # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) #local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). #connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is shown # below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. #xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. chroot_local_user=YES # # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) #chroot_local_user=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. #ls_recurse_enable=YES # # Customization # # Some of vsftpd's settings don't fit the filesystem layout by # default. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd/empty # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO # # Uncomment this to indicate that vsftpd use a utf8 filesystem. #utf8_filesystem=YES user_sub_token=$USER local_root=/home/$USER/ftp user_sub_token=$USER userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO pasv_enable=Yes pasv_address=yourPublicIP pasv_min_port=30100 pasv_max_port=30200 log_ftp_protocol=YES vsftpd_log_file=/var/log/vsftpd.log session_support=YES dual_log_enable=YES
Для клиента ftp
In Ubuntu ftp -p for passive mode works fine.
The Windows FTP command-line client (ftp.exe) does not support the passive mode, on any version of Windows.
From Windows OS, use the Windows Explorer ftp://username@server this will use Passive Mode by default
Подробно
Установить и запустить vsftpd
# apt install -y vsftpd # systemctl start vsftpd # systemctl enable vsftpd
Изменения в /etc/vsftpd.conf:
Прежде чем вносить какие-либо изменения в конфигурационный файл, скопировать образец для возможности отката изменений без переустановки пакета
# sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Для аутентификации локальных пользователей надо раскоментировать строчку
local_enable=YES
Запрет входа анаонимных пользователей
anonymous_enable=NO
По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы:
write_enable=YES
Ограничение пользователей. В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() «заточение», выше которого (по дереву каталогов) он не сможет подняться.
chroot_local_user=YES
По умолчанию из соображений безопасности, когда включен chroot, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи.
Создать каталог ftp внутри дома пользователя, который будет служить корневым каталогом и каталогом загрузки с возможностью записи для загрузки файлов:
user_sub_token=$USER local_root=/home/$USER/ftp
Вы можете настроить vsftpd, чтобы разрешить вход по ftp только определенным пользователям. Для этого добавьте следующие строки в конец файла:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Создайте /etc/vsftpd.user_list, содержащий список пользователей, которым разрешен вход по ftp по одному на строку. Другие пользователи зайти по ftp не смогут
# cat /etc/vsftpd.user_list zander
Создание FTP пользователя
# adduser zander # mkdir -p /home/zander/ftp/zander # chmod 550 /home/zander/ftp # chmod 750 /home/zander/ftp/zander/ # chown -R zander: /home/zander/ftp
Пользователь zander сможет записывать файлы только в директорию /home/zander/ftp/zander/
Запрет Shell Access
Создать файл /bin/ftponly и сделать его исполняемым:
# echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly # chmod a+x /bin/ftponly
Добавить ноый shell в спсиок доступных shells в /etc/shells file:
# echo "/bin/ftponly" | sudo tee -a /etc/shells
Изменить пользовательский shell на /bin/ftponly:
# usermod zander -s /bin/ftponly
Перезагрузите vsftpd:
# systemctl restart vsftpd.service
https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-ubuntu-20-04/
Passive FTP Connections
Passive FTP Connections. By default, vsftpd uses active mode. To use passive mode, set the minimum and maximum range of ports in /etc/vsftpd.conf:
pasv_enable=Yes pasv_address=XX.XX.XX.XX pasv_min_port=30100 pasv_max_port=30200
Открыть порты 21, 30100 – 30200 в pfsense
You can use any port for passive FTP connections. When the passive mode is enabled, the FTP client opens a connection to the server on a random port in the range you have chosen
To establish a data connection for a file transfer or a directory listing, an FTP client (in the passive FTP mode) sends PASV command to the server. The server responds with its IP address and port number. The client should connect to that IP/port to initiate the transfer.
It’s quite common though that the FTP server is behind a NAT. And it’s aware of its local address within its NATted network only. When it reports such IP address to a client outside the NAT, the IP address is obviously of little use. It’s clearly a misconfiguration of the FTP server. The FTP server must report its external IP address, that can be used outside the NATted networks.
As this is unfortunately a common issue, many FTP clients try to detect this (by checking that the reported IP address is within the range of addresses reserved for local communications within a private network). FileZilla does too and reports the mentioned message. You should see the offending address in the FileZilla log:
2017-04-05 08:02:00 12064 3 Command: PASV
2017-04-05 08:02:00 12064 3 Response: 227 Entering Passive Mode (10,0,0,1,213,36).
First 4 numbers are the IP addresses – 10,0,0,1,213
the last two are: p1 and p2 from RFC of ftp: http://www.faqs.org/rfcs/rfc959.html
to get port, use:
p1 * 256 + p2 = 231*256 + 36 = 59172
When encountering this, FileZilla tries to connect to the primary address of the FTP server instead, as that is usually the correct address to use. So in most cases, you won’t notice the problem at all.
Though as you mention that “Browsing is nearly impossible”, it looks like that it does not help. If that’s the case, most usual problem is that some firewall (or the NAT) on the way between you and the server blocks the connection attempt to the data port (as reported in the response to the PASV command).
See my article about Network configuration for FTP passive mode for details.
https://infoit.com.ua/linux/kak-ustanovit-ftp-server-na-linux-mint-20
Дополнительно
FileZilla — бесплатный FTP клиент https://filezilla.ru/
Возможные проблемы при установке
I ran sudo apt-get install vsftpd and that was successful. But I cannot find the vsftpd.conf file anywhere. I thought it was supposed to be in /etc/vsftpd.conf.
You’ve a weird issue, try clearing you cache, update your repository information and install it again:
sudo apt-get clean sudo apt-get update sudo apt-get install --reinstall vsftpd
If this did not work, purge vsftpd (remove it including its configuration files) and reinstall it:
sudo apt-get purge vsftpd sudo apt-get install vsftpd