Проксирование запросов Apache во внутренюю сеть

Часть 1. Настройка домашнего хостинга на FreeBSD

Для трансляции изображения с камеры из внутренней сети на сайт потребуется прокси модуль апача. Само вещание ведёт ContaCam 7.0(для Windows XP). Понравилось, что сразу и онлайн-вещание и возможность посмотреть записи обнаруженных движений. Вставил трансляцию на страницу с помощью фрейма: <iframe allowtransparency=»true» scrolling=»no» style=»border:1px solid #ededed» src=»http://webcam.site:8800″ frameborder=»0″ height=»750″ width=»750″>

Чтобы маршрут до DVR сервера апач выбрал через внутреннюю сеть, включаем mod_proxy. Это модуль Apache для перенаправления соединений (то есть, шлюз, пропускающий их). Он доступен для использования так же, как любой другой стандартный модуль или базовая конфигурация. В целом, mod_proxy – это не один модуль, а набор модулей, каждый из которых обладает особенными функциональными возможностями.

Некоторые из этих модулей:

  • mod_proxy: основной прокси-модуль Apache, который управляет соединениями и перенаправляет их.
  • mod_proxy_http: функции прокси-сервера для протоколов HTTP и HTTPS.
  • mod_proxy_ftp: функции прокси-сервера для протокола FTP.
  • mod_proxy_connect: тунеллирование SSL.
  • mod_proxy_ajp: взаимодействие с протоколом AJP.
  • mod_proxy_wstunnel: работа с веб-сокетами (например, WS и WSS).
  • mod_proxy_balancer: кластеризация и балансировка нагрузки.
  • mod_cache: кэширование.
  • mod_headers: управление заголовками HTTP.
  • mod_deflate: сжатие.

Примечание: чтобы получить дополнительную информацию о mod_proxy и Apache, читайте официальную документацию Apache.

Активация модулей

В httpd.conf раскомментировать нужные proxy модули Возможно апач попросит раскомментировать дополнительно модуль xml2enc

Также можно выполнить следующие команды, чтобы активировать модули по одному:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

В файле конфигурации виртуальных хостов вставить блок кода:

<VirtualHost *:*>
ProxyPreserveHost On
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
ServerName localhost
</VirtualHost>

Активация балансировки нагрузки

При наличии нескольких внутренних серверов можно использовании функцию балансировки нагрузки Apache, чтобы распределить соединения при проксировании.

Отредактируйте настройки виртуального хоста (как в предыдущем разделе), используя следующие конфигурации:

<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1
BalancerMember http://0.0.0.0:8080/
# Server 2
BalancerMember http://0.0.0.0:8081/
</Proxy>
<VirtualHost *:*>
# Apply VH settings as desired
# However, configure ProxyPass argument to
# use "mycluster" to balance the load
ProxyPass / balancer://mycluster
</VirtualHost>

Активация SSL для поддержки обратного прокси

При использовании сертификатов и соединений SSL нужно также активировать промежуточный виртуальный хост. Для этого используйте нижеприведенный блок кода.

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
# Set the path to SSL certificate
# Usage: SSLCertificateFile /path/to/cert.pem
SSLCertificateFile /etc/apache2/ssl/file.pem
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
# Or, balance the load:
# ProxyPass / balancer://balancer_cluster_name
</VirtualHost>

Перезапустить службу апача.

Теперь Apache будет проксировать соединения на внутренние серверы приложений.

Источник: https://www.8host.com/blog/ustanovka-http-servera-apache-kak-obratnogo-proksi-s-pomoshhyu-mod_proxy/

Хостинг на Freebsd 11 mariadb103 php73 и apache24

После обновления php56 на php7 на сервере с MySQL-server, перестали работать сайты на моем хостинге(белый лист показывал браузер). Решение нашел благодаря нижеследующей статье. Обратить внимание на 3 ньюанса на которых «зависал»:

  1. Перейти с mysql на mariadb. Миграция с mysql-server на mariadb проходит как по рельсам. Базы удаленного mysql подцепились сами, ничего импортировать даже не пришлось. (этот пункт не факт, что обязательный, я делал со страху).
  2. Добавить файл php.conf в Include апача. Закоментировать httpd.conf раздел, где упоминался php5.
  3. В конце установать phpmyadmin для php73, постотреть доступные сейчас пакеты:
    pkg search phpmyadmin

