Статья рассказывает о том, как выполнить "минимальную" настройку iptables в Ubuntu 16 и CentOS 7, предполагающую блокировку IPv6- и IPv4-трафика, за исключением входящего IPv4-трафика протокола SSH, а также всего исходящего IPv4-трафика


Настройка iptables в Ubuntu 16


  • устанавливаем пакет iptables-persistent
  • apt-get install iptables-persistent
  • настраиваем цепочки и правила
  • сохраняем внесенные изменения
  • netfilter-persistent save

Настройка iptables в CentOS 7


  • отключаем автоматический запуск службы firewalld
  • systemctl disable firewalld
  • устанавливаем пакет iptables-services
  • yum install iptables-services
  • включаем автоматический запуск служб iptables и ip6tables
  • systemctl enable iptables
    systemctl enable ip6tables
  • настраиваем цепочки и правила
  • сохраняем изменения
  • service iptables save
    service ip6tables save

Настройка правил и цепочек


IPv4


  • выводим список всех правил и цепочек всех таблиц
  • iptables --table filter --list-rules
    iptables --table nat --list-rules
    iptables --table mangle --list-rules
    iptables --table raw --list-rules
    iptables --table security --list-rules
  • устанавливаем для каждой стандартной цепочки таблицы "filter" временные правила по умолчанию
  • iptables --policy INPUT ACCEPT
    iptables --policy FORWARD ACCEPT
    iptables --policy OUTPUT ACCEPT
  • Замечание: данный шаг необходим для того, чтобы в процессе настройки через удаленное подключение случайно не заблокировать себе доступ; по завершении настройки данные правила будут переопределены
  • удаляем все созданные автоматически правила
  • iptables --table filter --flush
    iptables --table nat --flush
    iptables --table mangle --flush
    iptables --table raw --flush
    iptables --table security --flush
  • удаляем все созданные автоматически пользовательские цепочки
  • iptables --table filter --delete-chain
    iptables --table nat --delete-chain
    iptables --table mangle --delete-chain
    iptables --table raw --delete-chain
    iptables --table security --delete-chain
  • добавляем правило, разрешающее входящий трафик на локальном интерфейсе
  • iptables --append INPUT --in-interface lo --jump ACCEPT
  • добавляем правило, разрешающее входящий трафик инициированных хостом соединений
  • iptables --append INPUT --match conntrack --ctstate ESTABLISHED,RELATED --jump ACCEPT
  • добавляем правило, разрешающее входящие SSH-подключения
  • iptables --append INPUT --protocol tcp --dport 22 --jump ACCEPT
  • устанавливаем для каждой стандартной цепочки правила по умолчанию
  • iptables --policy INPUT DROP
    iptables --policy FORWARD DROP
    iptables --policy OUTPUT ACCEPT
  • Замечание: правила по умолчанию для других таблиц не изменяем, поскольку обычно в этом нет необходимости

IPv6


  • выводим список всех правил и цепочек всех таблиц
  • ip6tables --table filter --list-rules
    ip6tables --table nat --list-rules
    ip6tables --table mangle --list-rules
    ip6tables --table raw --list-rules
    ip6tables --table security --list-rules
  • удаляем все созданные автоматически правила
  • ip6tables --table filter --flush
    ip6tables --table nat --flush
    ip6tables --table mangle --flush
    ip6tables --table raw --flush
    ip6tables --table security --flush
  • удаляем все созданные автоматически пользовательские цепочки
  • ip6tables --table filter --delete-chain
    ip6tables --table nat --delete-chain
    ip6tables --table mangle --delete-chain
    ip6tables --table raw --delete-chain
    ip6tables --table security --delete-chain
  • устанавливаем для каждой стандартной цепочки правила по умолчанию
  • ip6tables --policy INPUT DROP
    ip6tables --policy FORWARD DROP
    ip6tables --policy OUTPUT DROP
  • Замечание: правила по умолчанию для других таблиц не изменяем, поскольку обычно в этом нет необходимости

Добавить комментарий