Как запретить IP-адрес от подключения к моей системе?

Есть ли способ запретить IP-адрес от подключения к моему ПК?

Есть ли способ запретить IP-подключение от подключения к определенному порту?

5
задан 28 January 2014 в 19:14

4 ответа

Прежде чем мы пойдем дальше, позволяет, делают примечание пары вещей.

  1. У большинства Интернета нет статических IP-адресов. Поэтому прокси, Скалистая вершина, и т.д. могут использоваться, чтобы попытаться обойти блоки единственного IP.
  2. Обычно более безопасно сделать инверсию, заблокировать весь трафик в порте и принять только определенные адреса. Это не выполнимо в большинстве стоящих с сетью ситуаций, но это - все еще общепринятая практика безопасности.
  3. Мы не делаем никакого просачивания здесь в Интернете в целом - мы не принимаем во внимание точку № 1 с ниже ответа, и необходимо рассмотреть вероятность, что, если Вы блокируете один IP, они найдут путь вокруг этого и получат доступ к другому IP и продолжат нападать.

Прежде чем любой прокомментирует это ufw менее сложно, чем iptables, Я использовал iptables здесь, потому что OP ответил на это использование вопроса iptables команды, которые привели меня предполагать, что они хотели ответ, который имел iptables команды и нет ufw команды /


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

Чтобы сделать это, мы должны настроить iptables И ip6tables к трафику блока по умолчанию, кроме трафика Вы инициировали из своего компьютера (такого как веб-трафик из Firefox, и т.д., если Вы находитесь в системе или a wget поток, чтобы загрузить программное обеспечение или позволить apt обновить пакеты). Мы также должны позволить Вам мочь добавить приемлемые правила для трафика, Вы ХОТИТЕ иметь достижение Вашей системы.

Для этих правил быть персистентными, таким образом, они работают все время над каждой перезагрузкой, необходимо установить iptables-persistent пакет, который позволит Вам сохранять эти правила и затем автоматически загружать их при начальной загрузке системы. Выполненный sudo apt-get install iptables-persistent во-первых, затем добавьте свои правила. Мы удостоверимся, что обновили ruleset, который загружается при начальной загрузке после того, как мы создали набор правила.

Принятие мы запустили с пробела iptables и ip6tables установка (который является значением по умолчанию в Ubuntu), необходимо будет добавить набор правил. Я запущу с iptables, затем мы будем работать с ip6tables.


iptables

Следующее является основным ruleset, который ограничит все данные и пакеты, пытающиеся достигнуть Вашей системы, независимо от того, какое соединение Вы идете:

Примите localhost данные
iptables -A INPUT -i lo -j ACCEPT - примите весь трафик в LocalHost, который является трафиком, который локален для в компьютере только. Это необходимо, чтобы Ваш компьютер функционировал правильно.

Примите данные, связанные с исходящими соединениями, которые инициировала Ваша система
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - примите весь трафик, который связан с соединениями, входящими в исходящее направление, включая ответы от удаленных серверов (таких как способные зеркала или любой веб-сайт, который Вы посещаете).

Правила ICMP
Обратите внимание, что я не отфильтровываю пакеты ICMP, поскольку они обычно в порядке для принятия, если Вы не параноики. Если Вы действительно хотите заблокировать ICMP, то необходимо использовать эти правила принять некоторые критические пакеты:

Примите "время превышенный" ICMP
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT - примите "Время Превышенные" пакеты, который необходим для определенного ограниченного по времени установления соединения.

Примите "целевой недостижимый" ICMP
iptables -A INPUT -p icmp -m icmp --icmp-type 3/4 -j ACCEPT - примите "Целевые Недостижимые" ответы ICMP от удаленных серверов. Это позволяет системе работать правильно с удаленными сайтами, которых Вы не можете добраться.

Примите запросы/ответы PING ("Эхо" ICMP)
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT - примите "Эхо" (иначе "Ping") запросы. Это хорошо для имения в наличии, потому что соединение системы с определенными сайтами и/или услуги могут потребовать PING для активного запроса.

Создайте iptables таблица для содержания приемлемых транспортных портов/правил
iptables -N acceptable_traffic
iptables -A INPUT -j acceptable_traffic

Путем выполнения этого у Вас есть таблица, куда можно поместить правила для того, какой трафик Вы хотите принять в своей системе от внешних соединений. Если бы у Вас есть сервер SSH, Вы сделали бы iptables -A acceptable_traffic -p tcp --dport 22 -j ACCEPT (или замените 22 портом сервера SSH). Вы добавили бы другие приемлемые правила передачи трафика здесь также.