и затем уже установить подходящий для своей версии php.
После установки phpmyadmin заработало.


Читать далее «Хостинг на Freebsd 11 mariadb103 php73 и apache24»

Мониторинг логов онлайн

Viewing live Apache logs with tail, grep and egrep

There are times you may need to monitor what’s happening on an Apache web server as is happens. This can be done from the command line using a combination of the tail command, which outputs the last part of a file, and grep or egrep which are used for regular expression pattern matching.

Viewing everything

If the log file to view is at /var/log/apache/myvirtualhost.log the first command below will show the last few lines from the file and then continue to echo to the command line as new lines are entered into the log file i.e. as additional requests are made to the web server.

tail -f /var/log/apache/myvirtualhost.log

The -f flag is what makes the tail command output additional data as it is appended to the log.

Viewing everything from a specific IP address

Tail can be combined with grep to pattern match. To filter the results to only show requests for a specific IP address (in this example 192.168.206.1) pipe the output from tail through grep like so:

tail -f /var/log/apache/myvirtualhost.log | grep 192.168.206.1

This can be useful to only show results from your own requests.

Note that the above example would also match e.g. 192.168.206.10 etc and that dots will match any character not just the period divider; if this is a concern then escape the dots with \ and put the IP address in brackets with a space after the last digit in the IP address like this:

tail -f /var/log/apache/myvirtualhost.log | grep "192\.168\.206\.1 "

Viewing everything excluding a specific IP address

Adding the -v flag to grep excludes the pattern. If you want to exclude requests from your own IP address but show everything else this can be useful:

tail -f /var/log/apache/myvirtualhost.log | grep -v "192\.168\.206\.1 "

Including particular file types only

If you only want to watch for requests for a particular file type, or even a particular file then use the same concept as grepping for the IP address. For example to show only jpg files:

tail -f /var/log/apache/myvirtualhost.log | grep .jpg

And to match a specific file, for example the robots.txt file if perhaps you are looking out for when a search engine bot hits the site:

tail -f /var/log/apache/myvirtualhost.log | grep robots.txt

Excluding particular file types

To show only webpages can be problematic especially if there is no common extension for the files being served, and some might end with / whereas other might end with .html, or there might be query strings at the end of the URL which present issues with pattern matching.

A possible solution is instead to exclude everything that’s not a webpage. Multiple exclusions can be entered by separating them with the pipe | character when using egrep instead of grep. To exclude several common file extensions and show hopefully just web pages do this:

tail -f /var/log/apache/myvirtualhost.log | egrep -v "(.gif|.jpg|.png|.swf|.ico|.txt|.xml|.css|.js|.rss)"

Note that because the regular expression contains the pipe character the expression must be contained within quotes. You can adjust the above list of extensions to suit your own conditions.

Источник: https://www.electrictoolbox.com/view-apache-logs-tail-grep-egrep/

Черно-белые списки в IPFW

Листинг файла /etc/rc.conf

firewall_enable=»YES»
firewall_script=»/etc/rc.firewall»

Для начала создадим 2 обычных текстовых файла, содержащих списки «хороших» и «плохих» ip-адресов и сетей. Назовем их badip.cfg и goodip.cfg:

# cd /etc
# touch badip.cfg
# touch goodip.cfg

Заполняем файлы ip-адресами и сетями в формате CIDR, например:

# echo "10.10.10.10/24" > badip.cfg

Затем напишем небольшой скрипт addip.sh, который будет загружать ip-адреса из файлов в таблицы ipfw:

#!/bin/sh
##################
fwcmd="/sbin/ipfw"
goodip="/usr/local/etc/webmin/ipfw/allow"
badip="/usr/local/etc/webmin/ipfw/deny"
##################
$fwcmd -f table all flush # очищаем все таблицы
##################
cat $goodip |while read line; do
$fwcmd table 1 add $line
done
##################
cat $badip |while read line; do
$fwcmd table 2 add $line
done
##################

