Разрешить доступ к Ubuntu Server только с определенных IP-адресов

Как я могу разрешить только свой собственный ip для входа на мой сервер Ubuntu? Вчера получил 1500 нежелательных неудачных попыток входа в систему.

Разрешить только мой собственный IP, может быть самым безопасным от хакеров? Я использую Postfix только для отправки, так что не нужно разрешать любые входящие соединения.

2 ответа

Решение

Если вы не используете (или не хотите использовать) ufw а вместо этого нужна iptables Ответ, вот суть того, как это сделать. Обратите внимание, что вы также должны адаптироваться к IPv4 и IPv6.


IPv4

Сначала изучите ваш iptables правила (iptables -L -n). При условии установки по умолчанию, тогда у вас не будет никаких правил.

iptables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT это общий синтаксис для добавления правила в конец INPUT в таблице указано, что "я хочу разрешить исходному IP-адресу (и диапазону IP-адресов, если предоставляется суффикс CIDR - это не обязательно) доступ к моему серверу при поступлении запросов на порт PORTNUM через TCP". Если вы хотите разрешить только один IP-адрес, пропустите /CIDR расставаться с SOURCEIP,

Если у вас есть какие-либо правила в таблице INPUT для запрета доступа (в конце), вам нужно будет использовать iptables -I INPUT RULENUMBER (где RULENUMBER номер строки в INPUT таблица, куда вы хотите вставить это правило).

Убедитесь, что вы также добавили такие правила:
iptables -A INPUT -i lo -j ACCEPT - Принять что-нибудь через петлю localhost (127.0.0.1 и т. Д.)
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - Принимать трафик, связанный с уже установленными соединениями (необходим для обеспечения обратной связи с вашим сервером и вашим удаленным клиентом)

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


IPv6

Сначала изучите ваш ip6tables правила (ip6tables -L -n). При условии установки по умолчанию, тогда у вас не будет никаких правил.

ip6tables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT это общий синтаксис для добавления правила в конец INPUT в таблице указано, что "я хочу разрешить исходному IP-адресу (и диапазону IP-адресов, если предоставляется суффикс CIDR - это не обязательно) доступ к моему серверу при поступлении запросов на порт PORTNUM через TCP". Если вы хотите разрешить только один IP-адрес, пропустите /CIDR расставаться с SOURCEIP,

Если у вас есть какие-либо правила в таблице INPUT для запрета доступа (в конце), вам нужно будет использовать ip6tables -I INPUT RULENUMBER (где RULENUMBER номер строки в INPUT таблица, куда вы хотите вставить это правило).

Убедитесь, что вы также добавили такие правила:
ip6tables -A INPUT -i lo -j ACCEPT - Принять что-нибудь через петлю localhost (127.0.0.1 и т. Д.)
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - Принимать трафик, связанный с уже установленными соединениями (необходим для обеспечения обратной связи с вашим сервером и вашим удаленным клиентом)

Кроме того, с IPv6 вам необходимо принимать практически каждый пакет ICMPv6, поскольку он гораздо более необходим, чем в IPv4. Это позволит достичь этого:
ip6tables -A INPUT -p ipv6-icmp -j ACCPET

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


Сделайте эти правила постоянными (это нужно только решениям `iptables`)

Время настойчиво придерживаться правил. Позволяет установить iptables-persistent, apt-get install iptables-persistent,

Инсталлятор спросит, хотите ли вы сохранить текущие правила. Скажите "да" для приглашений IPv4 и IPv6. Набор правил, который мы только что "добавили" или создали, теперь будут постоянно доступны.

(Если вы используете ufw вместо iptablesВам не нужно устанавливать этот пакет)


В то время как ufw будет автоматически управлять набором правил, чтобы убедиться, что он в правильном порядке, iptables это способ 'sysadmin' для продвинутого межсетевого экрана. UFW просто выполняет простые правила и функции - сложные, с которыми вам приходится иметь дело. iptables или добавить вручную в файлы конфигурации для ufw с iptables синтаксис.

Ты можешь использовать ufw

Когда вы включаете ufw с любыми правилами, чтобы разрешить трафик все находится в состоянии отказа.

sudo ufw enable

с помощью этой команды вы включите Ubuntu Firewall

Чтобы увидеть статус использования

sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
69                         ALLOW       Anywhere
53                         ALLOW       Anywhere
22                         ALLOW       213.xxx.xxx.xxx
80/tcp                     ALLOW       194.247.xxx.xxx
21/tcp                     ALLOW       194.247.xxx.xxx
69 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)

Эти правила принимают любые port 69, любой на port 53ssh от 213.xxx.xxx.xxx, 80 а также 21 от 194.247.xxx.xxx... и запретить любой другой входящий трафик

Полная команда для правила в UFW

sudo ufw [--dry-run] [delete] [insert NUM]  allow|deny|reject|limit  [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]][to ADDRESS [port PORT]]

На основе этого шаблона правила вы можете allow from xxx.xxx.xxx.xxx на port 80 с этим правилом

для конкретного хоста

sudo ufw allow proto tcp from xxx.xxx.xxx.xxx to any port 80

если вы хотите разрешить любому доступ к вашему веб-серверу

sudo ufw allow proto tcp from any to any port 80

если вы хотите разрешить доступ из определенной сети

sudo ufw allow proto tcp from xxx.xxx.xxx.xxx/yy to any port 80

где

xxx.xxx.xxx.xxx - представлять сеть ip

yy - представлять маску сети

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