Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
thanatologyst
6 лет назад

Гайд по hardened web server. Часть 2.

В конфигурации Apache по умолчанию у вас будет много потенциальных путей раскрытия информации, которые могут быть использованы для подготовки к атаке. Это одна из наиболее важных задач, которые администратор обязан понять и защитить. Одна из первых вещей, которую нужно учитывать, это, что вы не хотите раскрывать, какую версию веб-сервера вы используете. Выдача версии означает, что вы помогаете хакеру ускорить процесс разведки. Конфигурация по умолчанию будет раскрывать версию Apache и тип ОС.

  1. Утечка информации.

Идем в $Web_Server/conf
Редактируем httpd.conf
Добавляем строки в httpd.conf

ServerTokens Prod 

ServerSignature Off 

Рестарт Apache.

  1. Отключить список каталогов

Обязательно отключить список каталогов в браузере, чтобы посетитель не видел, какие файлы и папки у вас есть в корне или подкаталах.
Перейдите в каталог $ Web_Server / htdocs
Создайте папку и несколько файлов внутри

mkdir test

touch hi

touch hello

Теперь будут видны лишь эти папки, и их содержимое, накидайте в них мусора, пусть изучают)) Продолжим развивать тему

  $Web_Server/conf   

Редактируем httpd.conf
Ищем строку Directory и меняем Options на None или –Indexes

 <Directory /opt/apache/htdocs> 

Options None Order allow,deny Allow from all </Directory>

 (или)

 <Directory /opt/apache/htdocs> 

Options -Indexes Order allow,deny Allow from all 

</Directory>

Рестарт Apache

  1. Запуск Apache из непривилегированной учетной записи

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

Создайте пользователя и группу под названием apache

#groupadd apache
# useradd -G apache apache

Изменим владельца каталога установки apache для вновь созданного пользователя без привилегий

# chown -R apache: apache / opt / apache

Перейти к $ Web_Server / conf
Измените httpd.config
Поиск Директивы User & Group и изменение на непривилегированную учетную запись apache

User apache  

Group apache

Сохраните httpd.conf
Перезапустите Apache

  1. Защитим права на бинарники и конфигурации.

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

Перейдите в каталог $ Web_Server
Изменить разрешение папки bin и conf

  # chmod -R 750 bin conf  
  1. Защита системных настроек

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

Реализация:

Перейдите в каталог $ Web_Server / conf
Откройте httpd.conf

Options -Indexes 

AllowOverride None

</Directory>

Сохраните httpd.conf
Перезапустить Apache

  1. Trace HTTP
#telnet localhost 80 

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

TRACE / HTTP/1.1 Host: test

HTTP/1.1 200 OK

Server: Apache

Transfer-Encoding: chunked

Content-Type: message/http 20

TRACE / HTTP/1.1

Host: test 0

Connection closed by foreign host.

#

Как видим, о нас рассказали все, название хоста, на чем сервер… Обидно
Как всегда в $Web_Server/conf

TraceEnable off 



#telnet localhost 80

#telnet localhost 80

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

TRACE / HTTP/1.1 Host: test

HTTP/1.1 405 Method Not Allowed

Server: Apache Allow:

Content-Length: 223

Content-Type: text/html; charset=iso-8859-1 

The requested method TRACE is not allowed for the URL 

Connection closed by foreign host.

#

Вроде ничего не изменилось, кроме - HTTP/1.1 405 Method Not Allowed
Все, теперь сервер молчит не хуже партизана, мы ему запретили распространяться о себе.

  1. SSL Key
    Нарушение SSL-ключа сложно, но не невозможно. Это просто вопрос вычислительной мощности и времени. Как примерно 73 дней на брут 512-битного ключа. Таким образом, чем выше длина ключа, тем сложнее становится разрыв SSL. Большинство веб-компаний используют ключ 2048 бит, А чем хуже мы?
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt

openssl req -out localhost.csr -new -newkey rsa:2048 -nodes -keyout localhost.key

Засовываем Personal Cert, Signer Cert and Key file в httpd-ssl.conf

SSLCertificateFile # Personal Certificate

SSLCertificateKeyFile # Key File

SSLCACertificateFile # Signer Cert file

Теперь, в общих чертах сервер молчит, не рапространяется и все шифрует.
Следущая часть будет, устранение вероятности "тонкого взолама" издалека, но и этого конфига хватит чтобы отвадить неопытного хакера. Но мы сделаем сервер неломаемым!

0
1.220 GOLOS
На Golos с November 2017
Комментарии (2)
Сортировать по:
Сначала старые