Редактируем скрипт ipfw, добавляя в него следующие строки:

cmd="/sbin/ipfw -q add"
ipfw -f table all flush
/usr/local/etc/webmin/ipfw/addip.sh
...
$cmd 0100 allow ip from "table(1)" to me # разрешаем доступ от "хороших" хостов и сетей
$cmd 0200 deny ip from "table(2)" to me  # баним всех "плохишей"

В дальнейшем, мы можем вносить изменения в файлы и, выполняя скрипт addip.sh, динамически менять содержимое таблиц ipfw, подгружая в них новую информацию.

Содержимое таблиц можно посмотреть командой:

# ipfw table 1 list

Полностью очистить таблицу можно так:

# ipfw table 1 flush



Полезный совет:
Во FreeBSD есть хорошая утилита at, которая позволяет однократно выполнить ту или иную команду в заданное время. Таким образом, настраивая фаервол удаленно, Вы можете подстраховать себя, введя отключение фаервола через указанное время. Например, вы настроили все правила и думаете — Сейчас я включу все, а вдруг потеряю доступ? Ответ — Легко может такое произойти. Но, используя утилиту at, мы себя подстрахуем:
Синстаксис у нее простой:
# at time
Используем его, введем:
at 23:55
ipfw -q -f flush
Что бы выйти из режима, нажмите CTRL+D
Job 10 will be executed using /bin/sh
Все. Можно включать наш фаервол, через 1 минуту он будет отключен автоматически и в случае чего Вы вернете себе доступ


Источник: http://www.dwolfix.ru/tablitsy-fayervola-ipfw.html

Примеры использования таблиц файрвола IPFW.

Очень удобно, если нужно заблокировать много ip адресов.

ipfw table 10 add 192.168.1.5		#добавление в таблицу
ipfw table 10 add 192.168.1.0/24	#добавление в таблицу подсеть
ipfw table 10 list			#посмотреть что в таблице
ipfw add deny ip from table(10) to me # Все с таблицы 50 ко мне
ipfw table 10 delete 192.168.1.5	#удаляем из таблицы
ipfw table 10 flush			#чистим всю таблицу

Добавляем виртуальных пользователей vsftpd на FreeBSD

Генерируем пароль:

openssl passwd -1 yoursecretpassword

Результат($1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/), добавляем в файл /etc/vsftpd_login.db. Синтаксис файла:
Имя_юзера1:Пароль_юзера1
Имя_юзера2:Пароль_юзера2

Создать папку по имени пользователя в /home/Имя_юзера
права на нее выставить 755, владельцем сделать ftpuser‘а под которым работают виртуальные пользователи. Получить список всех пользователей:
cat /etc/passwd
.

Читать далее «Добавляем виртуальных пользователей vsftpd на FreeBSD»

Установка ProFTPD на FreeBSD 11

portmaster -vda (обновление всех портов, которым это необходимо)

Установка и настройка FTP-сервера на FreeBSD 11.0 Release. Практика использования ProFTPD.

Задача: установить FTP-сервер для оперативного выкладывания для клиентов больших файлов, которые сложно переслать по почте. Будем использовать ProFTPD.

Введение

ProFTPD появился как безопасный и удобно настраиваемый FTP-сервер, используя Apache-подобный синтаксис файла конфигурации.

В то время когда начали создавать ProFTPD, наиболее часто используемым сервером был wu-ftpd. wu-ftpd обеспечивает отличную производительность, но испытывает недостаток в многочисленных функциях новых серверов Win32 FTP, а также имеет плохую историю безопасности. Многие люди, в том числе разработчиков, которые работают на ProFTPD, потратил много времени на исправление ошибок и дыр безопасности wu-ftpd. Но к сожалению, стало ясно, что необходим начать с нуля для реализации легкой конфигурируемости и обеспечения безопасности.

