vpn l2tp centos7посмотреть
настройка pptp
1 отключаем Selinux
# nano /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
# sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux
# sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config
После перезагрузки проверьте статус SELinux командой «sestatus»
sestatus
Переходим к установке PPTP VPN сервера и добавлении его в автозагрузку:
# yum install -y ppp pptp pptpd pptp-setup
# chkconfig pptpd on
или systemctl enable pptpd
2 Настройка конфигов
Файл /etc/pptpd.conf
cp /etc/pptpd.conf /etc/pptpd.conf.bak
cat >/etc/pptpd.conf<
option /etc/ppp/options.pptpd
logwtmp
localip 172.16.90.1
remoteip172.16.90.100-254
EOF
localip - ip адрес из выбранной вами подсети, который будет являться локальным шлюзом для клиентов VPN.
remoteip - пул ip адресов для раздачи клиентам VPN.
Если на вашей машине несколько внешних IP адресов, то вы можете указать конкретный IP, по которому будет доступно подключение к VPN серверу. В конце файла добавьте:
listen внешний_ip
Файл /etc/ppp/options.pptpd
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
cat >/etc/ppp/options.pptpd<
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
#nologfd
logfile /var/log/pptpd.log
debug #Logging
ms-dns 8.8.8.8
ms-dns 8.8.4.4
EOF
добавлен метод mschap2
гугловские DNS, заменить на свои.
ms-dns 8.8.8.8
ms-dns 8.8.4.4
Файл /etc/ppp/chap-secrets
user1 * password1 *
В файле /etc/ppp/chap-secrets указываются аутентификационные данные пользователей для CHAP аутентификации:
client server Pa$$word *
client - логин
server - указывается имя сервера к которому можно подсоединиться (параметр name), можно заменить на *
Pa$$word - пароль клиента
* - Разрешает соединения с любых IP
Устанавливаем права на файл паролей, чтобы только root его мог читать:
chmod 600 /etc/ppp/chap-secrets
Файл /etc/sysctl.conf
cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >/etc/sysctl.conf<
# enable routing
net.ipv4.ip_forward=1
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# disable ipv6 enp3s0
#net.ipv6.conf.enp3s0.disable_ipv6 = 1
EOF
изменение значения «0» на «1» net.ipv4.ip_forward = 1 и отключение ipv6
Перечитываем конфигурацию.
sysctl -p
cat /proc/sys/net/ipv4/ip_forward
ps ax | grep pptpd
ip a | grep ppp0
lsof -i TCP:1723
netstat -an | grep -i listen
systemctl status pptpd
смотрим логи
systemctl status pptpd
cat /var/log/messages |grep pptp
last |grep ppp0
tail /var/log/secure
grep -i pptp /var/log/messages
grep -i pptp /var/log/pptpd.log
кто логинился в систему
Команда Журнал логов Описание
last /var/log/wtmp История успешных входов/выходов
lastb /var/log/btmp История неудавшихся попыток входа
lastlog /var/log/lastlog Список последних подключавшихся пользователей
изменение времени файлов, удаление истории посещения и команд в linux опции /etc/ppp/options.pptpd
Создание PPTP-сервера для реализации защищенного доступа к домашней сети в операционных системах семейства Linux Опция ppp
По умолчанию эта опция закомментирована символом “#”. Ее функция заключается в указании точного местоположения сервиса pppd, который является управляющим для PPTP-сервера. Путь по умолчанию - /usr/sbin/pppd.
Опция option
Этот тэг указывает демону pptpd на путь к файлу с остальными настройками PPTP-соединения, такими как используемое шифрование канала и способ авторизации PPTP-пользователей. По умолчанию эта строка указывает на файл /etc/ppp/options.pptpd, который создается при установке.
Опция debug
Раскомментирование этого тэга служит для отладки PPTP-сервера при неполадках. В логах сервера будет приведена более подробная информация о действиях как сервера, так и клиентов. По умолчанию эта опция отключена. Рекомендуется включать ее только в случае возникновения неполадок, поскольку в системных логах будет много лишней информации.
Опция stimeout х
Данная опция служит для указания точного времени ожидания PPTP-пакетом, прежде чем он попадет в управляющую программу pptpctrl и будет передан клиенту. По умолчанию этот показатель равен 10 с. Параметр X - время в секундах. Таким образом осуществляется защита от DoS-атак.
Опция noipparam
По умолчанию этот тэг отключен. При включении данного параметра IP-адрес клиента не передается скриптам ip-up через демон pppd. То есть pppd не будет знать реальный адрес PPTP-клиента.
Опция bcrelay interface
Данная опция позволяет PPTP-клиентам рассылать бродкасты, которые сервер получает по сетевому интерфейсу с названием interface. По умолчанию этот тэг закомментирован. Примером интерфейса может служить eth0 или ham0.
Опция connections n
По умолчанию максимальное количество соединений с PPTP-сервером может быть не более 100. Эта опция вручную указывает на количество соединений, где “n” - цифровое значение. Отметим, что максимальное количество соединений ограничивается также списком IP-адресов в опции remoteip, но эта функция работает лишь в том случае, если опция delegate неактивна.
Опция delegate
По умолчанию эта опция отключена. Ее включение автоматически отключает опцию remoteip, через которую демон pptpd выдает адреса PPTP-клиентам, таким образом заставляя выдавать виртуальные внутрисетевые адреса с помощью radius сервера или файла chap-secrets.
Опция listen ip
Указывает на определенный IP-адрес, на котором PPTP-сервер будет прослушивать 1723-й порт, где “ip” - указываемый IP-адрес. По умолчанию PPTP-сервер работает на всех локальных интерфейсах операционной системы (eth0, ppp0, ham0 и т.п.).
Опция localip ip-address
Данная опция позволяет явным образом указать диапазон IP-адресов или отдельный IP-адрес, который будет использоваться в качестве адреса PPTP-сервера в виртуальной сети. Если указан один IP-адрес, то он применяется для всех PPTP-клиентов, в противном случае (если указан диапазон адресов) каждому клиенту назначается свой виртуальный адрес сервера, поэтому их количество должно совпадать со значением, описанным в опции remoteip. Задавать несколько IP-адресов сервера необходимо в тех случаях, когда для каждого клиента указывается персональный IP-адрес (например, в файле chap-secrets), благодаря чему можно ограничить доступ каждого клиента в определенный участок локальной сети на основании правил iptables. Параметр ip-address может выглядеть следующим образом: 192.168.0.1, когда указан один адрес для всех клиентов, либо 192.168.0.2-254, когда указывается диапазон адресов.
Опция remoteip ip-address
В этом параметре указывается диапазон IP-адресов, которые будут получать PPTP-клиенты. Функция работает только в том случае, когда опция delegate неактивна, то есть закомментирована. Количество IP-адресов ограничивает и количество максимальных соединений с PPTP-сервером. Параметр ip-address может выглядеть так: 192.168.0.1, когда указан один адрес для одного-единственного клиента (в этом случае к PPTP-серверу может подключиться лишь один клиент), либо 192.168.0.2-254, если указывается диапазон адресов.
Опция speed x
Данный параметр отвечает за максимальную скорость соединения, с которой происходит обмен данными между сервером и клиентом. По умолчанию эта опция (параметр “x”) имеет значение 115 200 байт/с и является также максимально допустимой для pppd. В реальности скорость может быть значительно выше, но только если указано именно это значение.
Опция logwtmp
Раскомментирование этой строки позволит передавать PPTP-серверу лог аутентификации пользователей через стандартную функцию logwtmp, что даст возможность автоматизировать процесс сбора информации по заходам клиентов. Однако в некоторых случаях этот модуль не устанавливается и его (файл pptpd-logwtmp.so) необходимо переписать вручную из дистрибутива pptpd в папку /usr/lib/pptpd/. В противном случае сервер будет генерировать дополнительную лишнюю информацию о том, что модуль не загружен, а в некоторых экспериментальных версиях он просто не будет загружаться.
Все опции описаны на английском языке, прочесть их можно, набрав команду “man pptpd.conf”. Для того чтобы организовать доступ к нескольким компьютерам в локальной сети, необходимо отредактировать конфигурационный файл pptpd.conf следующим образом:
option /etc/ppp/options.pptpd
debug
localip 192.168.193.1
remoteip 192.168.193.234-238
IP-адрес 192.168.193.1 - это адрес сервера, а диапазон адресов от 192.168.193.234 до 238 - это адреса, которые будут выдаваться клиентам PPTP-сервера. Опция debug включена для возможной отладки сервера. Этот конфигурационный файл предполагает раздачу адресов самим демоном pptpd. После редактирования файла pptpd.conf необходимо изменить параметры аутентификации и шифрования в файле /etc/ppp/options.pptpd. Рассмотрим все возможные параметры, которые можно прописать в этом файле.
Параметр name
Данная опция отвечает за название сервиса, которое прописывается в файле аутентификации /etc/ppp/chap-secrets. По умолчанию название соответствует названию сервиса - pptpd.
Параметры refuse-pap, refuse-chap, refuse-mschap
Данные параметры запрещают авторизацию по старым протоколам аутентификации, таким как PAP, CHAP и MS CHAP v1, но, если использование этих протоколов необходимо, строки должны быть закомментированы. Аналогичными являются опции -pap, -chap, -chapms (они применяются в том случае, если pptpd установлен на компьютере с ОС семейства BSD). Для активации аутентификации по этим протоколам вместо знака “-” должен стоять знак “+”.
Параметр require-mschap-v2, +chapms-v2
Данная опция разрешает аутентификацию пользователей по самому защищенному из протоколов - MS CHAP v2. По умолчанию в конфигурационном файле разрешен только этот протокол аутентификации пользователей.
Параметр require-mppe-128, mppe-128, mppe-40, mppe-stateless, “mppe required, stateless”
Названные параметры относятся к шифрованию MPPE, которое может быть использовано лишь совместно с протоколом аутентификации MS CHAP v2. Каждая из опций строго определяет наличие шифрования и не позволяет установить связь PPTP-клиентам, у которых оно отключено. Цифры 40 и 128 отвечают за стойкость шифрования, рекомендуется шифрование со 128-битным ключом. Для того чтобы PPTP-клиенты могли подключаться к серверу без использования шифрования, которое увеличивает трафик, а также нагрузку на процессор как клиента, так и сервера, необходимо закомментировать все эти строки.
Параметр ms-dns ххх.ххх.ххх.ххх
Всего в конфигурационном файле может существовать две записи этой опции. С ее помощью можно указать первичный и вторичный DNS сервера для PPTP-клиентов.
Параметр proxyarp
Включение этого параметра позволяет PPTP-клиентам работать с локальной сетью без добавления правил маскарадинга (NAT) в цепочки брандмауэра iptables. Данная функция действует через средства ARP (Address Resolution Protocol) и его таблицы. Однако таким образом нельзя регулировать доступ в разные подсети клиентов и доступ конкретных клиентов. Чтобы эта функция работала, необходимо, чтобы осуществлялось перенаправление пакетов ядром (чтобы функция ip_forward была равна единице). Если используются цепочки iptables, этот параметр следует закомментировать. По умолчанию данная опция включена.
Параметры debug и dump
Для получения дополнительной информации о ходе соединения клиентов, а также о включенных опциях используются параметры debug и dump соответственно. В стадии построения сервера и его отладки эта функция очень полезна, затем ее можно отключить, поскольку объем log-файлов будет возрастать с каждым новым соединением. По умолчанию обе функции отключены.
Параметр logfile x
Данная опция указывает точное местоположение файла (“x”), в который будет записываться отладочная информация. По умолчанию эта функция отключена, а все записи по соединению заносятся в системный журнал. Для ее работы необходимо также закомментировать параметр “nologfd”, который запрещает ее использование.
Параметр nologfd
Данная опция блокирует запись в системный журнал через системную функцию stderr. По умолчанию она активна. Для получения отладочной информации ее необходимо закомментировать.
Параметры novj и novjccomp
Названные параметры запрещают компрессию, которая используется в ранних клиентах Windows 9x/Mе. По умолчанию опция включена.
Параметр nobsdcomp
Если в качестве операционной системы применяется платформа Linux, а не BSD (OpenBSD, FreeBSD), то необходимо раскомментировать эту функцию.
Параметр nodefaultroute
Данная функция отключает автоматическое изменение таблицы маршрутизации при установлении PPTP-соединения. По умолчанию pppd при установлении соединения PPTP-клиента с сервером меняет IP-адрес используемого по умолчанию шлюза на IP-адрес PPTP-клиента. В этом случае Интернет на компьютере-сервере просто пропадет. Поэтому если используется PPTP-сервер, то данную опцию следует указать.
О других опциях, которые применяются реже, можно прочесть, набрав в командной строке “man pppd”, поскольку options.pptpd относится не только к демону pptpd, но и к основному управляющему пакету pppd, который и устанавливает соединение по VPN-туннелю.
3 настройка фрайвола
firewall-cmd настройка брадмаузера firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --list-ports
firewall-cmd --list-all-zones
firewall-cmd --get-active-zones
firewall-cmd --direct --get-all-rules
firewall-cmd --zone=external --list-services
firewall-cmd --zone=external --list-ports
firewall-cmd --zone=public --list-ports
firewall-cmd --list-rich-rules
firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
firewall-cmd --zone=public --add-port=1723/tcp --permanent
firewall-cmd --zone=public --remove-interface=enp3s0 --permanent
firewall-cmd --zone=external --change-interface=enp3s0 --permanent
firewall-cmd --zone=external --add-port=1723/tcp --permanent
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --add-masquerade
firewall-cmd --query-masquerade
firewall-cmd --reload
systemctl restart firewalld
для удаления правила --add- меняется на --remove-
в случаях проблем с firewalld Перечитать правила и сбросить текущие подключения
firewall-cmd --complete-reload
firewall-cmd --permanent --new-ipset=IP-users --type=hash:net
firewall-cmd --ipset=IP-servers --add-entry=192.168.0.0/24 --permanent
firewall-cmd --ipset=IP-servers --add-entry=192.168.200.12 --permanent
firewall-cmd --ipset=IP-servers --add-entry=192.168.200.200 --permanent
firewall-cmd --ipset=IP-servers --remove-entry=192.168.20.0/24 --permanent
firewall-cmd --ipset=IP-servers --get-entries
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="IP-servers" service name="ssh" accept'
firewall-cmd --remove-rich-rule='rule source ipset=IP-users service name="http" drop' --permanent
firewall-cmd --permanent --zone=public --list-rich-rules
чтобы все пользователи (список ipset IP-users) ходили через squid несмотря на net.ipv4.ip_forward=1
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp1s0 -m set --match-set IP-servers src -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp3s0 -m set --match-set IP-servers src -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp1s0 -j DROP
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp3s0 -j DROP
firewall-cmd --reload
systemctl restart firewalld
iptables -S
cat /etc/firewalld/direct.xml
ls /usr/lib/firewalld/services/
cat /usr/lib/firewalld/services/ipsec.xml
/etc/firewalld/services/l2tp.xml
L2TP
Layer 2 Tunneling Protocol (L2TP)
/etc/firewalld/services/pptp.xml
PPTP
Point-to-Point Tunneling Protocol (PPTP)
chmod 640 /etc/firewalld/services/*.xml restorecon /etc/firewalld/services/*.xml
Контексты SELinux - Маркирование файлов firewall-cmd варианты
firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o enp3s0 -j MASQUERADE
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp3s0 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
узнать
firewall-cmd --direct --get-all-rules
удалить
firewall-cmd --direct --permanent --remove-rule .....
firewall-cmd ошибки
# firewall-cmd --reload
Error: list index out of range
nano /etc/firewalld/direct.xml
исправить ошибочную запись
fail2ban
https://github.com/fail2ban/fail2ban/tree/master/config/action.d ----------------------------------------------------------------------------------------------------------------------------
Файл(ы)
Описание/etc/fail2ban/fail2ban.conf
/etc/fail2ban/fail2ban.localГлобальные настройки службы и настройки "по умолчанию"/etc/fail2ban/filter.d/*.conf
/etc/fail2ban/filter.d/*.localФильтры, определяющие действия для обнаружения неудачных попыток аутентификации. В общем случае, это правила анализа системных журналов.
/etc/fail2ban/action.d/*.conf
/etc/fail2ban/action.d/*.local
/etc/fail2ban/action.d/*.py
Действия, определяющие порядок блокировки/разблокировки.
В том числе, действия могут быть заданы как сценарии на языке Python (*.py).
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.d/*.local
Определения комбинаций фильтров и действий.Фильтры и действия идентифицируются по именам файлов без расширений .conf/.local.
----------------------------------------------------------------------------------------------------------------------------
Сервис Fail2ban хранит настройки в каталоге /etc/fail2ban.
файл jail.conf, содержит стандартные настройки он перезаписывается при обновлении пакета Fail2ban, потому его редактировать нельзя
Файл jail.conf содержит раздел [DEFAULT], после которого следует раздел для индивидуальных сервисов. Файл jail.local может переопределить любое из этих значений. Файлы применяются в алфавитном порядке:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf,
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local,
sudo yum install epel-release
yum -y install ipset systemd-python
yum --disablerepo=* --enablerepo=epel -y install fail2ban fail2ban-systemd
(можно проще без отключения реп)
yum -y install fail2ban fail2ban-systemd
вместе с ним установятся также и зависимые утилиты,
# такие как: fail2ban-firewalld, fail2ban-sendmail, fail2ban-server
yum update -y selinux-policy*
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Чтобы получить более подробный вывод, введите:
sudo fail2ban-client status sshd
nano /etc/fail2ban/jail.local
[DEFAULT]
# Вы указываете свой имейл, куда будут отправляться notifications
# destemail = admin1@example.net
# Опять же, у вас здесь ваш имейл, который будет указан в качестве отправителя
# sender = server1@example.net
ignoreip = 127.0.0.1/8 172.16.200.12
# ignorecommand = /path/to/command
#ignorecommand =
## если в течении 1 часа:
findtime = 3600
## произведено 6 неудачных попыток логина:
maxretry = 6
## то банить IP на 24 часа:
bantime = 86400
nano /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
action = firewallcmd-ipset
logpath = %(sshd_log)s
bantime = 3600
# bantime = 86400
port = 22
#port = 1234
#maxretry = 7 # если нужно отличное от общего
nano /etc/fail2ban/filter.d/pptp.conf
[Definition]
failregex = CTRL: Client control connection finished
ignoreregex =
nano /etc/fail2ban/jail.d/pptpd.local
[pptp]
enabled = true
port = 1723
protocol = tcp
filter = pptp
logpath = /var/log/messages
action = firewallcmd-ipset
bantime=3600
findtime=600
maxretry = 5
Конфигурация одним файлом
nano /etc/fail2ban/jail.local
[DEFAULT]
# Вы указываете свой имейл, куда будут отправляться notifications
# destemail = admin1@example.net
# Опять же, у вас здесь ваш имейл, который будет указан в качестве отправителя
# sender = server1@example.net
ignoreip = 127.0.0.1/8 172.16.200.12
# ignorecommand = /path/to/command
#ignorecommand =
## если в течении 1 часа:
findtime = 3600
## произведено 6 неудачных попыток логина:
maxretry = 6
## то банить IP на 24 часа:
bantime = 86400
#bantime = 1d
#bantime = 24h
[sshd]
enabled = true
action = firewallcmd-ipset
logpath = %(sshd_log)s
## если нужны другие значения
# findtime = 3600
# maxretry = 5
# bantime = 3600
port = 22
#port = 1234
[pptp]
enabled = true
port = 1723
protocol = tcp
filter = pptp
logpath = /var/log/messages
action = firewallcmd-ipset
## если нужны другие значения
# findtime = 3600
# maxretry = 5
# bantime = 3600
systemctl restart pptpd
systemctl restart firewalld
systemctl restart fail2ban
enable = true - проверка ssh активна.
action Ссылается на соответствующий файл действия в /etc/fail2ban/action.d/ используется для получения IP-адреса, который необходимо заблокировать, используя фильтр, доступный в /etc/fail2ban/action.d/firewallcmd-ipset.conf.
ignoreip - используется для установки списка IP-адресов, которые не будут забанены. Список IP-адресов следует указывать через пробел.
bantime - время блокировки, в секундах.
maxretry - количество попыток перед перед блокировкой.
findtime - время, на протяжении которого рассчитывается количество попыток перед баном (maxretry).
logpath = /var/log/messages путь к файлу лога. Но если у вас не включен режим debug в настройках конфигурации pptp, то нужно это сделать, просто раскомментировать строчку с debug в файле /etc/ppp/options.
filter - Ссылается на соответствующий файл фильтра в /etc/fail2ban/filter.d/
usedns : определяет, используется ли обратный DNS для реализации запретов. Установка этого значения в «no» приведет к запрету самих IP-адресов вместо имен хостов. Параметр «warn» будет пытаться использовать обратный DNS для поиска имени хоста и забанить таким образом, но будет регистрировать активность для просмотра.
destemail : это адрес, на который будет отправлено уведомление по электронной почте, если вы настроили свое действие на почтовые оповещения.
sendername : это будет использоваться в поле email from для сгенерированных уведомлений
смотрим пишется ли что-то в логи fail2ban
tail /var/log/fail2ban.log
fail2ban-client -vv -d 2>&1 | grep sshd | grep -Ev "'addfailregex'|'addignoreip'|'action'"
https://www.fail2ban.org/wiki/index.php/MANUAL_0_8
Отслеживание записей неудачного входа
cat /var/log/secure | grep 'Failed password'
tail /var/log/secure
iptables -vnL
fail2ban-client status
fail2ban-client status sshd
fail2ban-client status pptp
Разблокировка IP-адреса
Чтобы удалить IP-адрес из списка запрещенных, для параметра IPADDRESS задан соответствующий IP-адрес, который необходимо разблокировать.
fail2ban-client set sshd unbanip IPADDRESS
fail2ban-client set pptp unbanip IPADDRESS
или
firewall-cmd --direct --permanent --remove-rule ipv4 filter f2b-sshd 0 -s 188.134.7.221
Если вы часто подключаетесь к своему серверу по pptp, и возможно забудете пароль или еще что-то, и не хотите быть забанеными, внесите свой ip адрес (или несколько, или подсеть) в файл /etc/fail2ban/jail.local строчкой через пробел
ignoreip = 127.0.0.1/8 192.168.6.0/24 123.123.123.123
sudo firewall-cmd --direct --get-all-rules
sudo ipset list fail2ban-sshd
sudo /etc/ppp/options.pptpd
раскомментируем debug (снять #)
снятие блокировки
Linux удаляет IP из fail2ban f2b
firewall-cmd --direct --get-all-rules
ipv4 filter f2b-pptp 0 -s 192.168.107.99 -j REJECT --reject-with icmp-port-unreachable
cat /etc/firewalld/direct.xml
проверьте, не заблокирован ли ваш IP:
iptables -L -n
Если ваш IP был заблокирован, найдите номер строки вашего IP-адреса в списке запрещенных
iptables -L f2b-pptp -v -n --line-numbers
1 278 16680 REJECT all -- * * 192.168.107.99 0.0.0.0/0 reject-with icmp-port-unreachable
2 390K 19M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Теперь вы можете использовать `iptables -D chain rulenum`, чтобы удалить запись с вашим IP-адресом.
iptables -D f2b-pptp 1
Это удалит строку 1:
iptables -L f2b-pptp -v -n --line-numbers
1 390K 19M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Если вам нужно удалить другой IP-адрес из списка запрещенных IP-адресов ssh / sshd, вам нужно снова запустить `iptables -L f2b-sshd -v -n --line-numbers`, так как номера строк меняются каждый раз, когда вы удаляете одну запись
у fail2ban нет способа отличить неудачный вход в систему от разрыва соединения PPTP-регулятора из-за причудливого формата журналирования pptpd. Таким образом, регулярные входы в систему будут считаться неудачными, и IP-адрес в конечном итоге будет заблокирован. (Вам нужно будет снять запрет вручную, используя SSH, или просто хитро спроектировать значения bantime / findtime / maxretry, чтобы разрешить регулярное использование, одновременно предотвращая перебор)
Если необходимо отправлять почту, то надо установить и настроить пакет ssmtp
разное
https://unixhow.com/3707/kak-ustanovit-pptp-vpn-klient-na-centos-rhel
https://www.prado.lt/how-to-set-up-pptp-client-on-debian-9
https://wiki.ubuntu.com/VPN
modprobe ppp-generic
lsmod | grep pptp
grep -i pptp /var/log/*
grep -i pptp /var/log/messages
grep -i pptp /var/log/syslog
https://linuxconfig.org/how-to-establish-pptp-vpn-client-connection-on-centos-rhel-7-linux
pppd[32087]: LCP: timeout sending Config-Requests
modprobe nf_conntrack_pptp
modprobe nf_conntrack_proto_gre
http://pptpclient.sourceforge.net/howto-debian.phtml
http://pptpclient.sourceforge.net/howto-diagnosis.phtml#lots_of_data
https://www.adminsehow.com/2010/04/connect-to-pptp-vpn-from-linux-only-by-one-command/
https://askubuntu.com/questions/590114/pptp-client-doesnt-connect-by-command-line
pppd pty "pptp IP_OR_FQDN_VPN_SERVER --nolaunchpppd" file /etc/ppp/options.pptp user USERNAME password PASSWORD
замените IP_OR_FQDN_VPN_SERVER на IP или DNS вашего VPS-сервера.
замените USERNAME своим именем пользователя VPN.
замените ПАРОЛЬ своим паролем VPN.
подождите примерно 10-15 секунд, затем запустите команду ifconfig, вы увидите там интерфейс ppp0, если его нет, вы можете устранить неполадки, заглянув в системный журнал вашего linux
Если у вас есть какие-либо пользовательские настройки, вам может понадобиться отредактировать файл /etc/ppp/options.pptp.
чтобы отключить форму VPN, используйте следующую команду:
killall pppd
проверить порты
netstat -ntulp
netstat -ntlp | grep LISTEN
ss -ltupn
lsof -nP -i | grep LISTEN
nmap localhost
получить ip адрес
curl ipinfo.io/ip
wget -O - -q icanhazip.com
nmap адрес
ошибки
http://blog.inelsis.ru/?p=165
VPN не подключается.
LOG
pptpd[16913]: GRE: read(fd=8,buffer=6097c0,len=8260) from network failed: status = -1 error = Protocol not available
pptpd[16913]: CTRL: GRE read or PTY write failed (gre,pty)=(8,6)
pppd[16914]: Modem hangup
Решение.
настроить options.pptpd
Добавить.
mtu 900
mru 900
Провайдер чтото сделал.
настройка OpenVPN
OpenVPN-Server на Centos 7
Устанавливаем репозиторий EPEL (если нет)
# yum install epel-release
Устанавливаем NET-Tools (если нет)
# yum install net-tools
Установка OpenVPN-Server и Easy-RSA
# yum install openvpn easy-rsa
Создаем директорию для генерации сертификатов и копируем туда Easy-RSA
# mkdir /etc/openvpn/easy-rsa
# cp -rf /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa
Переходим в директорию и создаем файл vars
# cd /etc/openvpn/easy-rsa
# vi vars
Записываем в файл vars
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "Moscow"
set_var EASYRSA_REQ_CITY "Moscow"
set_var EASYRSA_REQ_ORG "My Organisation"
set_var EASYRSA_REQ_EMAIL "admin@itdraft.ru"
set_var EASYRSA_REQ_OU "IT department"
set_var EASYRSA_KEY_SIZE 4096
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7500
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST "sha512"
Делаем файл исполняемым
# chmod +x vars
Создание ключа и сертификата для OpenVPN Сервера
Инициализация каталог PKI
# ./easyrsa init-pki
Note: using Easy-RSA configuration from: ./vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
Создать ключ CA
# ./easyrsa build-ca
будет запрошен пароль, его будет запрашивать в дальнейшем при создании сертификатов
Создадим ключ сервера (название сервера srv-openvpn)
# ./easyrsa gen-req srv-openvpn nopass
опция nopass - отключение пароля для srv-openvpn
Подпишем ключ srv-openvpn используя наш CA-сертификат
# ./easyrsa sign-req server srv-openvpn
на вопрос: Confirm request details: - ответить: yes
в процессе у нас спросят пароль, который мы задавали CA
Проверим файлы сертификата, что бы убедится, что сертификаты сгенерировались без ошибок
# openssl verify -CAfile pki/ca.crt pki/issued/srv-openvpn.crt
pki/issued/srv-openvpn.crt: OK
Создание ключа клиента
# cd /etc/openvpn/easy-rsa
Сгенерируем ключ клиента client-01
# ./easyrsa gen-req client-01 nopass
Подпишем ключ client-01, используя наш CA сертификат
# ./easyrsa sign-req client client-01
на вопрос: Confirm request details: - ответить: yes
в процессе у нас спросят пароль, который мы задавали CA
Проверим файлы сертификата
# openssl verify -CAfile pki/ca.crt pki/issued/client-01.crt
pki/issued/client-01.crt: OK
Дополнительная настройка OpenVPN сервера
Сгенерируем ключ Диффи-Хеллмана
# ./easyrsa gen-dh
Сгенерируем CRL ключ необходимый для отзыва клиентских сертификатов
# ./easyrsa gen-crl
Для того, что бы отозвать сертификат надо выполнить команду (НА БУДУЩЕЕ)
# ./easyrsa revoke client-02
после каждого отозванного сертификата необходимо обновлять CRL ключ
Копируем сертификаты сервера
# cp pki/ca.crt /etc/openvpn/server/
# cp pki/issued/srv-openvpn.crt /etc/openvpn/server/
# cp pki/private/srv-openvpn.key /etc/openvpn/server/
# cp pki/dh.pem /etc/openvpn/server/
# cp pki/crl.pem /etc/openvpn/server/
Копируем сертификаты клиента
# cp pki/ca.crt /etc/openvpn/client/
# cp pki/issued/client-01.crt /etc/openvpn/client/
# cp pki/private/client-01.key /etc/openvpn/client/
Настройка OpenVPN сервера
Создадим файл конфигурации server.conf
# cd /etc/openvpn
# vi server.conf
Записываем в файл server.conf
# OpenVPN Port, Protocol and the Tun
port 1194
#proto udp
proto tcp
dev tun
# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/srv-openvpn.crt
key /etc/openvpn/server/srv-openvpn.key
# DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem
# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.0.10.0 255.255.255.0
push "redirect-gateway def1"
#push "route 82.146.59.16 255.255.255.255"
# Using the DNS from https://dns.watch
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# Enable multiple client to connect with same Certificate key
duplicate-cn
# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
# Other Configuration
keepalive 20 60
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody
# OpenVPN Log
log-append /var/log/openvpn/openvpn-server.log
verb 3
Настройка Firewalld
Отредактировать файл /etc/sysctl.conf:
Добавить:
net.ipv4.ip_forward = 1
Выполняем команду
# sysctl -p
cat /proc/sys/net/ipv4/ip_forward
Настройка
# firewall-cmd --permanent --add-masquerade
# firewall-cmd --zone=public --add-port=1194/tcp --permanent
# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -i 10.0.10.0/24 -o eth0 -j MASQUERADE
# firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i 10.0.10.0/24 -o eth0 -j ACCEPT
# firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i eth0 -o 10.0.10.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT
# firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -p tcp --tcp-flags SYN,RST SYN -s 10.0.10.0/24 -j TCPMSS --clamp-mss-to-pmtu
# firewall-cmd --reload
eth0 - интерфейс, но он может быть другим enp1s0 наример
можно сделать так:
узнать интерфейс и вставить переменную
SHARK=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -i 10.0.10.0/24 -o $SHARK -j MASQUERADE
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i 10.0.10.0/24 -o $SHARK -j ACCEPT
узнать
firewall-cmd --direct --get-all-rules
удалить
firewall-cmd --direct --permanent --remove-rule .....
Запустим OpenVPN и добавим его в автозагрузку
# systemctl start openvpn@server
# systemctl enable openvpn@server
Проверим
# systemctl status openvpn@server
Настройка OpenVPN клиента
Создадим файл конфигурации client-01.ovpn
# cd /etc/openvpn/client
# vi client-01.ovpn
Записываем в файл client-01.ovpn
client
dev tun
proto tcp
remote xx.xx.xx.xx 1194
ca ca.crt
cert client-01.crt
key client-01.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
resolv-retry infinite
#compress lzo
comp-lzo yes
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
в строке ‘remote xx.xx.xx.xx 1194‘ надо прописать IP-адрес вместо ‘xx.xx.xx.xx‘
Теперь для надо заархивировать сертификаты (ca.crt, client-01.crt), ключ клиента (client-01.key), файл конфигурации (client-01.ovpn), и передать их на ПК, который будет подключаться к OpenVPN серверу
OpenVPN объединяем ключи и конфигурацию клиента в один файл
https://interface31.livejournal.com/87234.html
https://dimetrius.net/linux/ethernet-and-vpn/ob-edinenie-konfiga-i-klyuchej-openvpn-v-odin-fajl.html
откроем файл конфигурации клиента и закомментируем в нем строки содержащие пути к ключам и сертификатам (пути даны сугубо условно):
#ca C:\\Users\\Andrey\\OpenVPN\\keys\\ca.crt
#cert C:\\Users\\Andrey\\OpenVPN\\keys\\ivanov.crt
#key C:\\Users\\Andrey\\OpenVPN\\keys\\ivanov.key
Если вы используете TLS-аутентификацию, то дополнительно закомментируйте:
#tls-auth C:\\Users\\Andrey\\OpenVPN\\keys\\ta.key 1
Теперь перейдем в самый конец файла и создадим там несколько секций в которые скопируем содержимое ключей и сертификатов:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
В секцию ca мы копируем содержимое корневого сертификата ca.crt, в секцию key - содержимое ключа клиента, а в секцию cert - открытый ключ из его сертификата, обратите внимание, что копируется содержимое начиная от строки BEGIN и заканчивая строкой END включительно, как есть, без каких либо изменений. Открыть сертификаты и ключи можно обычным Блокнотом, либо любым иным текстовым редактором.
Вместо строк
ca ca.crt
cert user1.crt
key user1.key
вставляем следующую конструкцию...
# содержимое сертификата ca.crt
# содержимое user1.crt
# содержимое user1.key
Если вы используете TLS-аутентификацию, то добавьте секцию tls-auth и скопируйте в нее содержимое ключа ta.key:
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
И добавьте в файл опцию:
key-direction 1
Теперь файл конфигурации можно сохранить и передать на клиентское устройство. А дальше все достаточно просто и практически не требует вмешательства администратора, многие пользователи вполне способны сделать все самостоятельно. Щелкаем правой кнопкой на значок графической оболочки OpenVPN в системном лотке, выбираем Импорт конфигурации и указываем на полученный файл.
подключить клиента из консоли:
openvpn --config /etc/openvpn/client/client2.ovpn &> /dev/hull
с поддержкой dns
https://github.com/jonathanio/update-systemd-resolved
настройка клиента openvpn
openvpn --config /etc/openvpn/client/имя_сети.ovpn --config /etc/openvpn/scripts/update-systemd-resolved.conf &> /dev/hull
Для подключения с андройда использовать:
https://openvpn.net/vpn-server-resources/connecting-to-access-server-with-android/
официальный клиент OpenVPN Connect - Fast & Safe SSL VPN Client
продвинутый клиент OpenVPN for Android
https://openvpn.net/download-open-vpn/
https://openvpn.net/community-downloads/
https://build.openvpn.net/downloads/releases/
запуск клиента
openvpn --config client.ovpn
ip a show tun0
Описание команд и параметров OpenVPN
ошибки
Определение правильного MTU
ping -M do -s 1500 -c 1 www.example.com
Уменьшайте значение 1500 на 10 каждый раз, пока пинг не будет успешным. Как только пинг завершится успешно, используемым значением будет MTU, которое вы должны использовать.
OpenVPN требует установки значения MSS. MSS - это значение для MTU минус 40).
Например. Если ваш MTU 1460, ваш MSS 1420
mssfix 1420
DNS
https://github.com/jonathanio/update-systemd-resolved
ссылки
https://www.altlinux.org/L2TP_VPN_Client_Server
Настраиваем VPN PPTP соединение из командной строки
http://hww.ru/wp/2019/04/ustanovka-i-nastrojka-vpn-servera-na-centos-7/
Настройка VPN-сервер PPTPD (черновик)
Как настроить VPN с помощью PPTP
https://reversed.top/2014-07-07/pptp-add-route-automatically/
https://www.dmosk.ru/miniinstruktions.php?mini=router-centos
https://www.dmosk.ru/miniinstruktions.php?mini=firewalld-centos
https://losst.ru/nastrojka-firewall-centos-7
Использование ipset во встроенном брандмауэре CentOS 7
https://itproffi.ru/firewalld-ustanovka-i-nastrojka-zony-nat-probros-portov/
http://fliplinux.com/redhat-centos-7-firewalld-pptp.html
Использование ipset во встроенном брандмауэре CentOS 7
https://onedayadmin.sytes .net/fail2ban-zashita-servera-ot-brutforsa/
Описание некоторых sysctl переменных ядра Linux (sysctl proc linux kernel tune)
Тюнинг сети и безопасности TCP/IP с помощью sysctl.conf
https://linux-audit.com/blocking-ip-addresses-in-linux-with-iptables/
https://wiki.archlinux.org/index.php/Fail2ban_(Русский)
Защищаем сервер на CentOS 7 с помощью firewalld и fail2ban
Установка и настройка Fail2Ban в Centos 7
ЗАЩИТА SSH ПРИ ПОМОЩИ FAIL2BAN В CENTOS 7
Настройка и использование Fail2ban на Linux
https://www.digitalocean.com/community/tutorials/how-fail2ban-works-to-protect-services-on-a-linux-server
Установка и настройка fail2ban
КАК FAIL2BAN ЗАЩИЩАЕТ СЕРВИСЫ LINUX