На страницах проекта gotoADM.ru ранее уже рассматривался процесс настройки веб-сервера (LAMP) на базе CentOS. Сейчас я занимаюсь настройкой веб-сервера и виртуальной машины Azure для ownCloud. Используемая ОС, как можно было определить из описания выше – CentOS.Сейчас рассмотрим настройку iptables для безопасной работы сервера и Apache2.
Что такое iptables?
Iptables является приложением, что позволяет системному администратору настраивать таблицы в
брандмауэре ядра Linux (реализовано в виде различных Netfilter модулей) и цепей, и правил. Различные модули и программы ядра в настоящее время используются для различных протоколов; Iptables относится к IPv4, ip6tables на IPv6, arptables к ARP и Ebtables для Ethernet.
Настройка IPTables
В большинстве дистрибутивов Linux, включая RedHat / CentOS Linux уже сразу с IPTables по умолчанию. Вы можете использовать следующую процедуру для проверки того, что Iptables был уже установлен. Откройте терминал и введите следующую команду:
iptables -V |
Пример вывода:
Iptables v1.3.5
Вы можете использовать следующую команду, чтобы просмотреть состояние команды Iptables, для этого выполните:
yum info iptables |
Если команда что выше не появляется, то введите следующую команду, чтобы установить ИПтейблес
sudo yum -y install iptables |
Конфигурация iptables для веб-сервера
Конфигурация Iptables по умолчанию на CentOS не разрешает доступ к HTTP (TCP порт 80) и HTTPS (TCP ПОРТ 443 )которые использует веб-сервер (например Apache).
Шаг 1: Flush или удалите все IPTABLES правила
1 2 3 4 5 6 | iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X |
Шаг 2: Установите правила по дефолту
1 2 3 | iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT |
Шаг 3: Разрешить доступ к HTTP для 80 порта и HTTPS для 443 порта
1 2 3 4 5 6 | iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state –state ESTABLISHED -j ACCEPT iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT |
Включите и сохраните IPTables
Введите следующие две команды, чтобы включить брандмауэр:
1 2 | sudo chkconfig iptables on sudo service iptables save |
Анти synflood с Iptables
Нужно отредактировать /etc/sysctl.conf, чтобы защититься от некоторых видов атак и добавить или обновить можно добавив эти строки в файл:
1 2 3 4 5 | net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.netfilter.ip_conntrack_max = 1048576 |
И введите следующие команды
1 2 | iptables -A PREROUTING -i eth0 -p tcp -m tcp –dport 80 –syn -m recent –set –name CHECK –rsource iptables -A PREROUTING -i eth0 -p tcp -m tcp –dport 80 –syn -m recent –update –seconds 5 –hitcount 15 –rttl –name CHECK –rsource -j DROP |
Настройка iptables для Apache в CentOS завершена.