Отклоните весь трафик, для которого нет никакого набора правил
Существует две опции для этого.

iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable - Это - первая опция, и что я рассматриваю более нормальным способом заблокировать трафик, когда человек попытается достигнуть сервера, они получат "Хост Недостижимый" пакет ICMP, который затем завершает попытку подключения.

iptables -A INPUT -j DROP - Это - вторая опция. Это автоматически отбросит все входящие пакеты, которые это отправляется в Вашу систему, которые не соответствуют ПРИНЯТЬ правилу. Это означает, что пакеты полностью проигнорированы. Попытки подключения от удаленного местоположения просто испытают таймаут самостоятельно без ответа от системы, подключаемой с.


ip6tables

Как iptables для IPv4 необходимо настроить ip6tables для IPv6. Правила подобны, но отличаются. *Если у Вас нет IPv6 в Вашей системе, Вам не, вероятно, придется волноваться об этом, однако имение правил в системе не причинит боль.

Примите localhost данные
ip6tables -A INPUT -i lo -j ACCEPT - примите весь трафик в LocalHost, который является трафиком, который локален для в компьютере только. Это необходимо, чтобы Ваш компьютер функционировал правильно.

Примите данные, связанные с исходящими соединениями, которые инициировала Ваша система
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - примите весь трафик, который связан с соединениями, входящими в исходящее направление, включая ответы от удаленных серверов (таких как способные зеркала или любой веб-сайт, который Вы посещаете).

Правила ICMPv6
ip6tables -A INPUT -p icmpv6 -j ACCEPT - Я не блокирую IPv6 пакеты ICMP, потому что в отличие от IPv4, существует еще миллиард IPv6 пакеты ICMP, которые необходимо принять (т.е. все они). С этой целью можно сделать это для принятия всех их.

Создайте ip6tables таблица для содержания приемлемых транспортных портов/правил
ip6tables -N acceptable_traffic
ip6tables -A INPUT -j acceptable_traffic

Путем выполнения этого у Вас есть таблица, куда можно поместить правила для того, какой трафик Вы хотите принять в своей системе от внешних соединений. Если бы у Вас есть сервер SSH, Вы сделали бы ip6tables -A acceptable_traffic -p tcp --dport 22 -j ACCEPT (или замените 22 портом сервера SSH). Вы добавили бы другие приемлемые правила передачи трафика здесь также.

Отклоните весь трафик, для которого нет никакого набора правил
Существует две опции для этого.

ip6tables -A INPUT -j REJECT --reject-with icmp6-addr-unreachable - Это - первая опция, и что я рассматриваю более нормальным способом заблокировать трафик, когда человек попытается достигнуть сервера, они получат "Адрес Недостижимый" пакет ICMPv6, который затем завершает попытку подключения.

ip6tables -A INPUT -j DROP - Это - вторая опция. Это автоматически отбросит все входящие пакеты, которые это отправляется в Вашу систему, которые не соответствуют ПРИНЯТЬ правилу. Это означает, что пакеты полностью проигнорированы. Попытки подключения от удаленного местоположения просто испытают таймаут самостоятельно без ответа от системы, подключаемой с.


Сохраните все правила

Так как я сказал Вам ранее устанавливать iptables-persistent пакет, необходимо будет на самом деле сохранить правила, таким образом, они смогут быть загружены позже.

Примечание: Этот набор команд на самом деле бросает Вас в оболочку суперпользователя. ВЫ НЕ ДОЛЖНЫ ДЕЛАТЬ НИЧЕГО БОЛЬШЕ В ЭТОЙ ОБОЛОЧКЕ КРОМЕ ЭТИХ КОМАНД I СОСТОЯНИЙ ЗДЕСЬ!

Выполните следующие команды:

sudo -s
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
exit

Это сохранит правила, таким образом, они смогут быть загружены в каждой перезагрузке. ПРИ РЕДАКТИРОВАНИИ ПРАВИЛ ПОЗЖЕ НЕОБХОДИМО будет ПОВТОРНО ВЫПОЛНИТЬ ЭТИ КОМАНДЫ ДЛЯ СОХРАНЕНИЯ RULESETS.


Что, если я на самом деле хочу, чтобы список плохого дюйм/с заблокировался?

Мы можем все еще сделать это! Можно хотеть список блоков для 'плохого' трафика. Так, вот мое решение для этого, и как то, прежде чем я разделю его на два раздела, iptables и ip6tables.


iptables

Составьте таблицу для prohibited_traffic

Мы должны теперь создать a prohibited_traffic таблица. Вы добавите 'плохого дюйм/с' здесь. Мы затем должны вставить prohibited_traffic правило во Входную таблицу. (В примере ниже, я использую 2 для указания на местоположение числа правила для того, где мы вставляем это правило, которое исправляет его после правила, которое читает ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED:

iptables -N prohibited_traffic
iptables -I INPUT 2 -j prohibited_traffic

Добавьте правила заблокировать определенного дюйм/с

Теперь мы добавляем дюйм/с для блокирования к этому prohibited_traffic таблица. Вот шаблон:

iptables -A prohibited_traffic -s SourceIPAddress -j DROP

Замените 'SourceIPAddress' IP-адресом, который Вы хотите заблокировать. Если у Вас будет диапазон дюйм/с для блокирования, то необходимо будет взять 'диапазон' и определить диапазон CIDR, который содержит все IP-адреса, и затем используйте формат IPV4ADDRESS/cidr заблокировать тот диапазон CIDR, который включает дюйм/с. Блоки диапазона не могут быть сделаны без CIDR или добавляющий МНОГО дюйм/с один за другим.


ip6tables

Это почти идентично iptables

Составьте таблицу для prohibited_traffic

Мы должны теперь создать a prohibited_traffic таблица. Вы добавите 'плохого дюйм/с' здесь. Мы затем должны вставить prohibited_traffic правило во Входную таблицу. (В примере ниже, я использую 2 для указания на местоположение числа правила для того, где мы вставляем это правило, которое исправляет его после правила, которое читает ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED:

ip6tables -N prohibited_traffic
ip6tables -I INPUT 2 -j prohibited_traffic

Добавьте правила заблокировать определенного дюйм/с

Теперь мы добавляем дюйм/с для блокирования к этому prohibited_traffic таблица. Вот шаблон:

ip6tables -A prohibited_traffic -s SourceIPAddress -j DROP

Замените 'SourceIPAddress' IP-адресом, который Вы хотите заблокировать. Если у Вас будет диапазон дюйм/с для блокирования, то необходимо будет взять 'диапазон' и определить диапазон CIDR, который содержит все IP-адреса, и затем используйте формат IPV6ADDRESS/cidr заблокировать тот диапазон CIDR, который включает дюйм/с. Блоки диапазона не могут быть сделаны без CIDR или добавляющий МНОГО дюйм/с один за другим.

17
ответ дан 28 January 2014 в 19:14

Вы также можете использовать ufw, и IMO, это намного проще.

Чтобы запретить IP-адрес из любых соединений, используйте:

sudo ufw deny from <ip_address> to any  

Или для запрета доступа к определенному порту:

sudo ufw deny from <ip_address> to any port <some_port>  

или Вы можете указать протокол:

sudo ufw deny proto tcp from <ip_address> to any port <some_port>  

(заменив tcp на tcp или udp в зависимости от того, какой протокол вы хотите)

0
ответ дан 28 January 2014 в 19:14

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

Этот ответ полезен, если проблема в том, что вы видите повторную попытку входа в вашу систему через демон sshd (служба сервера SSH).

Примечание: согласно 14.04 поддержка denyhost была прекращена .

Новое решение заключается в использовании fail2ban. Он более мощный и простой в установке с конфигурацией по умолчанию. См. http://bodhizazen.com/Tutorials/SSH_security

старый ответ

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

Вы можете установить его из репозитория с помощью apt-get install denyhosts, и он просто работает «из коробки», автоматически блокируя на неделю любой хост, который пытается войти в систему на вашем компьютере и трижды завершается неудачей.

0
ответ дан 28 January 2014 в 19:14
iptables -A INPUT -s IP-ADDRESS -j DROP

Замените IP-АДРЕС на свой фактический IP-адрес. Например, , если вы хотите заблокировать IP-адрес 192.168.0.100 по какой-либо причине, введите команду следующим образом:

iptables -A INPUT -s 192.168.0.100 -j DROP

Если вы просто хотите заблокируйте доступ к одному порту из ip 192.168.0.100 к порту 80, затем введите команду:

iptables -A INPUT -s 192.168.0.100 -p tcp --destination-port 80 -j DROP
0
ответ дан 28 January 2014 в 19:14

Другие вопросы по тегам:

Похожие вопросы: