Как заблокировать все исходящие соединения?

Как заблокировать все исходящие соединения?

Мне нужно заблокировать мой сервер отинициирующийлюбые подключения к удаленному серверу.

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

Другими словами, я хочу, чтобы другие могли подключаться к серверу, но чтобы сервер не мог инициировать удаленные подключения к другим серверам.

Как мне это сделать?

Я использую Ubuntu.

решение1

Блокировка всех исходящих соединений — плохая идея, поскольку это помешает вам устанавливать программное обеспечение из онлайн-репозиториев, выполнять поиск DNS (что было бы ужасно в большинстве сред), обновлять часы с помощью NTP и т. д. В любом случае, если вы все еще хотите это сделать, попробуйте следующее:

  # Drop all connections initiated from this host
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP
  # Additionally, log the event (optional)
iptables -t filter -I OUTPUT 1 -m state --state NEW -j LOG --log-level warning \
  --log-prefix "Attempted to initiate a connection from a local process" \
  --log-uid

Вы можете сделать правила умнее, разрешив определенный трафик, например DNS. Вы можете добиться этого двумя способами:

  1. Сделайте соответствия более сложными. Подойдет для одного или двух элементов «белого списка». Пример:

      # Only forbid non-UDP traffic
    iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
    
  2. Добавление правил, которые соответствуют некоторым желаемым службам, которые разрешено инициировать с локального хоста с целью "-j ACCEPT". Пример:

      # Run this after the "DROP" rule to allow connection to ports
      #+ 80 and 443, mostly used for HTTP and HTTPS traffic
    iptables -t filter -I OUTPUT 1 -p udp -m multiport --ports 80,443 -j ACCEPT
    

решение2

Встроенный брандмауэр Ubuntu — это ufw. Вы можете управлять им с помощью графического интерфейса Gufw. В главной панели Gufw просто нажмите Outgoing:Deny.

Связанный контент