Сегодня я составлю для себя заметку, как следует подойти если нужно ограничить доступ к удаленной системе, к примеру у меня это сервисы на Ubuntu 18.04 Server amd64
, в качестве одного из сервисов по обмену рабочими моментами между дизайнерами и программистами и подрядчиками используется FTP
. Как я считаю, мало использовать длинные пароли, важно применять максимум защиты или выделить ограничения кто может подключаться и откуда. У меня есть практические и реальные наработки на этом счет, к примеру:
Как применять ProFTPD на Ubuntu 18.04
Доступ к ProFTPD только FTP через TLS
Настраиваем Firewall-cmd на доступ к ProFTPd
Убираем болтливость Сервисов SSH & ProFTPD
Но сегодня проработаю с каких IP
адресов (будет работать если внешний IP
с которого идет подключение имеет белый IP
) можно взаимодействовать с сервисом ProFTPd
. Я же имею несколько систем в интернете и настраиваю, что доступ только с них могу инициализировать подключение, как к сервисам так и сервисам компании. Так надежнее. Например:
Шаг №1:
Чтобы ограничить доступ к сервиса только с определенного WAN-ip
или сети:
ekzorchik@srv-bionic:~$ sudo nano /etc/proftpd/proftpd.conf Include /etc/proftpd/modules.conf # Отключаем использование протокола IPv6 UseIPv6 off IdentLookups off # Имя FTP-сервера ServerName "srv-bionic" # Режим запуска FTP-сервера ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on # Таймаут на передачу: вошел и не начал передачу выраженное в мили секундах TimeoutNoTransfer 600 # Подвисание во время передачи файлов выраженное в мили секундах TimeoutStalled 600 # Таймаут бездействия после входа выраженное в мили секундах TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" # Запретить закачивать файлы, начинающиеся на точку DenyFilter \*.*/ DefaultRoot ~ AuthUserFile /etc/proftpd/ftpd.passwd Port 21 # запрещаем подключаться от имени суперпользователя RootLogin off PassivePorts 49152 65534 <IfModule mod_dynmasq.c> </IfModule> # Максимальное количество дочерних процессов MaxInstances 30 # Пользователь и группа, под которой работает демон User proftpd Group nogroup # маска для ограничения создания директорий и файлов Umask 022 022 # Разрешить перезаписывать существующие файлы AllowOverwrite on DebugLevel 10 TransferLog /var/log/proftpd/xfer.log SystemLog /var/log/proftpd/proftpd.log ExtendedLog /var/log/proftpd/auth.log AUTH auth SetEnv TZ :/etc/localtime <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> Include /etc/proftpd/tls.conf Include /etc/proftpd/conf.d/ <Limit LOGIN> Order allow,deny Allow from 172.35.35.4,172.35.35.8 Deny from all </Limit>
После не забываем сохранить внесенные изменения.
После перезапускаем proftpd
-сервис:
ekzorchik@srv-bionic:~$ sudo systemctl restart proftpd.service
Этой конфигурацией я ограничиваю доступ к сервису на авторизацию только с IP
адресов: 172.35.35.4
и 172.35.35.8
. Если инициализировать подключение с другого IP
— адреса, то сервис сразу отобьет попытку авторизации:
ekzorchik@srv-lubuntu:~$ ftp 172.33.33.117 Connected to 172.33.33.117. 421 Service not available, remote server has closed connection ftp>
а если с разрешенного — предложение на авторизацию будет:
ekzorchik@srv-nas:~$ hostname -I 172.35.35.4 ekzorchik@srv-nas:~$ ftp 172.33.33.117 Connected to 172.33.33.117. 220 ProFTPD 1.3.5e Server (srv-bionic) [172.33.33.117] Name (172.33.33.117:ekzorchik): ftp1 331 Password required for ftp1 Password: 230 User ftp1 logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye. ekzorchik@srv-nas:~$
Исходя из этого ограничение на доступ может быть, либо:
#Конкретный IP адрес
172.33.33.2
#Несколько конкретных IP-адресов
172.33.33.2,172.33.33.3
#Доступ по маске
#172.33.33.0/24
Шаг №2:
Чтобы ограничить доступ к сервиса только с определенного DNS
—суффикса:
<Limit LOGIN> Order allow,deny Allow from .polygon.local Deny from all </Limit>
Тем самым только из локальной сети есть доступ по FTP
Шаг №3:
Чтобы блокировать определенные IP
адреса тем самым они никогда не смогут связаться к моим FTP
сервисом, создадим класс блокировки и обозначим что им нельзя:
<Class blacklist> From 172.35.35.0/24 From 172.39.35.0/24 </Class> <Limit LOGIN> Order deny,allow DenyClass blacklist AllowAll </Limit> ekzorchik@srv-bionic:~$ sudo systemctl restart proftpd.service
Проверяю:
ekzorchik@srv-nas:~$ hostname -I 172.35.35.4 ekzorchik@srv-nas:~$ ftp 172.33.33.117 Connected to 172.33.33.117. 421 Service not available, remote server has closed connection ftp>
Доступ заблокирован с адреса 172.35.35.4
сети 172.35.35.0/24
Шаг №4:
Чтобы ограничить доступ с определенных IP
и с определенного логина, т. е. Должны соблюстись два условия:
ekzorchik@srv-bionic:~$ sudo nano /etc/proftpd/proftpd.conf <Class WhiteIP> From 172.35.35.4 </Class> <IfUser ftp1,ftp3,ftpuser> <Limit LOGIN> AllowClass WhiteIP DenyAll </Limit> </IfUser> ekzorchik@srv-bionic:~$ sudo systemctl restart proftpd.service
Только с IP 172.35.35.4
и из под ftp1
(либо ftp3, ftpuser
) можно будет авторизоваться на сервисе ProFTPd
:
ekzorchik@srv-nas:~$ hostname -I 172.35.35.4 ekzorchik@srv-nas:~$ ftp 172.33.33.117 Connected to 172.33.33.117. 220 ProFTPD 1.3.5e Server (srv-bionic) [172.33.33.117] Name (172.33.33.117:ekzorchik): ftp1 331 Password required for ftp1 Password: 230 User ftp1 logged in Remote system type is UNIX. Using binary mode to transfer files. ftp>
На заметку: За дополнительными способами разграничения доступа к сервису ProFTPd
советую обратиться к официальному сайту раздела документации: https://www.proftpd.org/docs
там вы сможете подчерпнуть больше информации.
Данной я заметкой я хотел составить наработку для последующего использования с учетом как хочу ограничивать доступ и добился этого. Теперь открыв ее получу желаемое и не буду заново читать документацию.
На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.