Запретить icmp трафик к своему vpn серверу. Огненная дуга

Итак, продолжаем разбираться с ACL. На сей раз, у нас расширенные ACL. Топологию возьмём от предыдущей статьи, надеюсь, вы её изучили досконально. Если это не так, то очень рекомендую прочесть, чтобы материалы этой статьи были более понятными.

Прежде всего начну с того, что такое расширенные ACL. Расширенные ACL позволяют помимо адреса источника указать протокол, адрес назначения и порты. А так же особые параметры определённого протокола. Лучше всего учиться на примерах, поэтому сформируем новую задачу, усложнив предыдущую. Кстати, кому-то может интересно будет после этого заняться вопросами распределения трафика по приоритетам, советую вот QoS Classification and Marking хорошую статью, правда на английском. Ну а пока, вернемся к нашей задаче:

Задача.

  1. Разрешить echo-запросы с узлов сети 192.168.0.0/24 на сервер.
  2. С сервера – запретить echo-запросы во внутреннюю сеть.
  3. Разрешить WEB-доступ на сервер с узла 192.168.0.11.
  4. Разрешить FTP доступ с узла 192.168.0.13 на сервер.

Комплексная задача. Решать её будем тоже комплексно. Прежде всего разберу синтаксис применения расширенного ACL.

Параметры расширенного ACL

<номер от 100 до 199> <действие permit, deny> <протокол> <источник> <порт> <назначение> <порт> <опции>

Номера портов указываются только у протоколов TCP / UDP, разумеется. Так же могу иметь место приставочки eq (номер порта равный указанному), gt / lt (номер порта больше/меньше указанного), neq (номер порта не равен указанному), range (диапазон портов).

Именованные ACL

Кстати, списки доступа можно не только нумеровать, но и именовать! Возможно этот способ покажется вам более удобным. В этот раз сделаем именно так. Эти команды выполняются в контексте глобального конфигурирования и синтаксис выглядит так:

Router(config)#ip access-list extended <имя>

Итак, начинаем формировать правила.

  1. Разрешаем пинги с сети 192.168.0.0/24 на сервер. Итак, echo -запросы – это протокол ICMP , в качестве адреса источника выберем нашу подсеть, адресом назначения – адрес сервера, тип сообщения – на входящем интерфейсе echo , на выходе – echo-reply . Router(config)#ip access-list extended INT_IN Router(config-ext-nacl)#permit icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echoОпаньки, а что это у нас с маской подсети? Да, это фишка ACL . Так называемая WildCard -маска. Вычисляется как обратная маска от привычной. Т.е. 255.255.255.255 – маска подсети. В нашем случае подсеть 255.255.255.0 , после вычитания остаётся как раз 0.0.0.255 .Думаю, это правило в пояснении не нуждается? Протокол icmp , адрес источника – подсеть 192.168.0.0/24 , адрес назначения – host 10.0.0.100 , тип сообщения – echo (запрос). Кстати, нетрудно заметить, что host 10.0.0.100 эквивалентно 10.0.0.100 0.0.0.0 .Применяем это правило на интерфейс. Router(config)#int fa0/0
    Router(config-if)#ip access-group INT_IN in Ну как-то так. Теперь, если проверить пинги – легко заметить, что всё отлично работает. Тут, правда нас ждёт один сюрприз, который всплывёт чуть позже. Пока не буду раскрывать. Кто догадался – молодец!
  2. С сервера – запрещаем все echo-запросы во внутреннюю сеть (192.168.0.0/24). Определяем новый именованный список, INT_OUT и вешаем его на интерфейс, ближайший к серверу.
    Router(config)#ip access-list extended INT_OUT
    Router(config-ext-nacl)#deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo
    Router(config-ext-nacl)#exit
    Router(config)#int fa0/1
    Router(config-if)#ip access-group INT_OUT in
    Поясняю, что мы сделали. Создали расширенный список доступа с именем INT_OUT, в нём запретили протокол icmp с типом echo с хоста 10.0.0.100 на подсеть 192.168.0.0/24 и применили на вход интерфейса fa0/1 , т.е. ближайший к серверу. Пробуем послать ping с сервера.
    SERVER>ping 192.168.0.11
    Pinging 192.168.0.11 with 32 bytes of data:

    Reply from 10.0.0.1: Destination host unreachable.
    Reply from 10.0.0.1: Destination host unreachable.
    Reply from 10.0.0.1: Destination host unreachable.
    Ping statistics for 192.168.0.11:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)
    Ну, вроде сработало как надо. Для тех, кто не знает, как посылать пинги – кликаем на интересующем нас узле, например сервере. Переходим на вкладку Desktop (Рабочий стол), там Command Prompt (Командная строка).А теперь, обещанный прикол. Попробуйте послать ping с хоста, как в первом пункте. PC>ping 10.0.0.100
    Pinging 10.0.0.100 with 32 bytes of data:
    Request timed out.
    Request timed out.
    Request timed out.
    Request timed out.

    Вот тебе раз. Только что же всё работало! Почему перестало? Это обещанный сюрприз. Объясняю, в чём проблема. Да, первое правило никуда не делось. Оно действительно разрешает отправку echo запроса на узел сервера. Но где разрешение на прохождение echo-ответов? Его нет! Запрос посылаем, а ответ принять не можем! Почему же всё работало раньше? Тогда у нас не было ACL на интерфейсе fa0/1 . А раз нет ACL, то всё разрешено. Придётся создавать правило на разрешение приёма icmp-ответов.

    В список INT_OUT добавим

    То же добавим и в список INT_IN.

    Router(config-ext-nacl)#permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply

    Вот теперь не придраться. Всё проходит великолепно!

  3. Разрешаем WEB-доступ на сервер с узла *.11.Поступаем аналогично! Тут, правда, нужно немного знать, как происходят обращения по протоколам 4-го уровня (TCP, UDP). Клиентский порт выбирается произвольным > 1024, а серверный – соответствующий службе. Для WEB – это 80 порт (протокол http).А что по поводу WEB-сервера? По умолчанию, на сервере уже установлена WEB-служба, можно посмотреть в настройках узла. Обратите внимание, чтобы стояла галочка. А подключиться к серверу можно выбрав ярлык “Веб браузер” на “Рабочем столе” любого узла. Конечно же сейчас доступа не будет. Поскольку у нас на интерфейсах маршрутизатора висят ACL-ы, и в них нет разрешающих правил для доступа. Чтож, давайте создадим.В список доступа INT_IN (который на интерфейсе fa0/0 ) добавим правило: Router(config-ext-nacl)#permit tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq 80 То есть мы разрешаем протокол TCP с нашего узла (порт произвольный, > 1024) на адрес сервера, порт HTTP.

    И, разумеется, обратное правило, в список INT_OUT (который на интерфейсе fa0/1 ):

    Router(config-ext-nacl)#permit tcp host 10.0.0.100 eq 80 host 192.168.0.11 established

    То есть разрешаем TCP с порта 80 сервера на хост *.11 , и соединение уже должно быть установлено! Можно вместо established указать так же gt 1024 , работать будет так же хорошо. Но смысл немного иной.

    В комментах ответьте, что будет более безопасным?

  4. Разрешаем FTP-доступ с узла *.13 на сервер.Тоже абсолютно ничего сложного!Разбираем, как происходит взаимодействие по протоколу FTP. В будущем, я планирую посвятить целый цикл статей работе разных протоколов, поскольку это очень полезно при создании точных (снайперских) правил ACL. Ну а пока:Действия сервера и клиента: + Клиент пытается установить связь и посылает пакет (в котором находится указание, что будет вестись работа в пассивном режиме) на 21 порт сервера со своего порта X (X > 1024, свободный порт)+ Сервер посылает ответ и сообщает номер своего порта для образования канала данных Y (Y > 1024) на порт клиента X, извлечённого из заголовка TCP-пакета.+ Клиент инициирует связь для передачи данных по порту X+1 на порт сервера Y (взятого из заголовка предыдущей транзакции). Как-то так. Немного сложно звучит, но нужно только разобраться!В список INT_IN добавляем правила:

    permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq 21
    permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024

    А в список INT_OUT добавляем правила:

    permit tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024
    permit tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024

    Проверяем из командной строки, командой ftp 10.0.0.100 , где авторизуемся по учётным данным cisco:cisco (взято из настроек сервера), там вводим команду dir и увидим, что данные как и команды – передаются успешно.

