Статья рассказывает о том, как выполнить «минимальную» настройку 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
  • Замечание: правила по умолчанию для других таблиц не изменяем, поскольку обычно в этом нет необходимости

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