Разрешить доступ к 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 53
ssh от 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
- представлять маску сети