Есть и другие серверы FTP, который значительно более безопасные и менее ресурсоемкие, чем wu-ftpd. Но к сожалению, не предлагают набор расширенных функций, необходимых для более сложных FTP сайтов.

ProFTPD это безопасный FTP сервер разработанный с нуля, удобный и легко конфигурируемый. Очень много хорошо известных и высоконагруженных серверов используют ProFTPD.

Установка ProFTPD

Найдем нужный порт и установим его через portmaster.

# whereis proftpd
proftpd: /usr/ports/ftp/proftpd
# portmaster /usr/ports/ftp/proftpd

Либо через порты:

#cd /usr/ports/ftp/proftpd && make install clean

===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/libexec/proftpd/mod_snmp.so
/usr/local/sbin/proftpd
/usr/local/libexec/proftpd/mod_radius.so
/usr/local/bin/ftpdctl

This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/proftpd

If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type ‘make deinstall’
to deinstall the port if this is a concern.

For more information, and contact details about the security
status of this software, see the following webpage:
http://www.proftpd.org/

===>>> Installation of ftp/proftpd (proftpd-1.3.5b) complete

Установка завершена, перейдем к настройке.

Настройка ProFTPD

Посмотрим файл конфигурации, который создал установщик /usr/local/etc/proftpd.conf

#
# For more information about Proftpd configuration
# see http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard

# Port 21 is the standard FTP port.
Port 21

# Use IPv6 support by default.
UseIPv6 on

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30

CommandBufferSize 512

# Set the user and group under which the server will run.
User nobody
Group nogroup

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite on

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
 DenyAll
</Limit>

# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.


#########################################################################
# #
# Uncomment lines with only one # to allow basic anonymous access #
# #
#########################################################################

#<Anonymous ~ftp>
# User ftp
# Group ftp

### We want clients to be able to login with "anonymous" as well as "ftp"
 # UserAlias anonymous ftp

### Limit the maximum number of anonymous logins
 # MaxClients 10

### We want 'welcome.msg' displayed at login, and '.message' displayed
 ### in each newly chdired directory.
 # DisplayLogin welcome.msg
 # DisplayFirstChdir .message

Limit WRITE everywhere in the anonymous chroot
 # <Limit WRITE>
 # DenyAll
 # </Limit>
#</Anonymous>

По сути все должно уже работать с этим конфигом.

Запуск ProFTPD

В файл /etc/rc.conf добавляем строку

proftpd_enable="YES"

Запускаем без перезагрузки сервера сервис ProFTPD:

# service proftpd start

Вышла ошибка:

# service proftpd start
Starting proftpd.
2016-12-19 11:26:14,483 srv01 proftpd[14406]: fatal: UseIPv6: Use of the UseIPv6 directive requires IPv6 support (--enable-ipv6) on line 19 of '/usr/local/etc/proftpd.conf'
/usr/local/etc/rc.d/proftpd: WARNING: failed to start proftpd

Закомментировал строку:

# Use IPv6 support by default.
# UseIPv6 on

Запустил заново, вышла ошибка:

# service proftpd start
Starting proftpd.
2016-12-19 11:31:07,047 srv01 proftpd[14439]: warning: unable to determine IP address of 'srv01'
2016-12-19 11:31:07,047 srv01 proftpd[14439]: error: no valid servers configured
2016-12-19 11:31:07,047 srv01 proftpd[14439]: fatal: error processing configuration file '/usr/local/etc/proftpd.conf'
/usr/local/etc/rc.d/proftpd: WARNING: failed to start proftpd

Имя сервера у меня srv01, добавляю в hosts

192.168.146.252 srv01

Теперь все успешно запустилось:

# service proftpd start
Starting proftpd.

Перезапустить можно командой:

# service proftpd restart

Теперь можно на любом клиенте проверить доступ к серверу по следующему адресу (в адресной строке любого браузера набираете):

ftp://192.168.146.252/

Появляется запрос на вводи имени и пароля, вводите необходимые данные и попадаете в домашнюю папку пользователя.

Естественно вводите существующего пользователя системы FreeBSD 11.0

По сути вот мы и произвели простейшую настройку ФТП-сервера для использования в локальной сети.

