Цель этого руководства – показать некоторые из наиболее распространенных команд iptables для систем Linux.
iptables – это брандмауэр, встроенный во все дистрибутивы Linux.
Даже такие дистрибутивы, как Ubuntu, который использует ufw (несложный брандмауэр) и Red Hat, который использует firewalld, по-прежнему передают свои команды iptables и используют его в фоновом режиме.
🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
Владение iptables или, по крайней мере, знакомство с некоторыми из самых основных команд оченьважно для администраторов Linux.
🛡️ Как перенести правила iptables CentOS / RHEL 6 в CentOS / RHEL 7 firewalld
🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
Даже обычные пользователи Linux могут извлечь выгоду из понимания основ брандмауэра iptables, поскольку им может потребоваться применить к нему некоторые незначительные настройки в какой-то момент.
Используйте некоторые из приведенных ниже примеров, чтобы ознакомиться с синтаксисом iptables и получить представление о том, как он работает для защиты вашей системы.
- Правило iptables: Отклонить все исходящие сетевые подключения
- Правило iptables: Отклонение всех входящих сетевых подключений
- Правило iptables: Отклонение всех сетевых подключений
- Правило iptables: Отклонение входящих запросов ping
- Правило iptables: Разрыв исходящих telnet-соединений
- Правило iptables: Отклонение исходящих ssh-соединений
- Правило iptables: Отклонение входящих ssh-соединений
- Правило iptables: Отклонение всего входящего трафика, кроме ssh и локальных подключений
- Правило iptables: Прием входящих ssh-соединений с определенного IP-адреса
- Правило iptables: Прием входящих ssh-соединений с определенного MAC-адреса
- Правило iptables: Отклонение входящих подключений на определенном TCP-порту
- Правило iptables: Сброс всех входящих подключений на определенном сетевом интерфейсе
- Правило iptables: Cоздания простого IP-маскарадинга
- Правило iptables: Отклонять весь входящий трафик Telnet, кроме указанного IP-адреса.
- Правило iptables: Отклонять весь входящий трафик ssh, кроме указанного диапазона IP-адресов.
- Правило iptables: Отклонять весь весь исходящий трафик на конкретный удаленный хост
- Правило iptables: Блокировка доступа к определенному сайту
- Заключение
Правило iptables: Отклонить все исходящие сетевые подключения
Вторая строка правил разрешает только текущие исходящие и установленные соединения.
Это очень полезно, когда вы вошли на сервер через ssh или telnet.
# iptables -F OUTPUT # iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT # iptables -A OUTPUT -j REJECT
Правило iptables: Отклонение всех входящих сетевых подключений
# iptables -F INPUT # iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT # iptables -A INPUT -j REJECT
Правило iptables: Отклонение всех сетевых подключений
Это правило отключит и заблокирует все сетевые соединения, входящие или исходящие.
Что еще более важно, это также будет включать текущие текущие установленные соединения.
# iptables -F # iptables -A INPUT -j REJECT # iptables -A OUTPUT -j REJECT # iptables -A FORWARD -j REJECT
Правило iptables: Отклонение входящих запросов ping
Это правило iptables сбрасывает все входящие запросы ping.
Обратите внимание, что можно использовать REJECT вместо DROP.
Разница между DROP и REJECT заключается в том, что DROP автоматически отбрасывает входящий пакет, тогда как REJECT приведет к возврату ошибки ICMP.
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Правило iptables: Разрыв исходящих telnet-соединений
Это правило iptables блокирует любой исходящий трафик на любой хост, порт назначения которого равен 23 (telnet)
# iptables -A OUTPUT -p tcp --dport telnet -j REJECT
Правило iptables: Отклонение исходящих ssh-соединений
Это правило iptables будет отклонять все исходящие соединения, поступающие с локального порта 22 (ssh).
# iptables -A OUTPUT -p tcp --dport ssh -j REJECT
Правило iptables: Отклонение входящих ssh-соединений
Сброс всех входящих подключений к локальному порту 22 (ssh).
# iptables -A INPUT -p tcp --dport ssh -j REJECT
Правило iptables: Отклонение всего входящего трафика, кроме ssh и локальных подключений
Эти правила будут отклонять все входящие подключения к серверу, кроме подключений к порту 22 (SSH).
Система также будет принимать соединения через интерфейс loopback
# iptables -A INPUT -i lo -j ACCEPT # iptables -A INPUT -p tcp --dport ssh -j ACCEPT # iptables -A INPUT -j REJECT
Правило iptables: Прием входящих ssh-соединений с определенного IP-адреса
Используя это правило iptables, мы заблокируем все входящие подключения к порту 22 (ssh), кроме хоста с IP-адресом 77.66.55.44.
Это означает, что только хост с IP 77.66.55.44 сможет использовать ssh.
# iptables -A INPUT -p tcp -s 77.66.55.44 --dport ssh -j ACCEPT # iptables -A INPUT -p tcp --dport ssh -j REJECT
Правило iptables: Прием входящих ssh-соединений с определенного MAC-адреса
Используя это правило iptables, мы заблокируем все входящие подключения к порту 22 (ssh), кроме хоста с MAC-адресом 00:e0:4c:f1:41:6b.
Другими словами, все ssh-соединения будут ограничены одним хостом с MAC-адресом 00:e0:4c:f1:41:6b.
# iptables -A INPUT -m mac --mac-source 00:e0:4c:f1:41:6b -p tcp --dport ssh -j ACCEPT # iptables -A INPUT -p tcp --dport ssh -j REJECT
Правило iptables: Отклонение входящих подключений на определенном TCP-порту
Следующее правило iptables сбрасывает весь входящий трафик на TCP-порту 3333.
iptables -A INPUT -p tcp --dport 3333 -j REJECT
Правило iptables: Сброс всех входящих подключений на определенном сетевом интерфейсе
Следующее правило сбрасывает входящий трафик на конкретном сетевом интерфейсе из подсети 192.168.0.0/16.
Это очень полезно при попытке отбросить все поддельные IP-адреса.
Если eth0 является внешним сетевым интерфейсом, входящий трафик, исходящий из внутренней сети, не должен попадать в сетевой интерфейс eth0.
Правило iptables: Cоздания простого IP-маскарадинга
Следующее правило создаст простой шлюз IP Masquerading, чтобы разрешить всем хостам в одной подсети доступ в Интернет.
Указанный ниже eth0 – это внешний интерфейс, подключенный к Интернету.
# echo "1" > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADE
Правило iptables: Отклонять весь входящий трафик Telnet, кроме указанного IP-адреса.
Следующее правило iptables отклоняет весь входящий трафик Telnet, кроме запроса на соединение с IP-адреса 222.111.111.222.
# iptables -A INPUT -t filter ! -s 222.111.111.222 -p tcp --dport 23 -j REJECT
Правило iptables: Отклонять весь входящий трафик ssh, кроме указанного диапазона IP-адресов.
Следующее правило iptables отклоняет весь входящий трафик ssh, кроме запроса на соединение из диапазона IP-адресов 10.1.1.90 – 10.1.1.1.100.
Удаление “!” из приведенного ниже правила отклонить весь трафик ssh, исходящий из диапазона IP-адресов 10.1.1.90 – 10.1.1.100.
# iptables -A INPUT -t filter -m iprange ! --src-range 10.1.1.90-10.1.1.100 -p tcp --dport 22 -j REJECT
Правило iptables: Отклонять весь весь исходящий трафик на конкретный удаленный хост
Следующее правило iptables отклоняет весь исходящий трафик на удаленный хост с IP-адресом 222.111.111.222.
# iptables -A OUTPUT -d 222.111.111.222 -j REJECT
Правило iptables: Блокировка доступа к определенному сайту
Следующее правило iptables блокирует весь входящий трафик на facebook.com, где исходным портом является порт 80/www.
# iptables -A INPUT -s facebook.com -p tcp --sport www -j DROP
Обратите внимание, что приведенное выше правило iptables блокирует доступ как к facebook.com, так и к www.facebook.com.
Заключение
В этом руководстве мы увидели набор основных правил iptables на Linux.
Статья включила всебя некоторые из наиболее распространенных правил, которые обычно применяются к системам, такие как блокировка SSH-соединений, отличных от тех, которые поступают с определенного IP-адреса.
Использование этих правил поможет защитить ваш сервер от атак и повысить безопасность в целом.
Не стесняйтесь адаптировать эти примеры к вашим собственным сценариям.