![Как заблокировать все исходящие соединения?](https://rvso.com/image/1452893/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D0%B5%20%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%3F.png)
Мне нужно заблокировать мой сервер отинициирующийлюбые подключения к удаленному серверу.
Однако я по-прежнему хочу, чтобы сервер мог отвечать на соединения, инициированные через подключенных клиентов.
Другими словами, я хочу, чтобы другие могли подключаться к серверу, но чтобы сервер не мог инициировать удаленные подключения к другим серверам.
Как мне это сделать?
Я использую 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. Вы можете добиться этого двумя способами:
Сделайте соответствия более сложными. Подойдет для одного или двух элементов «белого списка». Пример:
# Only forbid non-UDP traffic iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
Добавление правил, которые соответствуют некоторым желаемым службам, которые разрешено инициировать с локального хоста с целью "-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.