Вот примерно и всё, что касается расширенных список доступа.

Итак, посмотрим наши правила:

Router#sh access
Extended IP access list INT_IN
permit icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echo (17 match(es))
permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply
permit tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq www (36 match(es))
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq ftp (40 match(es))
permit tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024 (4 match(es))
Extended IP access list INT_OUT
deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo (4 match(es))
permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply (4 match(es))
permit tcp host 10.0.0.100 eq www host 192.168.0.11 established (3 match(es))
permit tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024 (16 match(es))
permit tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024 (3 match(es))


Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.

Знак # означает, что команда выполняется от root. Откройте заранее консоль с рутовыми правами - sudo -i в Debian-based системах или su в остальных.

1. Показать статус.

# iptables -L -n -v

Примерный вывод команды для неактивного файрвола:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

Для активного файрвола:

Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 394 43586 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 93 17292 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 1 142 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 0 0 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes) pkts bytes target prot opt in out source destination Chain wanin (1 references) pkts bytes target prot opt in out source destination Chain wanout (1 references) pkts bytes target prot opt in out source destination

Где:
-L: Показать список правил.
-v: Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы "K", "M" or "G".
-n: Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).

2. Отобразить список правил с номерами строк.

# iptables -n -L -v --line-numbers

Примерный вывод:

Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 wanin all -- 0.0.0.0/0 0.0.0.0/0 6 wanout all -- 0.0.0.0/0 0.0.0.0/0 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain wanin (1 references) num target prot opt source destination Chain wanout (1 references) num target prot opt source destination

Вы можете использовать номера строк для того, чтобы добавлять новые правила.

3. Отобразить INPUT или OUTPUT цепочки правил.

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v --line-numbers

4. Остановить, запустить, перезапустить файрвол.

Силами самой системы:
# service ufw stop
# service ufw start

Можно также использовать команды iptables для того, чтобы остановить файрвол и удалить все правила:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

Где:
-F: Удалить (flush) все правила.
-X: Удалить цепочку.
-t table_name: Выбрать таблицу (nat или mangle) и удалить все правила.
-P: Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).

5. Удалить правила файрвола.

Чтобы отобразить номер строки с существующими правилами:

# iptables -L OUTPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers | less
# iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1

Получим список IP адресов. Просто посмотрим на номер слева и удалим соответствующую строку. К примеру для номера 3:
# iptables -D INPUT 3

Или найдем IP адрес источника (202.54.1.1) и удалим из правила:
# iptables -D INPUT -s 202.54.1.1 -j DROP

Где:
-D: Удалить одно или несколько правил из цепочки.

6. Добавить правило в файрвол.

Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк:
# iptables -L INPUT -n --line-numbers

Примерный вывод:

Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED

Чтобы вставить правило между 1 и 2 строкой:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

Проверим, обновилось ли правило:
# iptables -L INPUT -n --line-numbers

Вывод станет таким:

Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 DROP all -- 202.54.1.2 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED

7. Сохраняем правила файрвола.

Через iptables-save:
# iptables-save > /etc/iptables.rules

8. Восстанавливаем правила.

Через iptables-restore
# iptables-restore

9. Устанавливаем политики по умолчанию.

