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

Установка

# yum install denyhosts

данная фичка уже лежит в rpmforge, так что секаса с компилингом можно не бояться

Настрой-ка

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

Открываем файлик /etc/hosts.allow и почётно прописываем свой IP:

sshd: xxx.xxx.xxx.xxx

После этого, идем в /etc/denyhosts/denyhosts.cfg и подгоняем конфиг примерно так:

############ THESE SETTINGS ARE REQUIRED ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = 7d
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts
############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = admin@host.com
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
#########   THESE SETTINGS ARE SPECIFIC TO     ##########
#########       DAEMON SYNCHRONIZATION         ##########

Тут стоит обратить внимание на ADMIN_EMAIL, так как туда бубут уходить отчеты о массовых отстрелах )

Запуск

После того как вы всё настроили, остается только добавить его в автозагрузку и запустить:

# chkconfig denyhosts on
# service denyhosts start

На закуску

Если же случилось непоправимое, то останавливаем сервис и правим файлик hosts.deny

После этого идем в /usr/share/denyhosts/data/ и подчищаем свой IP в этих файлах:

1. hosts
2. hosts-restricted
3. hosts-root
4. hosts-valid
5. users-hosts

После этого добавляем себя в белый лист:

# echo ‘xxx.xxx.xxx.xxx’ >> allowed-hosts

И запускаем сервис.

Создание сертификатов для SSL

Создание ключа

Первым делом необходимо создать приватный ключ (private key):

# openssl genrsa -des3 -out domain.ru.key 2048
Generating RSA private key, 2048 bit long modulus
……………………………………..+++
……………………………….+++
e is 65537 (0x10001)
Enter pass phrase for domain.ru.key:
Verifying — Enter pass phrase for domain.ru.key:

При создании ключа необходимо указать ключевую фразу (и запомнить ее).

Создание подписанного сертификата

После того, как сгенерирован ключ, можно создавать самоподписанный сертификат (CSR — Certificate Signing Reques):

# openssl req -new -key domain.ru.key -out domain.ru.csr
Enter pass phrase for domain.ru.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Domain.Ru
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:domain-2.ru
Email Address []:ssl@domain-2.ru

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Удаление пароля из ключа

Неприятной особенностью ключа с паролем является то, что Apache или nginx будет регулярно спрашивать пароль при старте. Очевидно, что это не очень удобно (если только кто-то не находится постоянно рядом на случай перезагрузки или аварийной остановки). Для удаления ключа из пароля необходимо выполнить следующее:

# cp domain.ru.key domain.ru.key.orig

# openssl rsa -in domain.ru.key.orig -out domain.ru.key
Enter pass phrase for domain.ru.key.orig: <пароль-который-указывался-при-создании-domain.ru.key>
writing RSA key

Генерация SSL сертификата

Далее, создаем сам SSL сертификат:

# openssl x509 -req -days 365 -in domain.ru.csr -signkey domain.ru.key -out domain.ru.crt
Signature ok
subject=/C=RU/ST=Russia/O=Domain.Ru/CN=domain-2.ru/emailAddress=ssl@domain-2.ru
Getting Private key

Теперь есть все, что необходимо для создания SSL-соединений.

Правильное расположение SSL сертификатов

Заключительным шагом в создании SSL сертификата будет распределение полученных файлов в соответствующие директории. Во-первых, копируем сам сертификат:

# cp domain.ru.crt /etc/pki/tls/certs/

Во-вторых, копируем ключ:

# cp domain.ru.key /etc/pki/tls/private/

И в-третьих, удаляем, все то, что было создано в текущей директории:

# rm domain.ru.crt domain.ru.key domain.ru.csr domain.ru.key.orig

Добавляем сертификаты в Apache

Редактируем файл /etc/httpd/conf.d/ssl.conf и меняем..

SSLCACertificateFile /etc/pki/tls/certs/domain.ru.crt
SSLCACertificateKeyFile /etc/pki/tls/domain.ru.key

Сохраняем файл и перезапускаем апач.

# service httpd restart