Думаю надо остановиться на вопросах прописывания правил для файерволла ipfw, для того, чтобы открыть доступ снаружи к установленному фтп-серверу.

Русские символы в название файла

Проблема: на FreeBSD 11.0 установлена локаль UTF-8, при доступе к файлу, которые именован русскими буквами произошла ошибка.

Решение: добавил в конфигурационный файл следующие строки

<IfModule mod_lang.c>
    UseEncoding utf8 cp1251
</IfModule>

Полезные команды ProFTPD

Проверка правильности синтаксиса конфигурационного файла

# proftpd -t
Checking syntax of configuration file
Syntax check complete.

Проверка поддерживаемых модулей

# proftpd -l
Compiled-in modules:
mod_core.c
mod_xfer.c
mod_rlimit.c
mod_auth_unix.c
mod_auth_file.c
mod_auth.c
mod_ls.c
mod_log.c
mod_site.c
mod_delay.c
mod_facts.c
mod_dso.c
mod_ident.c
mod_auth_pam.c
mod_ctrls.c
mod_lang.c

Описание настроек ProFTPD

Все что написано выше, это простейшая конфигурация ProFTPD сервера. В реальной жизни может использоваться только в локальной сети.

К сожалению в жизни все не просто так. Начнем с того, что сам протокол FTP не является безопасным, поэтому используют различные ухищрения, чтобы  его использование не дискредитировало вас и ваш сервер.

Начнем, будем создавать виртуальных ftp-пользователей. То есть они не имеют системной учетной записи в самой системе FreeBSD. Есть несколько вариантов хранения учетных записей виртуальных пользователей.

Предлагаю начать с использования альтернативного файла имен и паролей пользователей, также можно использовать базу данных MySQL.

Выполним начальные настройки, которые нам советуют сделать в дефолтном конфигурационном файле.

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
ServerIdent on "FTP Server ready."

Подготовительный этап

Создаем место для хранения файлов, я использую zfs поэтому производим следующие манипуляции:

 # zfs list
NAME USED AVAIL REFER MOUNTPOINT
bootpool 121M 1,80G 121M /bootpool
zroot 3,59G 888G 96K /zroot
zroot/ROOT 1,58G 888G 96K none
zroot/ROOT/default 1,58G 888G 1,58G /
zroot/tmp 144K 888G 144K /tmp
zroot/usr 2,01G 888G 96K /usr
zroot/usr/home 136K 888G 136K /usr/home
zroot/usr/ports 1,41G 888G 1,41G /usr/ports
zroot/usr/src 608M 888G 608M /usr/src
zroot/var 736K 888G 96K /var
zroot/var/audit 96K 888G 96K /var/audit
zroot/var/crash 96K 888G 96K /var/crash
zroot/var/log 232K 888G 232K /var/log
zroot/var/mail 120K 888G 120K /var/mail
zroot/var/tmp 96K 888G 96K /var/tmp

Смотрим как сейчас, затем создаем файловую систему:

# zfs create zroot/data

Смотрим что получилось

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
bootpool 121M 1,80G 121M /bootpool
zroot 3,59G 888G 96K /zroot
zroot/ROOT 1,58G 888G 96K none
zroot/ROOT/default 1,58G 888G 1,58G /
zroot/data 96K 888G 96K /zroot/data
zroot/tmp 144K 888G 144K /tmp
zroot/usr 2,01G 888G 96K /usr
zroot/usr/home 136K 888G 136K /usr/home
zroot/usr/ports 1,41G 888G 1,41G /usr/ports
zroot/usr/src 608M 888G 608M /usr/src
zroot/var 736K 888G 96K /var
zroot/var/audit 96K 888G 96K /var/audit
zroot/var/crash 96K 888G 96K /var/crash
zroot/var/log 232K 888G 232K /var/log
zroot/var/mail 120K 888G 120K /var/mail
zroot/var/tmp 96K 888G 96K /var/tmp

Выделенным место для хранения файлов сервера фтп.