Чтобы сбрасывать весь трафик:
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n

После вышеперечисленных команд ни один пакет не покинет данный хост.
# ping google.com

10. Блокировать только входящие соединения.

Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n

Пакеты исходящие и те, которые были запомнены в рамках установленных сессий - разрешены.
# ping google.com

11. Сбрасывать адреса изолированных сетей в публичной сети.

# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP

Список IP адресов для изолированных сетей:
10.0.0.0/8 -j (A)
172.16.0.0/12 (B)
192.168.0.0/16 (C)
224.0.0.0/4 (MULTICAST D)
240.0.0.0/5 (E)
127.0.0.0/8 (LOOPBACK)

12. Блокировка определенного IP адреса.

Чтобы заблокировать адрес взломщика 1.2.3.4:
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

13. Заблокировать входящие запросы порта.

Чтобы заблокировать все входящие запросы порта 80:
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

14. Заблокировать запросы на исходящий IP адрес.

Чтобы заблокировать определенный домен, узнаем его адрес:
# host -t a facebook.com

Вывод: facebook.com has address 69.171.228.40

Найдем CIDR для 69.171.228.40:
# whois 69.171.228.40 | grep CIDR

Вывод:
CIDR: 69.171.224.0/19

Заблокируем доступ на 69.171.224.0/19:
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

Также можно использовать домен для блокировки:
# iptables -A OUTPUT -p tcp -d www.fаcebook.com -j DROP
# iptables -A OUTPUT -p tcp -d fаcebook.com -j DROP

15. Записать событие и сбросить.

Чтобы записать в журнал движение пакетов перед сбросом, добавим правило:

# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Проверим журнал (по умолчанию /var/log/messages):
# tail -f /var/log/messages
# grep -i --color "IP SPOOF" /var/log/messages

16. Записать событие и сбросить (с ограничением на количество записей).

Чтобы не переполнить раздел раздутым журналом, ограничим количество записей с помощью -m. К примеру, чтобы записывать каждые 5 минут максимум 7 строк:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

16. Сбрасывать или разрешить трафик с определенных MAC адресов.

# iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
## *разрешить только для TCP port # 8080 с mac адреса 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT

17. Разрешить или запретить ICMP Ping запросы.

Чтобы запретить ping:
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

Разрешить для определенных сетей / хостов:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT

Разрешить только часть ICMP запросов:
### ** предполагается, что политики по умолчанию для входящих установлены в DROP ** ###
# iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
## ** разрешим отвечать на запрос ** ##
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

18. Открыть диапазон портов.

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

19. Открыть диапазон адресов.

## разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 ##
# iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

## пример для nat ##
# iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25

20. Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP, чтобы заблокировать порт.

## ssh tcp port 22 ##
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

## cups (printing service) udp/tcp port 631 для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

## time sync via NTP для локальной сети (udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

## tcp port 25 (smtp) ##
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT

# dns server ports ##
iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT

## http/https www server port ##
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

## tcp port 110 (pop3) ##
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT

## tcp port 143 (imap) ##
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT

## Samba file server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT

## proxy server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT

## mysql server для локальной сети ##
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

21. Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется connlimit модуль. Чтобы разрешить только 3 ssh соединения на одного клиента:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Установить количество запросов HTTP до 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP

Где:
--connlimit-above 3: Указывает, что правило действует только если количество соединений превышает 3.
--connlimit-mask 24: Указывает маску сети.

Помощь по iptables.

Для поиска помощи по iptables, воспользуемся man:
$ man iptables

Чтобы посмотреть помощь по определенным командам и целям:
# iptables -j DROP -h

Проверка правила iptables.

Проверяем открытость / закрытость портов:
# netstat -tulpn

Проверяем открытость / закрытость определенного порта:
# netstat -tulpn | grep:80

Проверим, что iptables разрешает соединение с 80 портом:
# iptables -L INPUT -v -n | grep 80

В противном случае откроем его для всех:
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

Проверяем с помощью telnet
$ telnet ya.ru 80

Можно использовать nmap для проверки:
$ nmap -sS -p 80 ya.ru

Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

Блокирование ответов пинг в ОС может предотвратить атаки флуда ICMP пакетов, но большинство систем используют данную услугу для онлайн мониторинга (системного мониторинга). В своей теме «заблокировать Ping (ICMP) ответов в Unix/Linux» я расскажу как можно все-таки его выключить.

Блокировка PING на сервер является полезным, если сервер постоянно сталкивается с какой-то DoS атакой с помощью функции PING. При использовании IPTables мы можем просто остановить запретить прохождение ICMP пакетов (собственно, запретить PING) на сервер. Перед началом этого необходимо иметь представление о том, что такое Iptables в Linux. Iptables это система межсетевого экрана с набором правил, которые контролирует входящие и исходящие пакеты. По-умолчанию в Iptables работает без каких-либо правил, вы можете создавать, добавлять, редактировать правила.

Отключения Ping используя iptables

Обьяснение некоторых параметров в iptables, которые необходимы для создания правил управления ICMP пакетами:

A: Добавляет правила.
-D: Удаляет правило с таблицы.
-p: Опция чтобы указать протокол (где ‘icmp’).
—icmp-type: Опция для указания типа.
-J: Перейти к цепочке.

Ниже, я приведу наглядные примеры.

Как заблокировать PING на сервере с выводом сообщений об ошибке?
Таким образом, вы можете частично блокировать PING с выводом сообщения об ошибке «Destination Port Unreachable». Добавьте следующие правила Iptables чтобы заблокировать PING с выводом сообщения об ошибке:

# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT

Заблокировать PING на сервере без каких-либо сообщений об ошибках.
Для этого, используем команду для ИПтейбелс:

# iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -p icmp --icmp-type echo-reply -j DROP

Заблокирует все входящие и исходящие ICMP пакеты на сервере.

Разрешить Ping используя iptables

Если заблокировали ping на сервере и не знаете как вернуть назад. То я сейчас расскажу как это сделать. А делается это, добавлением следующего правила в IPtables:

# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Данные правила разрешат прохождения ICMP пакетов с сервера и на него.

Блокировка Ping с параметрами Kernel

Мы также можем блокировать пинг ответы непосредственно параметрами ядра. Можно заблокировать ответы на пинг временно или постоянно и внизу показано как это сделать.

Временная блокировка Ping
Вы можете заблокировать временно ответы на пинг используя следующую команду

# echo "1" >

Чтобы разблокировать эту команду, выполните следующую:

# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

Запретить Ping вообще
Вы можете заблокировать пинг ответы добавляя следующий параметр в конфигурационный файл:

# vim /etc/sysctl.conf

И прописать:

[...] net.ipv4.icmp_echo_ignore_all = 1 [...]

sysctl используется для изменения параметров ядра во время выполнения, один из этих параметров может быть «ping daemon» (демон пинга), если вы хотите отключить пинг, то вы просто должны выполнить что-то вроде:

# sysctl -w net.ipv4.icmp_echo_ignore_all=1

Теперь попробуйте пинговать машину, никаких ответов на нее нет, не так ли? Для повторного включения пинга, используйте:

# sysctl -w net.ipv4.icmp_echo_ignore_all=0

W флаг используется, если вы хотите изменить некоторые настройки.

Теперь выполните следующую команду, чтобы немедленно применить настройки без перезагрузки системы:

# sysctl -p

# sysctl --system

Вот мой полный конфиг:

# cd /usr/local/src && wget http://сайт/wp-content/uploads/files/sysctl_conf.txt

и потом можно выполнить:

# cp /usr/local/src/sysctl_conf.txt /etc/sysctl.conf

На этом у меня все, тема «Заблокировать Ping (ICMP) ответов в Unix/Linux» завершена.

Каким образом можно сконфигурировать компьютеры под управлением Windows 2000/XP/2003 на блокирование Ping пакетов? Windows 2000/XP/2003 имеет встроенный механизм безопастности IP, называемых IPSec (IP Security). IPSec это протокол разработанный для защиты индивидуальных TCP/IP пакетов при передачи их через сеть.

Однако мы не будем вдаваться в подробности функционирования и устройства IPsec, ибо помимо шифрования, IPSec может также защищать ваш сервер или рабочую станцию механизмом, похожим на файерволл.

Блокируем PING на одиночном компьютере

Для блокирования всех PING пакетов с компьютера и на него нам необходимо создать полититку IPSec, которая будет блокировать весь ICMP трафик. Для начала проверьте отвечает ли ваш компьютер на ICMP запросы:

Для настройки одиночного компьютера нам необходимо выполнить следующие шаги:

Сконфигурируем список IP Filter Lists и Filter Actions

  1. Откройте окно MMC (Start > Run > MMC).
  2. Добавьте оснастку IP Security and Policy Management.
  1. Выберите какой компьютер будет управляться этой политикой – в нашем случае это локальный компьтер. Нажмите Close, потом нажмитеOk.
  1. Правой кнопкой нажмите на IP Security Policies в левой половине консоле MMC. Выберите Manage IP Filter Lists and Filter Actions.
  1. Вам не нужно настраивать или создавать IP фильтр для ICMP (протокол в котором работает PING), так как такой фильтр уже существует по умолчанию – All ICMP Traffic.

Однако вы можете сконфигурировать сколь угодно сложный IP фильтр, к примеру запретить пинговать ваш компьютер со всех IP, кроме нескольких определенных. В одной из следующих статей посвященных IPSec мы подробно рассмотрим создание IP фильтров, следите за обновлениями.

  1. В окне Manage IP Filter Lists and Filter actions просмотрите ваши фильтры и если все в порядке нажмите на вкладку Manage Filter Actions. Теперь нам нужно добавить действие для фильтра, которое будет блокировать определенный трафик, нажмем Add.
  1. В первом окне приветствия нажимаем Next.
  2. В поле Filter Action Name вводим Block и нажимаем Next.
  1. В Filter Action General Options выбираем Block, после чего жмем Next.
  1. Вернитесь в окно Manage IP Filter Lists and Filter actions и просмотрите ваши фильтры и если все в порядке, нажмите Close. Вы можете добавить фильтры и действия для фильтров в любое время.

Следующим шагом будет конфигурирование политики IPSec и её применение.

Конфигурируем политику IPSe

  1. В той же MMC консоле нажмите правой кнопкой по IP Security Policies и выберите Create IP Security Policy.
  1. Пропустите приветствие мастера нажав Next.
  2. В поле IP Security Policy Name введите соответствующее случаю имя, например “Block PING”. Нажмите Next
  1. В окне Запросов безопасного соединения сними галочку с чекбокса Active the Default Response Rule. НажмитеNext
  1. Отметьте чекбокс изменить свойства и нажмите Finish.
  1. Нам нужно добавить IP фильтры и действия фильтров в новую политику IPSec. В окне новый политике IPSec нажмите Add
  1. Нажмите Next.
  2. В окне Tunnel Endpoint убедитесь что выбрано значение по умолчанию и нажмите Next.

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

Вам понадобится

  • - ПК с установленной операционной системой Windows;
  • - доступ в интернет.

