baltun
Администратор
- Сообщения
- 12.284
- Реакции
- 3.082
- Баллы
- 1.833
Блокировка наиболее распространенных атак.
Обычно хостинг-провайдеры предоставляют ненастроенные серверы — весь трафик разрешен. Но на всякий случай можно сбросить все правила фаервола:
Список всех правил.
Затем можно добавить несколько простых правил, которые отражают наиболее распространенные атаки и защищают сервер от скрипт-кидди. Конечно, IPTables вряд ли сможет защитить сервер от серьезной DDOS или подобных атак; но, по крайней мере, этот фаервол устранит сканирующих сеть ботов, которые рано или поздно начнут искать бреши в системе безопасности данного сервера. Для начала нужно заблокировать нулевые пакеты:
Теперь фаервол не будет принимать входящих пакетов с tcp-флагами. Нулевые пакеты, по сути, разведывательные. они используются, чтобы выяснить настройки сервера и определить его слабые места. Следующее правило отражает атаки syn-flood:
Во время атаки syn-flood злоумышленник создает новое соединение, но не устанавливает никаких флагов (SYN, ACK и т.д.). Все, что ему нужно — отнять ресурсы сервера. Такие пакеты принимать не стоит. Далее нужно защитить сервер от разведывательных пакетов XMAS:
Теперь сервер защищен от некоторых общих атак, которые ищут его уязвимости.
Открытие портов выбранных сервисов.
Теперь можно внести выбранные сервисы в фильтр фаервола. Чтобы внести локальный интерфейс:
Данная команда говорит добавить (-А) правило в фильтр входящих соединений (INPUT), разрешающее (-j ACCEPT) любой трафик, поступающий на локальный интерфейс (-i lo). Локальный хост часто используется для размещения базы данных, к которой подключаются веб-сайт и почтовый сервер. Таким образом, VPS имеет доступ к базе данных, но взломать ее через интернет нельзя.
Теперь нужно разрешить трафик веб-сервера:
В цепочку ACCEPT были добавлены два порта (порт http 80 и порт https 443), что разрешит трафик на эти порты. Теперь нужно разрешить пользователям работать с SMTP-сервером:
Как уже было сказано, имея возможность влиять на пользователей, лучше использовать безопасные версии протоколов; к сожалению, это не всегда возможно, и клиенты будут использовать порт 25, который достаточно просто взломать. Теперь нужно разрешить пользователям читать электронную почту:
Эти два правила разрешают трафик POP3. Опять же, усилить защиту почтового сервера можно при помощи безопасной версии сервиса. Также нужно включить доступ по протоколу IMAP:
Ограничение доступа SSH.
Также нужно разрешить трафик SSH, чтобы иметь возможность подключаться к VPS удаленно. Это очень просто сделать при помощи команды:
Данная команда говорит фаерволу добавить правило, принимающее tcp-трафик, входящий на порт 22 (порт SSH по умолчанию). Рекомендуется заменить порт 22 другим портом, и вышеуказанное правило нужно изменить соответственно; настройка SSH не входит в данное руководство. Тем не менее, можно настроить сам фаервол. При наличии постоянного IP-адреса можно включить доступ к SSH только с помощью этого адреса. Для этого нужно узнать IP-адрес. Убедитесь, что это не адрес локальной сети, иначе правило не будет работать. Узнать IP-адрес можно на сайте whatismyip.com. Также можно ввести в терминал:
Это действие покажет текущего пользователя (если он единственный вошедший в систему пользователь) и IP-адрес. Результат выглядит примерно так:
Теперь можно создать правило фаервола, разрешающее на порт SSH только исходящий от указанного IP-адреса трафик:
Замените фразу «IP_АДРЕС» настоящим адресом.
При необходимости можно открыть больше портов сервера, но для этого нужно сменить их номера. Тогда фаервол будет разрешать доступ только нужным сервисам. Сейчас нужно добавить еще одно правило, которое позволит устанавливать исходящие соединения (т.е. использовать ping или запускать обновления программного обеспечения):
Это позволит любым установленным исходящим соединениям получать ответы от VPS на другой стороне этой связи. Создав все эти правила, можно заблокировать все остальное и разрешить все исходящие соединения.
Теперь правила фаервола настроены должным образом.
Сохранение настроек.
Теперь можно просмотреть список установленных правил, чтобы убедиться, что все нужные правила внесены:
Опция -n используется для того, чтобы вывести только IP-адреса, а не доменные имена. К примеру, если в правилах используется IP 12.34.56.78:, фаервол отследит его и узнает, что это IP сайта somesite.com. Но этого делать не нужно, нужны только IP-адреса. Теперь наконец можно сохранить настройки фаервола:
Конфигурационный файл IPTables на CentOS хранится в /etc/sysconfig/iptables. Вышеприведенная команда сохранила созданные правила в данный файл. Чтобы убедиться, что все работает должным образом, перезапустите фаервол:
Сохраненные правила останутся действительными даже после перезагрузки фаервола.
Открытие портов на Centos 7:
Удаление портов:
Смотрим открытые порты:
Вывод команды:
Обычно хостинг-провайдеры предоставляют ненастроенные серверы — весь трафик разрешен. Но на всякий случай можно сбросить все правила фаервола:
Код:
iptables -F
Список всех правил.
Код:
iptables -S
Затем можно добавить несколько простых правил, которые отражают наиболее распространенные атаки и защищают сервер от скрипт-кидди. Конечно, IPTables вряд ли сможет защитить сервер от серьезной DDOS или подобных атак; но, по крайней мере, этот фаервол устранит сканирующих сеть ботов, которые рано или поздно начнут искать бреши в системе безопасности данного сервера. Для начала нужно заблокировать нулевые пакеты:
Код:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
Теперь фаервол не будет принимать входящих пакетов с tcp-флагами. Нулевые пакеты, по сути, разведывательные. они используются, чтобы выяснить настройки сервера и определить его слабые места. Следующее правило отражает атаки syn-flood:
Код:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Во время атаки syn-flood злоумышленник создает новое соединение, но не устанавливает никаких флагов (SYN, ACK и т.д.). Все, что ему нужно — отнять ресурсы сервера. Такие пакеты принимать не стоит. Далее нужно защитить сервер от разведывательных пакетов XMAS:
Код:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Теперь сервер защищен от некоторых общих атак, которые ищут его уязвимости.
Открытие портов выбранных сервисов.
Теперь можно внести выбранные сервисы в фильтр фаервола. Чтобы внести локальный интерфейс:
Код:
iptables -A INPUT -i lo -j ACCEPT
Данная команда говорит добавить (-А) правило в фильтр входящих соединений (INPUT), разрешающее (-j ACCEPT) любой трафик, поступающий на локальный интерфейс (-i lo). Локальный хост часто используется для размещения базы данных, к которой подключаются веб-сайт и почтовый сервер. Таким образом, VPS имеет доступ к базе данных, но взломать ее через интернет нельзя.
Теперь нужно разрешить трафик веб-сервера:
Код:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
В цепочку ACCEPT были добавлены два порта (порт http 80 и порт https 443), что разрешит трафик на эти порты. Теперь нужно разрешить пользователям работать с SMTP-сервером:
Код:
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
Как уже было сказано, имея возможность влиять на пользователей, лучше использовать безопасные версии протоколов; к сожалению, это не всегда возможно, и клиенты будут использовать порт 25, который достаточно просто взломать. Теперь нужно разрешить пользователям читать электронную почту:
Код:
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
Эти два правила разрешают трафик POP3. Опять же, усилить защиту почтового сервера можно при помощи безопасной версии сервиса. Также нужно включить доступ по протоколу IMAP:
Код:
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
Ограничение доступа SSH.
Также нужно разрешить трафик SSH, чтобы иметь возможность подключаться к VPS удаленно. Это очень просто сделать при помощи команды:
Код:
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Данная команда говорит фаерволу добавить правило, принимающее tcp-трафик, входящий на порт 22 (порт SSH по умолчанию). Рекомендуется заменить порт 22 другим портом, и вышеуказанное правило нужно изменить соответственно; настройка SSH не входит в данное руководство. Тем не менее, можно настроить сам фаервол. При наличии постоянного IP-адреса можно включить доступ к SSH только с помощью этого адреса. Для этого нужно узнать IP-адрес. Убедитесь, что это не адрес локальной сети, иначе правило не будет работать. Узнать IP-адрес можно на сайте whatismyip.com. Также можно ввести в терминал:
Код:
w
Это действие покажет текущего пользователя (если он единственный вошедший в систему пользователь) и IP-адрес. Результат выглядит примерно так:
Код:
root@iptables# w
11:42:59 up 60 days, 11:21, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 213.191.xxx.xxx 09:27 0.00s 0.05s 0.00s w
Теперь можно создать правило фаервола, разрешающее на порт SSH только исходящий от указанного IP-адреса трафик:
Код:
iptables -A INPUT -p tcp -s IP_АДРЕС -m tcp --dport 22 -j ACCEPT
Замените фразу «IP_АДРЕС» настоящим адресом.
При необходимости можно открыть больше портов сервера, но для этого нужно сменить их номера. Тогда фаервол будет разрешать доступ только нужным сервисам. Сейчас нужно добавить еще одно правило, которое позволит устанавливать исходящие соединения (т.е. использовать ping или запускать обновления программного обеспечения):
Код:
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Это позволит любым установленным исходящим соединениям получать ответы от VPS на другой стороне этой связи. Создав все эти правила, можно заблокировать все остальное и разрешить все исходящие соединения.
Код:
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
Теперь правила фаервола настроены должным образом.
Сохранение настроек.
Теперь можно просмотреть список установленных правил, чтобы убедиться, что все нужные правила внесены:
Код:
iptables -L -n
Опция -n используется для того, чтобы вывести только IP-адреса, а не доменные имена. К примеру, если в правилах используется IP 12.34.56.78:, фаервол отследит его и узнает, что это IP сайта somesite.com. Но этого делать не нужно, нужны только IP-адреса. Теперь наконец можно сохранить настройки фаервола:
Код:
iptables-save | sudo tee /etc/sysconfig/iptables
service iptables save
Конфигурационный файл IPTables на CentOS хранится в /etc/sysconfig/iptables. Вышеприведенная команда сохранила созданные правила в данный файл. Чтобы убедиться, что все работает должным образом, перезапустите фаервол:
Код:
service iptables restart
Сохраненные правила останутся действительными даже после перезагрузки фаервола.
Конфигурация Iptables для веб-сервера.
Включите и сохраните IPTables
Введите следующие две команды, чтобы включить брандмауэр:
Анти synflood с Iptables
Нужно отредактировать /etc/sysctl.conf, чтобы защититься от некоторых видов атак и добавить или обновить можно добавив эти строки в файл:
Код:
Шаг 1: Flush или удалите все IPTABLES правила
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
Шаг 2: Установите правила по дефолту
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Шаг 3: Разрешить доступ к HTTP для 80 порта и HTTPS для 443 порта
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
Введите следующие две команды, чтобы включить брандмауэр:
Код:
chkconfig iptables on
service iptables save
----------------------------------------
service iptables start
# restart the firewall
service iptables restart
# stop the firewall
service iptables stop
Анти synflood с Iptables
Нужно отредактировать /etc/sysctl.conf, чтобы защититься от некоторых видов атак и добавить или обновить можно добавив эти строки в файл:
Код:
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
Код:
# 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
Открытие портов на Centos 7:
Код:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
Удаление портов:
Код:
firewall-cmd --permanent --remove-port=80/tcp
Смотрим открытые порты:
Код:
firewall-cmd --list-all
Код:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh dhcpv6-client http https
ports: 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Последнее редактирование: