Запрет доступа по протоколу https «для всех кроме»

Задача: на нескольких серверах ограничить доступ к сайту по протоколу http/https для всех, кроме избранных IP.

Решить можно несколькими способами:

  • поправить .htaccess, добавив в него deny from all и allow from IP
  • на уровне файревола

Мне предпочтительней было сделать это на уровне файревола, т.к. таким образом не нужно прописывать запрет на доступ на каждом сайте, а запрещаю на ВСЕХ сайтах размещенных на этом сервере одновременно.

Принцип прописывания правил для всех файреволов одинаков: запрещаем по умолчанию всё, кроме того что нужно. Так как у меня немного зоопарк по серверам, то два различных файревола.

Ubuntu и иже с ним:

ufw default deny outgoing
ufw default deny incoming
ufw allow out 53
ufw allow from 19.82.24.12 to any port 443
ufw allow from 19.82.34.12 to any port 80
service ufw restart

CentOS и иже с ним:

firewall-cmd --zone=public --remove-service=http
firewall-cmd --zone=public --remove-service=https
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="443" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="80" protocol="tcp" accept'
systemctl restart firewalld.service

A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.

Ходишь-ходишь в школу, а потом «бац — вторая смена»… Эмм я к тому что в 2020 поймать ошибку 2012 года, помеченную на CentOS как «закрытую».. Да еще и на PHP..

А дело вот в чем. На одном из проектов использую WebSocket сервер WorkMan, который имеет псевдомногопотоковость. Внутри потоков, активно использую вызовы curl_exec. Вот они то и вызывают ошибку «A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.«, которая выводится при помощи curl_error. Описание ошибки было еще в далеком 2012 году:  https://bugzilla.redhat.com/show_bug.cgi?id=870856

Помечена как «закрытая». А вот и нет.. Хотя на Ubuntu не воспроизводится — только  «CentOS Linux release 7.8.2003»

Как лечим:




Настройка сервера GIT на CentOS 7.8

1)  Установим git:

2) Установим gitweb:

, где в переменную GITWEB_PROJECTROOT прописываем путь, где будут храниться репозитарии

3) Настроим Apache:

4) Возможно понадобиться установить дополнительно модули для Perl:

5) Создание репозитария: