Как заблокировать все порты, кроме некоторых?

Я пытаюсь использовать iptables но я не понимаю, понимая документацию, даже если я дважды заперся на своем сервере, пытаясь его реализовать.

Это простые правила, которые я хочу реализовать:

  • Используйте eth interface для подключения к маршрутизатору и wlan для Интернета
  • Добавить один ключ к сертификатам CA из автоматизированного сценария
  • ограничение скорости загрузки на основе использования сети
  • Устанавливает ли компьютер установки на производительность?
  • Отобразить диалоговое окно из среды pam_exec при входе в систему?
  • debian-installer: прогресс в настройке отчета
    • Разрешать порты 80, 6667 и 6697 всем
    • Разрешить порт 22 только для моего IP, например 10.10.10.10

    Пожалуйста, кто-нибудь может помочь мне реализовать эти простые правила, не заперев себя?

  • Локальный порт недоступен с открытым IP-адресом
  • Как работает NAT-рефлекс (NAT loopback)?
  • Освобождение удаленного, но открытого файла журнала
  • Как настроить уровень запуска 3 в Debian 8?
  • Как я могу заставить systemd использовать qingy в качестве моей программы tty по умолчанию вместо agetty (debian jessie)?
  • Сделать пользовательский файл iso debian
  • 3 Solutions collect form web for “Как заблокировать все порты, кроме некоторых?”

    Используйте таблицу фильтров в iptables и добавьте правило, которое вы хотите сначала очистить все правила в таблице фильтров в iptables :

     sudo iptables -t filter -F 

    затем добавьте правило, чтобы разрешить соединение ESTABLISHED, RELATED:

     sudo iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

    то для разрешения портов 80, 6667 и 6697 для tcp каждому добавить:

     sudo iptables -t filter -A INPUT -p tcp -m multiports --dports 80,6667,6697 -j ACCEPT 

    и для разрешения порта 22 только для вашего ip add:

     sudo iptables -t filter -A INPUT -s <your ip address> -p tcp --dport 22 -J ACCEPT 

    затем заблокировать что-нибудь еще:

     sudo iptables -t filter -A INPUT -j DROP 

    СДЕЛАННЫЙ.

    Я бы советовал не играть с iptables напрямую, если вы не готовы изучать основы сетевого взаимодействия, TCP (ICMP / UDP / SCTP …) / IP, сетевой фильтр Linux и как правильно выполнить брандмауэр.

    Здесь, поскольку вы находитесь на Debian, я бы установил что-то вроде ufw , очень простой уровень управления поверх iptables .

    Он устанавливает политику ACCEPT по умолчанию для исходящего трафика и DROP для входящего или пересылающего трафика. Он позаботится о том, чтобы не стрелять в ногу, не блокируя необходимость использования типов ICMP / DHCP / широковещательного / многоадресного трафика и обрабатывая как IPv4, так и IPv6 по мере необходимости.

    Тогда вам остается только пробивать дыры для тех услуг, которые вы хотите. Некоторые пакеты также будут устанавливать файлы в /etc/ufw/applications.d/ чтобы помочь вам пробивать отверстие приложением, вместо того, чтобы вручную указывать порты (вы также можете создавать свои собственные).

     ufw app list 

    дает вам список поддерживаемых приложений. Тогда вы можете сделать:

     ufw allow from 10.10.10.10 app OpenSSH ufw allow from any app WWW ufw allow ircd/tcp # by service name (from /etc/services...) ufw allow 6697/tcp # by explicit port number ufw enable 

    Вы можете запустить iptables-save чтобы узнать, какие правила он создал. Он также настроит некоторые настройки IP-стека. См. Также дополнительную конфигурацию в /etc/ufw .

    Если вам интересно узнать, как использовать iptables, я бы рекомендовал не пытаться настроить его на сервере, а вместо этого устанавливать iptables на локальном компьютере (например, виртуальную машину или ваш ноутбук) и экспериментировать с ней там. Таким образом, если вы допустили ошибку, вы не собираетесь блокировать себя из своей системы.

    Лично, даже после пятнадцати лет администрирования серверов Linux и ручного написания сценариев iptables, я никогда не обновляю конфигурацию брандмауэра, если у меня нет возможности немедленно перезагрузить сервер, если я ошибаюсь (будь то через систему KVM, панель управления хостера , или путем физической ходьбы до машины). В конце концов, ошибки всегда возможны, и вы не хотите случайно блокировать себя из своего сервера в течение семи часов из-за простой опечатки.

    Linux и Unix - лучшая ОС в мире.