Использование пользовательских таблиц в nft

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

Но если вам нужно, читайте о быстром и грязном ЦС, который выдаст вам https://localhost/без предупреждающего сообщения...

Создайте следующий текстовый файл:

# OpenSSL configuration for Root CA

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name
x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = Test Root CA

[ x509_ext ]

basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign

Сохранить как root.cnf, затем сгенерировать запрос с:

$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf

Это создаст сертификат корневого ЦС(root.cer)и закрытый ключ корневого ЦС (root.key), которые вы должны хранить в тайне. Он запросит пароль для закрытого ключа -, убедитесь, что вы выбрали надежный.

Теперь создайте файл конфигурации для сертификата сервера:

# OpenSSL configuration for end-entity cert

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name

x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = localhost

[ x509_ext ]

keyUsage=critical,digitalSignature,keyAgreement

subjectAltName = @alt_names

# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com

Сохраните его как server.cnfи сгенерируйте запрос с:

openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf

Вышеприведенное сгенерирует еще один закрытый ключ (server.key), который вы должны защитить. В этом случае ключ не защищен паролем, но вы можете добавить пароль, удалив опцию -nodes.

Наконец, для удобства подпишите запрос своим новым корневым ЦС и расширениями из server.cnfфайла ():

$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext

Примечание. :выберите любое случайное число для опции -set_serial.

Будет запрошен пароль, который вы ввели при создании корневого ЦС.

Будет создан сертификат сервера (server.cer).

Теперь добавьте корневой сертификат ЦС(root.cer)в хранилище привязок доверия -Firefox, чтобы браузер доверял вашему новому ЦС.

Проведите тест, используя OpenSSL в качестве временного -веб-сервера с:

$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www

Примечание :Вы можете получить ошибки, если у вас уже есть сервер, работающий на порту 443. В этом случае либо остановите работающий сервер, либо измените указанный выше номер порта на другой неиспользуемый порт, изменив окончание на (для пример)-accept 8443 -www

При переходе кhttps://localhost(или https://localhost:8443, если вы изменили номер порта выше )с помощью Firefox,теперь вы не должны увидеть никаких предупреждений и вам будет представлен список шифров, которые может предложить ваша установка OpenSSL.

Когда вы будете довольны результатами, добавьте server.keyи server.cerна свой исходный веб-сервер и настройте их соответствующим образом.

3
08.11.2019, 17:42
2 ответа

После некоторых дискуссий на канале #netfilterirc выяснилось, что все работает «как задумано». Одна цепочка не может предоставить более широкий доступ (в виде acceptправил ), чем тот, который предоставляется цепочкой сreject(илиdrop)правило.

Вердикт acceptдействителен только в цепочке, в которой он встречается, и не препятствует продолжению обработки пакетов в цепочках с более высоким приоритетом.

Другими словами, если у вас есть такая цепочка:

table ip filter {
        chain INPUT {
                type filter hook input priority 0; policy accept;
                reject with icmp type host-prohibited
        }
}

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

2
20.08.2021, 10:53

Это всего лишь предположение.

  • В версии nft нет перехода к маскараду.
  • Нужно ли настраивать обратное направление?
-1
20.08.2021, 10:53

Теги

Похожие вопросы