Можно назначить квоту, зарезервировать необходимое место и включить автоматическое сжатие хранимых данных. Команды ниже не обязательны, это опции. Если не понимаете, что они значат не выполняйте их, значит оно вам не нужно.

#Резервируем место под свою файловую систему
zfs set reservation=800m zroot/data

#Устанавливаем квоту для вашей файловой системы, которую вы не сможете превысить
zfs set quota=800m zroot/data

#Включаем компрессию.
zfs set compression=on zroot/data

Настройка доступа ftp-пользователей к директориям

Изменяем владельца директории /zroot/data (необходимо указать нужную группу и пользователя ниже)

Создаем сначала реального пользователя через adduser

# adduser
Username: proftp
Full name:
Uid (Leave empty for default):
Login group [proftp]:
Login group is proftp. Invite proftp into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/proftp]: /zroot/data
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : proftp
Password : *****
Full Name :
Uid : 1002
Class :
Groups : proftp
Home : /zroot/data
Home Mode :
Shell : /usr/sbin/nologin
Locked : no

Затем права папке присваиваем

 # chown proftp:proftp /zroot/data

Выставляем права доступа к директории, иначе увидим permission denied

# chmod 775 /zroot/data

Теперь виртуальные пользователи могут создавать, редактировать и удалять файлы и папки.

Смотрим в файле /etc/passwd uid и gid созданного юзера, у меня вышло 1002

Сохраняем учетные записи виртуальных пользователей в текстовом файле

Необходимо, чтобы ftp-пользователь имел возможность редактировать и удалять файлы.
Создаем нового виртуального ftp-пользователя с логином ftpuser, идентификатором 1002, группой 1002 и домашним каталогом /data.

ftpasswd --passwd --file=/usr/local/etc/proftpd/ftpd.passwd
--name=ftpuser --uid=1002 --gid=1002 --home=/zroot/data
--shell=/usr/sbin/nologin

После выполнения команды система попросит ввести дважды пароль пользователя.
В итоге, у нас появится файл /usr/local/etc/proftpd/ftp.passwd с записью о пользователе.

Изменить пароль пользователя можно следующей командой:

ftpasswd --passwd --name=ftpuser --change-password

Изменяем /usr/local/etc/proftpd.conf, для подключения виртуального пользователя:

RequireValidShell off
AuthUserFile /usr/local/etc/proftpd/ftpd.passwd

Перезапускаем ftp-сервер:

service proftpd restart

 Мониторинг работы ProFTPD

ftpcount — показывает число соединений в настоящий момент (с разбивкой по виртуальным хостам).

ftpwho — показывает информацию о каждом текущем соединении (—verbose показывает также текущую рабочую директорию).

ftptop — аналог программы top для процессов ProFTPD.

Настройкалогов

Добавляем в/usr/local/etc/proftpd.conf

ExtendedLog /var/log/ftp.log
TransferLog /var/log/proftpd
SystemLog /var/log/proftpd/proftpd.log

Создаем необходимые файлы.

touch /var/log/ftp.log
mkdir /var/log/proftpd
touch /var/log/proftpd/xferlog
touch /var/log/proftpd/proftpd.log

Выпускаем наружу FTP-сервер через шлюз с помощью NAT (ProFTPD)

Читаем документацию и пробуем.

Сначала добавляем строку в ваш конфигурационный файл proftpd.conf. Прописываем днс-имя или ip-адрес, в зависимости от того, как вы будете обращаться к серверу снаружи.
Добавляем директиву MasqueradeAddress

  MasqueradeAddress	ftp.mydomain.com  # если используете DNS-имя
  MasqueradeAddress	123.45.67.89      # если используете IP-адрес

Естественно используете публичный адрес, а не локальный.

Существует одна большая проблема, дело в том что при пассивном режиме фтп используются порты от 1024 и выше, что означает , что вы должны направить все порты 1024-65535 от NAT к FTP-серверу. Скажем так, это не очень безопасно.

Для решения этой проблемы, используйте директиву PassivePortsв вашем конфигурационном файле proftpd.conf, чтобы контролировать , какие порты proftpd будут использоваться для передачи данных в пассивном режиме:

  PassivePorts 50000 50200 # Эти порты должны быть безопасными

Обратите внимание, что если сконфигурированный диапазон портов слишком мал, то соединенные клиенты могут испытывать задержки или даже не подключаться, когда они запрашивают подключение через пассивный режим передачи данных.

Перезапускаете proftpd сервер.

# service proftpd restart
Stopping proftpd.
Waiting for PIDS: 18273.
Starting proftpd.
2016-12-22 11:20:09,680 srv01 proftpd[23575] srv01: 192.168.146.252:21 masquerading as 123.45.67.89

Увидите примерно такую же запись, которая приведена выше. С первой частью задания вы справились.

Настройка директории для хранения файлов proftpd.conf

<Directory ~>
 AllowOverwrite on
 AllowStoreRestart on
 <Limit Write>
 AllowAll
 </Limit>
 <Limit READ>
 AllowAll
 </Limit>
</Directory>

Немного теории: принцип работы протокола FTP

Существует два режима работы протокола FTP:

  • активный режим работы протокола FTP;
    Это когда клиент соединяется на 21 порт сервера, затем сервер  при необходимости создает  DATA соединение с 20 порта на указанный порт клиента (от 1024 и выше).
  • пассивный режим работы;
    Клиент соединяется на 21 порт сервера, затем клиент при необходимости создает DATA соединение на указанный порт сервера. Диапазон портов сервера для данного режима как раз прописывается в конфигурационном файле ProFTPD, параметр PassivePorts.

Клиенту удобнее использовать пассивный режим, а серверу удобнее использовать активный режим, так как проще настройка  ipfw.

Правила IPFW для проброса FTP на внутренний сервер локальной сети

Для активного режима:

#NAT
$ipfw nat 1 config log if $internet_interface reset same_ports deny_in \
redirect_port tcp 192.168.146.252:21 21 

$ipfw add 00500 nat 1 ip from any to any via $internet_interface

$ipfw add 00605 allow tcp from any to 192.168.146.252 21 setup
$ipfw add 00606 allow tcp from me 20 to any setup

(надо еще проверить, не забыть про параметр в /etc/sysctl.conf net.inet.ip.fw.one_pass=0 )

Для  пассивного режима:

#NAT
$ipfw nat 1 config log if $internet_interface reset same_ports deny_in \
redirect_port tcp 192.168.146.252:21 21 \
redirect_port tcp 192.168.146.252:50000-50200 50000-50200 

$ipfw add 00500 nat 1 ip from any to any via $internet_interface

(проверено работает,net.inet.ip.fw.one_pass=0)

 

Использованы материалы: http://www.andrewblog.ru/ustanovka-i-nastrojka-ftp-servera-na-freebsd-11-0-release-praktika-ispolzovaniya-proftpd/

 

OpenVPN 2.4.5 Easy-RSA FreeBSD 11.1

Памятка

  1. Используй в первую очередь руководства разработчиков, даже если они отпугивают своей скромностью оформления. Это сбережет тебе много времени.
  2. Используй за основу файлы конфигурации по-умолчанию из установленных пакетов, благо они идут с пакетами в комплекте. Даже, если придется потратить время на осознание их назначений — «Лучше пару часов потерять, потом за пять минут долететь».

Установка OpenVPN на FreeBSD

Читать далее «OpenVPN 2.4.5 Easy-RSA FreeBSD 11.1»

pkg — обновление пакетов

Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.

Примечание: Узнать о том, как во FreeBSD раньше происходило управление бинарными пакетами, и о том, как пользоваться портами, вы можете из заметки Установка и обновление софта во FreeBSD. Не исключаю также, что вас могут заинтересовать статьи Использование FreeBSD на десктопе, версия 2.0 и Памятка по обновлению ядра и мира FreeBSD.

Итак, при первом запуске pkg без параметров вы скорее всего увидите такое сообщение:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:

Отвечаем утвердительно, и ждем, пока pkg установится.

Затем читаем справку:

pkg help

Посмотреть справку по конкретной команде можно так:

pkg help update

