Как закрыть порт 80 на андроид
Перейти к содержимому

Как закрыть порт 80 на андроид

  • автор:

Как закрыть порт 80 на андроид

Как использовать 80 порт (Root)

Устройство или ОС, прошивка: Все устройства

Android запрещает непривелегированным приложениям получать 80 порт (стандартный для веб-сервера), поэтому мы просто перенаправляем любые поступающие на 80 порт на тот, который мы указываем в настройках программы. Нужен рут!

su -c «iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port [нужный порт, к примеру 8888]»

Как закрыть порт iptables

Серверы и компьютеры, подключенные к интернету подвержены атакам и сканированию различных скриптов, программ и злоумышленников. А поскольку известно, что во всех системах могут быть уязвимости, то лучше, чтобы извне было видно минимум портов.

Некоторые порты должны быть видны постоянно, например, порт веб-сервера, другие используются только системными администраторами, а еще одни, вообще, должны быть доступны только локально. Несмотря на то что все сервисы имеют методы авторизации, и не позволят подключиться кому попало, они могут быть уязвимы, поэтому все лишнее лучше закрыть. В этой статье мы рассмотрим как закрыть порт iptables. Мы закроем нужные порты полностью, а также сделаем некоторые из них доступными на время, после попытки подключения к определенному порту.

Как закрыть порт Iptables

В этой статье я не стану подробно рассматривать все возможности Iptables, виды цепочек и как работает эта служба. Все это мы рассмотрели в статье настройка Iptables для начинающих. Вместо этого, перейдем ближе к делу. Чтобы заблокировать порт нам сначала нужно понять какие порты открыты в Linux и за что они отвечают. Чтобы посмотреть какие порты слушаются локально, можно использовать утилиту netstat:

sudo netstat -ntulp

Для анализа портов, доступных извне используется программа nmap:

Как видите, извне у нас, кроме стандартных портов веб-сервера, доступны mysql, ftp, dns и другие сервисы. Некоторые из них не должны быть доступны публично. Это не критично, но и нежелательно. Мы можем очень просто закрыть такие порты с помощью iptables. Общий синтаксис команды для блокировки порта будет выглядеть вот так:

$ iptables -A INPUT -p tcp —dport номер_порта -j DROP

Например, если мы хотим заблокировать порт iptables mysql, то необходимо выполнить:

sudo iptables -A INPUT -p tcp —dport 3306 -j DROP

Можно закрыть порт для определенного интерфейса, например, eth1:

sudo iptables -A INPUT -i eth1 -p tcp —dport 3306 -j DROP

Или даже для ip и целой подсети. Например, закрыть все подключения к порту 22 SSH кроме IP адреса 1.2.3.4:

sudo iptables -A INPUT -i eth1 -p tcp -s !1.2.3.4 —dport 22 -j DROP

Здесь знак восклицания означает инверсию, то есть применить ко всем кроме этого. Можно убрать этот знак и указать только IP, к которым нужно применить запрет. Мы рассмотрели как закрыть порт iptables в цепочке INPUT, которая отвечает за входящие соединения, это более применимо к серверам. Но что, если нужно закрыть подключение к удаленному порту из этого компьютера или нашей сети? Для этого существует цепочка OUTPUT.

Например, заблокируем попытки отправки почты подключением к любой машине по порту 25:

sudo iptables -A OUTPUT -p tcp —dport 25 -j DROP

Также, как и раньше, вы можете указать исходящий сетевой интерфейс, только теперь он указывается опцией -o:

sudo iptables -A OUTPUT -o eth1 -p tcp —dport 25 -j DROP

После того как вы завершите с настройкой портов нужно сохранить все созданные правила, чтобы они остались активными даже после перезагрузки. Для этого выполните:

Чтобы посмотреть текущие правила для каждой из цепочек выполните:

sudo iptables -L -n -v

Такая команда покажет все правила, а если вы хотите только информацию о заблокированных портах, выполните:

sudo iptables -L -n -v | grep -i DROP

Очистить все правила в случае возникновения проблем можно командой:

sudo iptables -F

Закрыть порты iptables, кроме разрешенных

По умолчанию политика для цепочек INPUT и OUTPUT — разрешать все подключения, а уже с помощью правил мы указываем какие подключения стоит запретить. Но если вы хотите закрыть все порты кроме разрешенных iptables. То нужно поступить по-другому. Мы поменяем политику по умолчанию, так чтобы она запрещала все и разрешим только доступ к нужным портам.

