Можно ли заблокировать все входящие IP-адреса, разрешив доступ только одному или двум IP-адресам на сервере Ubuntu?
Блокирование всего дюйм/с кроме 1 или 2:
sudo /sbin/iptables -I INPUT -j DROP
sudo /sbin/iptables -I INPUT -s xxx.xxx.x.xxx -j ACCEPT
sudo /sbin/iptables -I INPUT -s xxx.xxx.x.yyy -j ACCEPT
первые блоки команды весь IP; второе и третье говорят компьютеру принимать соединения от определенного IP.
, Если Вы хотите делать эти изменения постоянными после выполнения команд выше, выполняют следующее.
Установка, iptables-персистентная
sudo apt-get install iptables-persistent
, Сохраняют Ваши изменения iptables в файле
iptables-save > /etc/iptables/rules.v4
... И это должно работать!
К сожалению, другой ответ здесь не учитывает три важных случая:
localhost
и т. Д. Через адаптер lo
) В большинстве жилых или средних сетей нет необходимости в №3, но №1 и №2 имеют решающее значение - №1, поэтому трафик в систему из системы работает (подумайте о подключениях localhost для локальных служб или sudo
] для поиска собственного внутреннего имени хоста) и №2, потому что вам нужно иметь возможность получать трафик, связанный с установленными вами исходящими соединениями, чтобы получать ответы DNS, данные пакетов HTTP / HTTPS для ваших установок или обновлений пакетов и т. д.
Итак, решение, которое я предлагаю, заключается в следующем:
Если у вас уже есть какие-либо правила iptables
, удалите их с помощью sudo iptables -F
, поэтому мы начнем с «чистый лист», прежде чем делать это.
# This first command is OK, setting INPUT to default ACCEPT becase
# we will force all unpermitted traffic to DROP at the end of this ruleset.
sudo iptables -P INPUT ACCEPT
sudo iptables -A INPUT -i lo -m comment --comment "Accept localhost, computer to itself" -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "Accept traffic related to established connections and this system's outgoing traffic" -j ACCEPT
sudo iptables -A INPUT -s a.b.c.d --comment "Accept inbound connections from a.b.c.d" -j ACCEPT
sudo iptables -A INPUT -s w.x.y.z --comment "Accept inbound connections from w.x.y.z" -j ACCEPT
# Repeat previous line as many times as you need to in order to accept traffic
# that you want to accept, but also add a line for the IP address you are
# currently connected to the system from if a remote SSH session, otherwise
# you may lock yourself out.
sudo iptables -A INPUT -m comment --comment "Drop all other traffic inbound" -j DROP
Это сделает то, что пытался сделать anonymous2, но также позволит вашему компьютеру по-прежнему работать с Интернетом и позволит вашей системе функционировать должным образом. Это также позволяет вашей системе продолжать работать до тех пор, пока вы не добавите правило DROP в самом конце (не добавляйте это правило, пока вы также не внесете в белый список IP-адрес, с которого вы получаете доступ, который ДОЛЖЕН быть одним из правил РАЗРЕШЕНИЯ выше, и вы можете добавить МНОЖЕСТВО
. Обязательно установите iptables-persistent
и сохраните эти правила в /etc/iptables/rules.v4
, иначе эти правила не сохранятся.