Настройку безопасности сервера Apache можно посмотреть в документации на оф. сайте.
https://httpd.apache.org/docs/2.4/misc/security_ti...
Веб-уязвимости разберем на примере
OWASP Top 10.
1) Инъекции. SQL, NoSQL, OS и LDAP т.е. все что связано с выполнением команд и доступам к базам данных, без надлежащей авторизации, например:
SELECT id_news FROM news WHERE id_news = -1 UNION SELECT 1,username,password,1 FROM admin
Защититься от такого запроса можно созданием "Белого списка"
$sort = isset($_GET['sort'])
$allowed = array("id_news,name"); //перечисляем разрешенные варианты
$key = array_search($sort,$allowed); // ищем среди них переданный параметр
$orderby = $allowed[$key]; //выбираем найденный элемент.
$query = "SELECT * FROM `table` ORDER BY $orderby DESC"; //составляем безопасный запрос
2. Межсайтовый скриптинг (XSS). Например, формирование небезопасной ссылки:
http://example.com/search.php?q=<script>CookieStealer();</script>
Что позволит выполнять выполнить вредоносную функцию.
Защитится можно с помощью функции преобразования например:
<?php
$text = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $text;
?>
Ещё есть ошибки конфигурации прав доступа, ненадежные пароли, неправильная настройка сессии аутентификация, хранение данных в незашифрованном виде и использование компонентов с известными уязвимостями. Есть способы обхода фильтрации вводимых данных. Есть атаки на уровне прикладных протоколов.
Для выявления каждой отдельной уязвимости существуют различные утилиты для проверки.
Начать можно с Nmap и продолжить чтением
OWASP Web Application Security Guide.
Есть специальные ресурсы, сканеры уязвимостей, которые могут проверить большинство уязвимостей, например:
https://metascan.ru
https: //acunetix.com/
https: //detectify.com/
И уже после нахождения уязвимостей можно начать их устранять.