Инструкция

  • Войдите в меню «Пуск» операционной системы Windows, кликнув по соответствующей кнопке в левом углу панели задач. Некоторые устройства для ввода информации имеют клавишу с логотипом Windows, нажав на которую можно получить доступ к главному меню операционной системы непосредственно с клавиатуры.
  • Откройте раздел «Панель управления», активируйте меню «Брандмауэр Windows» и в диалоговом окне перейдите на вкладку «Расширенные». Нажмите на кнопку ICMP Settings и отмените выбор параметра «Allow incoming echo request», сняв галочку с соответствующего пункта меню. Сохраните сделанные вами изменения в настройках, кликнув клавишу «Ok».
  • Воспользуйтесь встроенным приложением IPSec для блокировки входящих и исходящих ping-пакетов. Нажмите на кнопку «Пуск» и, если вы используете операционную систему Windows 7, введите mmc в строку поиска. Владея компьютеров под управлением ОС Windows XP, впишите аналогичное значение в строку «Выполнить». Кликните по пункту «Открыть» или нажмите на клавишу Enter.
  • Подтвердите свой выбор и в окне приложений перейдите в меню File. Выберите функцию «Add/Remove Snap-in» и активируйте утилиту «IP Security and Policy Management». Поставьте флажок в поле «Local computer» и завершите работу мастера, кликнув кнопку Close.
  • Нажмите правую клавишу манипулятора и вызовите контекстное меню. Обозначьте команду «Manage IP filter Lists and Filter Actions» и активируйте пункт «All ICMP Traffic». Перейдите в раздел «Manage Filter Actions», кликните по кнопке Next и отметьте флажком надпись «Block». Подтвердите сделанные настройки и закройте диалоговое окно.
  • В контекстном меню «IP Security Policies» активируйте команду «Create IP Security Policy». Укажите пункт «Block Ping» в соответствующем поле открывшегося мастера создания политик. Снимите флажок напротив надписи «Activate the default responce rule» и сделайте выбор в пользу пункта «Edit Properties». Сохраните сделанные настройки и закройте окно мастера.
  • Совет добавлен 25 января 2012 Совет 2: Как запретить ping Функция ping используется для проверки доступности интернет-ресурсов посредством отправки на используемый хост пакета определенного размера. При этом замеряется время возврата данных, чтобы определить скорость соединения. Данная функция отключается любителями сетевых игр, чтобы сократить время задержек.

    Инструкция

  • Откройте меню «Пуск» операционной системы Windows, кнопка которого находится в левом углу панели задач. Также на некоторых клавиатурах имеется кнопка с изображением окошка Windows, нажав на которое, можно запустить главное меню. Перейдите в раздел «Панель управления» и зайдите в меню «Брандмауэр Windows». Нажмите на вкладку «Расширенные» в открывшемся диалоговом окне.
  • Найдите кнопку ICMP Settings и нажмите на нее, после чего снимите галочку возле надписи “Allow incoming echo request”. После этого внизу окна нажмите на кнопку «Ок», чтобы сохранить указанные настройки. После этого для запрета входящих и исходящих ping-пакетов необходимо воспользоваться встроенным приложением IPSec.
  • Нажмите на кнопку «Пуск» и введите значение mmc в строку поиска (для Windows 7) или в строку «Выполнить» (для Windows XP). Нажмите кнопку «Открыть» или клавишу Enter.Подтвердите выполнение команды и откройте меню File в окне приложений. Выберите функцию "Add/Remove Snap-in" и добавьте утилиту "IP Security and Policy Management". В поле "Local computer" поставьте флажок и нажмите кнопку Close, чтобы завершить работу мастера.
  • Нажмите правой кнопкой мышки на строку "IP Security Policies", чтобы вызвать контекстное меню. Выделите команду “Manage IP filter Lists and Filter Actions” и отметьте пункт “All ICMP Traffic”. После этого перейдите в раздел "Manage Filter Actions". Нажмите кнопку Next и поставьте флажок возле надписи "Block". Подтвердите настройку и закройте диалоговое окно.
  • Выберите команду "Create IP Security Policy" в контекстном меню "IP Security Policies". Откроется мастер создания политик, в котором укажите в соответствующем поле "Block Ping". Снимите флажки возле надписи “Activate the default responce rule” и поставьте возле “Edit Properties”. Сохраните настройки и закройте окно мастера.
  • Как запретить ping - версия для печати