Например, меняем политику для цепочки INPUT:

sudo iptables -P INPUT DROP

Затем разрешаем все входящие соединения от локального интерфейса:

sudo iptables -A INPUT -i lo -j ACCEPT

Затем разрешаем доступ к портам 80 и 22:

sudo iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT
$ sudo iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT

Как скрыть порт iptables?

Закрыть порт, это очень хорошо, но что если он нужен нам открытым и желательно, чтобы для других этот же порт был недоступен. Существует такая технология, как Port Knocking, которая позволяет открывать нужный порт только для определенного ip адреса и только после обращения его к нужному порту. Например, нам нужно защитить SSH от перебора паролей и несанкционированного доступа. Для этого все пакеты, которые будут приходить на порт 22, 111 и 112 мы будем перенаправлять в цепочку SSH.

Как вы уже догадались, порт 22 нам непосредственно нужен, на порты 111 и 112 будут включать его и отключать соответственно. Когда пользователь обратится к порту 111 мы укажем системе, что нужно присвоить всем его пакетам имя ssh, при обращении к порту 112 уберем этот флаг. А если пользователь решит зайти на 22 порт, то проверим присвоено ли этому пакету имя SSH, если да, то пропустим, в противном случае — отбросим.

Сначала создаем цепочку SSH:

sudo iptables -N SSH

sudo iptables -A INPUT -p tcp —dport 22 -j SSH
$ sudo iptables -A INPUT -p tcp —dport 111 -j SSH
$ sudo iptables -A INPUT -p tcp —dport 112 -j SSH

При обращении к порту 111 присваиваем IP адресу имя, сам пакет дальше не пускаем:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 111 -m recent —set —name SSH —rsource -j DROP

При обращении к 112 убираем имя у IP:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 112 -m recent —remove —name SSH —rsource -j DROP

И нам осталось только проверить имеет ли наш пакет, который пытается обратиться к 22 порту имя SSH и если да, то мы его одобряем:

sudo iptables -A SSH -p tcp -m state —state NEW -m tcp —dport 22 -m recent —rcheck —name SSH —rsource -j ACCEPT

Вот и все. Теперь для того чтобы открыть наш SSH порт будет достаточно попытаться подключиться к порту 111 с помощью telnet. Утилита сообщит, что произошла ошибка во время подключения, поскольку мы отбросили пакет:

telnet ip_адрес 111

Но зато теперь вы можете получить доступ к сервису SSH на порту 22. Чтобы снова закрыть порт выполните:

telnet ip_адрес 112

Даже при открытии, этот порт доступен только вашему ip адресу и больше никому другому. Но нужно заметить, что это не панацея. Кто-либо может случайно запросить порт, который предназначен для активации, и таким образом, открыть себе доступ к службе SSH. Так что надежные пароли и ключи шифрования это не отменяет.

Выводы

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

Как открыть порты на Андроид: несколько популярных способов

Открыть порты на Android возможно, но не всегда целесообразно. А если вы являетесь обладателем Android — смартфона, то вас , скорее , должен волновать вопрос, как закрыть порты на Андроид. Чуть ниже объясняем , почему.

Для чего нужно закрыть порты на Андроид?

  • планшетах;
  • телевизорах;
  • приставках и т.д.

Как узнать , какие порты открыты на вашем устройстве Android?

  1. У вас должна быть создана новая точка доступа WiFi на вашем устройстве.
  2. Вторым шагом будет подключение к этой точке вашего компьютера.
  3. Нужно использовать команды: ifconfig и/или ipconfig в консоли, эти команды помогут узнать IP адрес вашего устройства.
  4. Загрузите сканер безопасности nmap с сайта nmap.org.
  5. Воспользуйтесь следующей командой в сканере: nmap -sS -Pn -p- your_phone_ip_adress.

Как обезопасить свое устройство Андроид?

  1. Брандмауэр без ROOT. Это один из лучших брандмауэров для Android — устройств. Очень простой в использовании, не требует root-прав для работы на устройстве. Очень широкий список фильтрации трафика по хосту, порту, домену и т.д.
  2. Android Firewall +. Требуется доступ к устройству с рут-правами, поэтому , если у вас есть такой доступ, можете смело использовать этот. Он также позволяет осуществлять контроль трафика по различным критериям, позволяет открывать и закрывать порты на Андроид и предлагает набор интересных «плюшек».
  3. NetPatch Firewall. Он несколько отличается от первых двух фаер в о л ов. У него присутствуют их основные функции, однако из собственных можно отметить: создание доменов и группы IP, блокировка определенных IP, блокировка или настройка Wifi для разных приложений отдельно.
  4. InternetGuard Data Saver Firewall — это еще один из самых крутых брандмауэров для Android — устройств. Не зря у него один из самых высоких рейтингов от пользователей. Очень непохожий пользовательский интерфейс его существенно выделяет среди конкурентов. По своей функциональности он не уступает никому из этого списка.
  5. VPN Безопасный брандмауэр. Ему н ен ужны рут-права для блокировки / разблокировки приложений или чтобы открыть или закрыть порты на Android — устройстве. Он является полностью бесплатным продуктом, но тем не менее по функционалу не уступает свои м платным собратьям.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Как можно отключить доступ по http и закрыть 80-й порт на Apache (Linux)?

И в ситуации когда nginx висит на 80 порту, а Apache на 8080, как закрыть порт Apache для всех извне, оставив его только для nginx?

Решения вопроса 1

Если есть вероятность, что кто-нибудь забудет про HTTPS и зайдет, просто введя адрес сайта, то из любви к пользователям имеет смысл сделать переадресацию.

А вообще:
1. Правим порты в /etc/apache2/ports.conf:

#Listen 80

2. правим виртхосты в /etc/apache2/sites-available:

Ответ написан более трёх лет назад
Нравится 2 2 комментария
Если в конфиг-файлах может быть накриворучено, то неплохо бы проверить:

grep -ir * Listen grep -r * 80

oh shi-
grep -r 80 /etc/apache2/*
Ответы на вопрос 4
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

оставьте порт 80 открытым, но сделайте безусловный редирект:
Redirect permanent / https://your.domain.ru/
Так будет удобнее, не нужно будет набирать https:// перед адресом.

Ответ написан более трёх лет назад
Нравится 1 4 комментария
CyMpak @CyMpak Автор вопроса

Тоже об этом думал, только проблема в том, что собирается внутренний сервер под svn и redmine. Поэтому он скорее будет доступен по ip. По крайне мере лучше рассчитывать только на это.

И в ситуации когда nginx висит на 80 порту, а Apache на 8080, как закрыть порт Apache для всех извне, оставив его только для nginx?

Тут проще. Директиву listen в apache изменяем на
listen 127.0.0.1:80
и в энджи меняем директиву

сорри, криво отправилось
Директиву listen в apache изменяем на
listen 127.0.0.1:8080
и в энджи меняем директиву:

proxy_pass http://localhost:8080;

проблема в том, что собирается внутренний сервер под svn и redmine.

Тогда более тонко, при помощи mod_rewrite:
RewriteEngine On
RewriteRule ^http://your.domain.ru/ https://your.domain.ru/ [R]
по ip не будет срабатывать.

И в ситуации когда nginx висит на 80 порту, а Apache на 8080, как закрыть порт Apache для всех извне, оставив его только для nginx?

С помощью iptables можно сделать так:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp —dport 8080 -j DROP

Ответ написан более трёх лет назад
Нравится 1 3 комментария
зачем? Просто апачу говорим
listen 127.0.0.1:8080
Да, так проще. Но мы же знаем толк в извращениях 🙂

можно сделать прозрачный редирект вместо дропа
iptables -A INPUT -p tcp -m tcp —dport 8080 -j REDIRECT —to-ports НУЖНЫЙ_ПОРТ

Если хостинг на ispmanager, то добавить порт 8080 в раздел брэндмауэр/файервол.
Если нет, то самому гуглить iptables, или что-то другое из того, что стоит на сервере. Это в случае nginx с 8080.
Для всех остальных случаев, как правильно заметил amario, # listen 80

Ответ написан более трёх лет назад

То есть найти в httpd.conf строку Listen 80 или Listen *:80 или Listen [ipadress]:80 и закомментировать её.

Все бы хорошо, но вторая подзадача звучит, как «закрыть 80-й порт на Apache (Linux)», а не «закрыть 80-й порт в файрволле (Linux)».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *