iptables

Iptables для начинающих

Iptables для начинающих
Iptables - это в основном основной брандмауэр, используемый для систем Linux, есть альтернативы, такие как nftables, но Iptables остается основным, он очень гибкий, принимая прямые команды от пользователя, вы можете загружать и выгружать правила при необходимости, чтобы увеличить политики вашего брандмауэра точность.

На самом деле вам даже не нужно знать синтаксис Iptable, чтобы использовать его, у вас есть графические инструменты, такие как Firewall Builder, которые могут сделать процесс обучения ненужным, но если вы хотите улучшить знания в области администрирования Linux, Iptables - это первый шаг к тому, чтобы узнать, как практически управлять безопасностью под Linux и даже упростить управление устройствами безопасности CISCO или Fortigate и т.п.

Iptables в основном позволяет вам указать вашей системе принимать, отклонять или перенаправлять соединение в зависимости от выбранных параметров, например, перенаправлять все соединения с портом X на другой IP-адрес, блокировать все соединения, поступающие с определенного IP-адреса, диапазона IP-адресов или на принимать все соединения, поступающие с IP-адресов из белого списка, среди многих других функций.

В этом руководстве мы узнаем, как защитить веб-сервер, как перенаправлять соединения на внутренние IP-адреса из нашей локальной сети и как предлагать определенные услуги только для IP-адресов из белого списка.

Установка Iptables

Чтобы установить iptables в системах Debian / Ubuntu, просто запустите «apt update && apt install iptables» от имени пользователя root или с префиксом «sudo», как показано на следующем изображении.

Открытие портов HTTP и HTTPS

Прежде всего, давайте добавим все политики ACCEPT, начиная с веб-сервера.

iptables -A ВВОД -p tcp --dport 80 -j ПРИНЯТЬ
iptables -A ВВОД -p tcp --dport 443 -j ПРИНЯТЬ

Чтобы увидеть, как добавлены наши правила, запустите «iptables -L»

Где:

Iptables = вызывает программу
= добавляет правило
ВХОД = входящий трафик
-п = протокол
-ddport = порт назначения
-j = укажите «цель», цель - это тип политики: ACCEPT, DROP, QUEUE или RETURN.

Затем в образце изображения выше мы говорим Iptables добавить правило для входящего трафика через протокол TCP и порты 80 и 443, которые будут приняты.

Мы можем изменить команду так, чтобы она принимала соединение только с определенного IP-адреса, добавив параметр «-s”:

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 80 -j ПРИНЯТЬ

Где:

s = источник
Iptables -L = перечисляет все загруженные правила iptables
Iptables -L -v = то же самое с многословием.

Мы также можем протестировать наш брандмауэр с помощью nmap:

Как мы видим, порт 80 открыт как в соответствии с «iptables -L», так и в соответствии с Nmap.

Примечание: Подробнее об использовании Nmap вы можете прочитать в нашем руководстве по нему

Защита вашего сервера

# Открыть службы HTTP и HTTPS.
iptables -A ВВОД -p tcp --dport 80 -j ПРИНЯТЬ
iptables -A ВВОД -p tcp --dport 443 -j ПРИНЯТЬ
#Open SSH Port Service
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT

Где новые параметры:

= означает «совпадение» и используется для вызова расширений Iptable, таких как conntrack, которые не являются частью основных функций iptable.

Conntrack = Позволяет отслеживать информацию о подключениях, например, конкретные адреса или, в данном случае, состояние подключения. Это необходимо использовать осторожно, поскольку многие правила для защиты серверов от некоторых атак используют conntrack, в то время как его использование ограничено оборудованием, и такое ограничение может использоваться для перегрузки ресурсов сервера.

-ctstate = определяет состояние правила для соответствия, возможные состояния: NEW, ESTABLISHED, RELATED и INVALID.

# Защитите свой SSH-сервис от атак грубой силы, разрешив только определенный IP-адрес
для доступа к iptables -A INPUT -p tcp -s X.Икс.Икс.X --dport 22 -m conntrack --ctstate NEW,
УСТАНОВЛЕНО -j ПРИНЯТЬ
# Защитите свой SSH-сервис от атак методом грубой силы, ограничив попытки подключения
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j 22-test
Iptables -A 22-test -m latest --name CONNECTIONS --set --mask 255.255.255.255 - источник
Iptables -A 22-test -m недавнее --name ПОДКЛЮЧЕНИЯ --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitcount 3 -j 22-защита
Iptables -A 22-test -j ПРИНЯТЬ
Iptables -A 22-защита -j DROP

Где:
В первой строке наше правило гласит: «-m conntrack -ctstate NEW » это означает, что если соединение новое, то переходите к правилу «22-test».

Во второй строке написано, что сетевая маска пакетов 255.255.255.255 названы как СОЕДИНЕНИЯ .

Третья строка говорит, что если СОЕДИНЕНИЯ кажется, что более 3 раз в течение 30 секунд брандмауэр продолжает применять цепочку 22-защита. Четвертая строка говорит, что если СОЕДИНЕНИЯ не показалось более 3 раз в течение 30 секунд, это может быть принято.
Пятая строчка, которая принадлежит 22-защита цепь говорит, что нужно бросить СОЕДИНЕНИЯ если кажется более 3 раз в течение 30 секунд.

Теперь, чтобы закончить, давайте откажемся от всех неприемлемых соединений и разрешим весь исходящий трафик:

iptables -P ПРИНЯТЬ ВЫВОД
iptables -P ПАДЕНИЕ ВВОДА

Где -P означает цепочку цели, помните, что цель - это политика, ПРИНЯТЬ, УДАЛИТЬ, ОЧЕРЕДЬ или ВОЗВРАТ. В этом случае мы говорим, что политика по умолчанию для исходящего трафика - принять, а политика по умолчанию для входящего трафика - отказаться, если мы не указали что-то другое в предыдущих правилах. Это очень простой брандмауэр, который не включает правила для многих атак, для учебных целей, а не для производства, в конце статьи я прикрепляю брандмауэр, который я использовал для производства на сервере, в нем есть комментарии, объясняющие каждое правило.

ПЕРЕАДРЕСАЦИЯ СОЕДИНЕНИЯ К КОНКРЕТНОМУ ПОРТУ НА КОНКРЕТНЫЙ IP-АДРЕС

Это очень полезно также для пользователей настольных компьютеров, которые хотят маршрутизировать соединение через определенное устройство, это может быть полезно даже для геймеров, обычно мы делаем это из настроек маршрутизатора, но предположим, что на устройстве маршрутизации работает Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.Икс.Икс.X --dport 8080 -j DNAT - в пункт назначения
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.Икс.Икс.Икс

Приведенные выше правила вызывают NAT (преобразование сетевых адресов), чтобы указать соединения по протоколу TCP по адресу X.Икс.Икс.X и порт 8080 будут перенаправлены на адрес Y.Y.Y.Y, порт 80. Второе правило определяет, что ответы должны быть отправлены на исходный адрес (X.Икс.Икс.ИКС). Мы можем использовать эти правила, чтобы разрешить доступ к IP-камере, разрешить онлайн-игры с внешними сетями и т. Д.

Это руководство предназначено для ознакомления новичков с Iptables и объясняет только ограниченное количество основных функций. Ниже вы можете увидеть образец хорошо спланированного брандмауэра, который использовался для производственного сервера, он включает в себя некоторые из правил, которые мы уже видели, до более сложных правил для предотвращения DDoS-атак среди прочего.
Следующее руководство будет посвящено сниффингу в локальных сетях, но в следующем уроке я объясню некоторые правила, применяемые к брандмауэру ниже.  Спасибо, что подписались на LinuxHint.com, следите за нами, чтобы следить за обновлениями Iptables и Linux в целом.

Бонус: образец производственного межсетевого экрана

iptables -F
# ---- Включить защиту от плохих сообщений об ошибках
включить / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Включить фильтрацию обратного пути. Безопаснее, но нарушает асимметричную маршрутизацию и / или IPSEC
включить / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Не принимать пакеты с маршрутизацией от источника. Исходная маршрутизация редко используется для законных
цели отключить / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Отключить принятие перенаправления ICMP, которое можно использовать для изменения ваших таблиц маршрутизации
отключить / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Так как мы не принимаем перенаправления, не отправляйте сообщения Redirect
отключить / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Игнорировать пакеты с невозможными адресами
отключить / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Защита от обертывания порядковых номеров и помощь в измерении времени приема-передачи
включить / proc / sys / net / ipv4 / tcp_timestamps
# ---- Помощь против Syn-Flood DoS или DDoS-атак с использованием определенных вариантов начального
Порядковые номера TCP включают / proc / sys / net / ipv4 / tcp_syncookies
# ---- Используйте выборочный ACK, который может использоваться для обозначения отсутствия определенных пакетов
отключить / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
# Теперь мы можем начать добавлять выбранные службы в наш фильтр брандмауэра. Первая такая вещь
это интерфейс localhost iptables -A INPUT -i lo -j ACCEPT
# Мы сказали брандмауэру принимать все входящие пакеты с tcp-флагами NONE и просто отбрасывать их.
iptables -A ВВОД -p tcp ! -m conntrack --ctstate NEW -j DROP
# Мы говорим iptables добавить (-A) правило к входящему (INPUT) - SSH работает на порту 50683
вместо 22.
iptables -A ВВОД -p tcp -m tcp --dport 50683 -j ПРИНЯТЬ
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m latest --set
--имя SSH -j ПРИНЯТЬ
iptables -A INPUT -p tcp --dport 50683 -m latest --update --seconds 60 --hitcount 4
--rttl --name SSH -j LOG --log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m latest --update --seconds 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m latest --set
--имя SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m latest --update
--секунд 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m latest --update
--секунд 60 --hitcount 4 --rttl --name SSH -j DROP
# Теперь разрешаю imap и smtp.
-A ВХОД -p tcp --dport 25 -j ПРИНЯТЬ
# Разрешает поп и поп-соединения
-A ВХОД -p tcp --dport 110 -j ПРИНЯТЬ
-A ВХОД -p tcp --dport 995 -j ПРИНЯТЬ
############ IMAP и IMAPS ############
-A ВХОД -p tcp --dport 143 -j ПРИНЯТЬ
-A ВХОД -p tcp --dport 993 -j ПРИНЯТЬ
########### MYSQL ###################
iptables -A ВВОД -i eth0 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
########## Система R1soft CDP ###############
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 1167 -j ACCEPT
############### исходящий ###################
iptables -I INPUT -m conntrack --ctstate УСТАНОВЛЕН, СВЯЗАННЫЙ -j ПРИНЯТЬ
### Разрешить текущий, блокировать входящий не определен ###
iptables -P ПРИНЯТЬ ВЫВОД
iptables -P ПАДЕНИЕ ВВОДА
iptables -L -n
iptables-save | тройник / etc / iptables.контрольная работа.правила
iptables-восстановление < /etc/iptables.test.rules
#service iptables restart
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...