Пример, пакеты от которых зависит Webmin

# pkg info -d webmin
webmin-1.870:
 p5-Net-SSLeay-1.82
 p5-Authen-PAM-0.16_2
 python27-2.7.14_1
 perl5-5.24.3
 p5-IO-Tty-1.12_2
#

Обновляем информацию о доступных пакетах:

pkg update

Смотрим список установленных пакетов:

pkg info

Обновляем установленные пакеты:

pkg upgrade

Ищем пакет по названию:

pkg search xorg

Установка пакета/пактетов и всех его/их зависимостей:

pkg install xorg
pkg install git-lite vim-lite sudo

Удаляем пакет:

pkg delete xorg

Удаляем пакеты, которые больше не нужны:

pkg autoremove

Смотрим, к какому пакету относится файл:

pkg which /usr/local/bin/git

Посмотреть полный список файлов в пакете можно так:

pkg info -l mesa-demos

Загружаем базу известных уязвимостей:

pkg audit -F

Проверяем установленные пакеты на предмет наличия известных уязвимостей, с ссылками на подробные отчеты:

pkg audit

Проверяем все установленные пакеты на предмет валидности контрольных сумм входящих в пакеты файлов:

pkg check -s -a

Проверяем все установленные пакеты на предмет отсутствия требуемых зависимостей:

pkg check -d -a

Удаляем из кэша старые пакеты:

pkg clean

Смотрим статистику:

pkg stats

Запрещаем/разрешаем обновление конкретного пакета:

pkg lock syncthing
pkg unlock syncthing

Посмотреть список «залоченых» пакетов:

pkg lock -l

Откатиться к более старой версии пакета:

sudo pkg remove chromium
sudo pkg install /var/cache/pkg/chromium-51.0.2704.106_2.txz

В целом я хочу сказать, что управление пакетами во FreeBSD стало намного лучше, чем оно было раньше. Прям действительно есть нормальный пакетный менеджер, не только не уступающий линуксовым Yum и Apt, но в чем-то даже и превосходящих их. Например, интерфейс у pkg прост, понятен и единообразен, чего уж точно нельзя сказать об Apt. Пакеты весьма свежие. Например, когда я разбирался с pkg, с его помощью можно было установить последний на тот момент Go версии 1.5, а в Ubuntu из коробки был доступен только древнейший Go 1.2. Аналога pkg audit в мире дистрибутивов Linux мне вот так с лету и вовсе неизвестно.

Все подробности, как обычно, в man pkg. А как вам новый пакетный менеджер FreeBSD?

Источник

 

OpenSSL дополнительные настройки

После установки OpenSSL, перед скачиванием пакетов выдается сообщение(предупреждение):

/!\ WARNING /!\

You have security/openssl installed but do not have
DEFAULT_VERSIONS+=ssl=openssl set in your make.conf

Для исправления добавляем нужную запись в make.conf командой:

echo 'DEFAULT_VERSIONS+=ssl=openssl' >> /etc/make.conf

Читать далее «OpenSSL дополнительные настройки»

NTPd настройка синхронизации времени

На Hyper-v моя Freebsd резво убегает вперед, на несколько часов в день, поэтому решено настроить синхронизацию времени с внешними серверами, выбрал Саратовские).

В данной статье научимся с вами настраивать ntp клиент и сервер на примере freebsd (FreeBSD vpn 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64)

1) Выставляем нужный часовой пояс (например, Москва)

portsnap fetch update
cd /usr/ports/misc/zoneinfo && make install clean
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

2) Для включения ntpdate во время загрузки добавим в файл /etc/rc.conf строки

ntpdate_enable=»YES»
ntpdate_flags=»-b 0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org»

3) В /etc/ntp.conf приводим к виду

restrict 127.0.0.1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict default ignore
erver ntp5.stratum2.ru burst
server ntp1.stratum2.ru burst
server 2.europe.pool.ntp.org iburst
server 3.europe.pool.ntp.org iburst
driftfile /var/db/ntp.drift
logfile /var/log/ntp.log

Читать далее «NTPd настройка синхронизации времени»