Мне было интересно, как лучше всего заблокировать доступ к серверу в Интернете, разрешив подключение к локальной сети. По сути, я хочу, чтобы сервер был доступен только по локальной сети. Какие IP-адреса, порты и т. Д. Я должен заблокировать?
Это действительно зависит от топологии вашей сети. Судя по вашему вопросу, похоже, вы хотите заблокировать исходящее соединение, а не просто фильтровать входящий.
Одна из самых простых вещей, которую вы могли бы сделать, - это создать правило брандмауэра, которое блокирует трафик на шлюз по умолчанию. Если у вас есть единственный шлюз по умолчанию, обеспечивающий доступ в Интернет, это не позволит им получить доступ извне.
Другой набор правил, который вы, возможно, захотите применить, - ОТКАЗАТЬ все, кроме RFC 1918 пространство.
Вот пример, который мог бы работать, если бы ваш шлюз был 192.168.1.1
iptables -A INPUT -s 192.168.1.1/32 -j DROP
iptables -A INPUT -d 192.168.1.1/32 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -d 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -d 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -s 172.16.0.0/12 -j ACCEPT
iptables -A INPUT -d 172.16.0.0/12 -j ACCEPT
Стоит отметить, что ваш вопрос без каких-либо дополнительных подробностей не позволит мне дать вам ответ, который, вероятно, будет соответствовать вашим потребностям в реальном мире. Полное отключение доступа к Интернету вызовет проблемы при попытке обновить программное обеспечение и т. Д.
Блокирование прямого доступа к шлюзу не гарантирует отсутствие исходящего доступа в Интернет. Другой сервер в сети может выступать в качестве шлюза, прокси и т. Д.