GrabDuck

21 пример использования iptables для администраторов | linux-notes.org

:

Если вы используете систему linux и нужно настроить безопасность на высоком уровне, то это можно добиться с прогой iptables (для ipv4) , а так же с ip6tables (для ipv6). Тут, в теме я предоставлю 21 пример использования этой службы и вы легко научитесь использовать iptables чтобы  хорошо защитить вашу ОС от взлома или проникновения на ваш сервер.

Знак диез «#» говорит нам что команду  нужно запускать от рута.

1. Чтобы показать статус, нужно:

Ниже приведен пример вывода iptables для не настроенного фаервола:

пример использования iptables -L -n -v

Вывод будет отличаться если Вы настроите свой брандмауэр под свои нужды, приведу пример уже для настроенного iptables: пример уже для настроенного iptablesРассмотрим где и что применяется:
-L : — Эта опция нужна для показа списка правил.
-v : — Этот ключ отобразит дополнительную инфу. Этот ключик покажет интерфейс (его имя), опции, разные TOS маски, отобразит также суффиксы ‘K’, ‘M’ или ‘G’.
-n : — Эта опция нужна для отображения IP адреса и  его порта в виде чисел (не беря во внимания DNS сервер для определения имени что собственно ускоряет отображение).

2. Чтобы вывести правила в виде списка, а так же с нумерацией строчек:

В итоге у Вас будет примерно это на выводе: Пример вывода iptables -n -L -v --line-numbersИспользуйте нумерацию для строк чтобы прописать новое правила.

3. Чтобы можно было отобразить INPUT, OUTPUT цепочки правил нужно выполнить:

4. Чтобы застопать, стартануть или перезапустить файрвол нужно выполнить:

Использовать средства самой ОС:

Можете заюзать команды iptables чтобы можно было остановить фаервол и удалить все наши правила:

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

5. Если нужно удалить правила в фаерволе следует выполнить:

Если нужно вывести нумерацию строк с уже имеющимися правилами:

Как увидеть список IP-шников. Нужно посмотреть слева на нумерацию и я могу удалить строки которые уже присутствуют. Например для номера 4:

Или поищем IP-шник источника (192.168.244.134) и после чего удалим его из наших правил:

Пояснение по ключу:
-D : служит для удаления 1 или пары правил из цепи.

6. Если Вы хотите прописать новое правило в фаервол, выполните:

Если необходимо добавить одно или парочку правил в одну цепочку, то для начала выведем список с нумерацией строк:

пример использования iptables -L INPUT -n --line-numbers

Допустим Вам нужно вставить правило между первой и второй строкой, то нужно выполнить:

Убедимся, обновилось ли наше правило:

пример вывода когда мы вставили наше правило между 1 и 2 строкой

7. Что бы сохранить правило (а) в фаерволе нужно.

Можно это сделать с помощью следующей команды:

8. Чтобы восстановить правило (а) в фаерволе нужно.

Можно это сделать  с помощью следующей команды:

9. Чтобы вернуть как все и было (Установить все как было по дефолту).

Чтобы вернуть как было весь трафик нужно выполнить:

После того как вы выполните команды что выше, то ни 1 из пакетов не покинет прописанный хост.

10. Чтобы заблокировать только входящие соединения нужно выполнить:

Чтобы сбросить все не инициированные вами входящие пакеты, но разрешать исходящий трафик следует выполнить эти команды:

Исходящие пакеты и те, которые были сохранились в рамках установленной сессии — разрешены.

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

Список айпишников  для всей изолированной сети ( изолированных сетей):

12. Чтобы заблокировать определенный IP адрес нужно:

192.168.244.144 — Это айпишник надоедливого человека, допустим мы его захотели забанить.

13. Как сделать блокировку входящего запроса с порта?

Если вам нужно например сделать блокировку всех входящих запросов с порта 80, то выполните:

Чтобы сделать блокировку запроса на порту 80 с ИП-адреса 192.168.244.144 нужно:

14.  Как заблокировать запросы на исходящий айпишник?

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

Вывод: linux-notes.org has address 65.178.248.45

Найдем CIDR для 65.178.248.45:

Вывод: CIDR: 65.178.2145.0/18

Сделаем блокировку на 65.178.2145.0/18:

Можно кат же заблокировать сам домен:

15. Как записать события или сбросить их?

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

Посмотрим лог (по умолчанию /var/log/messages):

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

Чтобы не заполнить какой то раздел большим журналом, можно сделать ограничение на количество записей с использованием опции «-m». Например, чтобы записывать каждые 4 минуты и  максимум 6 строк выполните:

16. Как сбросить или разрешить прохождения трафика с некоторого мак-адреса?

Чтобы разрешить только для TCP по порту 8080 с некоторого мак-адреса, допустим с AA:0F:EA:81:03:19 выполните:

17. Как разрешить или запретить запросы ICMP Ping на сервак?

Чтобы запретить выполните:

Чтобы разрешить для некоторых сетей а так же хостов нужно выполнить:

Чтобы разрешить только небольшую часть ICMP запросов нужно сделать следующее (имеется в виду, что политика по дефолту для входящих она установлена в DROP):

Разрешить отвечать на данный запрос:

18. Как можно открыть диапазон определенных портов?

Сделать это можно очень просто, стоит указать в каких пределах можно открыть порты, в данном примере я открою с 666-6666:

19. Как можно открыть диапазон определенных ИП адресов?

Например нужно разрешить подключение Apache по порту 80  если адреса в диапазоне от 192.168.244.66 до 192.168.244.244, а сделать это можно следующим образом:

Приведу пример еще и для nat-а:

20. Покажу как можно открыть или закрыть стандартные порты.

Делается это следующим образом, нужно заменить ACCEPT на DROP, чтобы заблокировать какой то порт. Для службы ssh tcp по порту 22:

Для службы cups (printing service) или udp/tcp по порту 631 в локальной сети:

Синхронизация времени (time sync) через службу NTP в локальной сети (udp по порту 123):

Для службы tcp по порту 25 (smtp):

Для службы  dns server-а по порту 53:

Для служб http или https, а так же для www server по порту 80 и 443:

Для tcp по порту 110 (pop3):

Для tcp по порту 143 (imap):

Для службы  Samba file server в локальной сети по портам: 137, 138, 139, 445:

Для  proxy server-а в локальной сети по порту 3128:

Для mysql server-а  для локальной сети по порту 3306:

21. Если нужно как то ограничить количество одновременных соединений на сервер для конкретного ИП-адреса.

Если это нужно сделать, то нам нужно использовать connlimit модуль. для того чтобы разрешить только 4 ssh соединения для одного клиента выполните:

Если нужно установить количество запросов для HTTP например до 23 с маской 24:

Пояснения по ключикам:
—connlimit-above 23 : Говорит, что данное правило выполняется когда количество соединений больше 23.
—connlimit-mask 24 : Говорит какую маску нужно использовать, у меня это 24.

Как получить помощь по iptables?

Чтобы найти помощь по iptables,используйте мануал (man):

Если нужно просмотреть только по конкретным командам и целям, используйте:

Чтобы выполнить проверку правил iptables на открытые и закрытые порты:

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

Посмотрим разрешает ли соединение с 80 портом в iptables:

Или можно его открыть для всех:

Так же можно это проверить и с использованием телнет (telnet):

Можете заюзать nmap для такой же проверки:

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