Защита доступа маршрутизатора

Есть некоторые возможности предоставить доступ к маршрутизатору (или любому ПК/Серверу):

  1. ничего не прошу: кто может установить подключение получает доступ к
  2. запрос имени пользователя и пароля для незащищенного соединения (например, telnet)
  3. задать имя пользователя и пароль по зашифрованному соединению (например, SSH) (например, следуя firstlogin)
  4. задать имя пользователя и просто “подпись” вместо “пароль” (например, SSH с подпись.идентификация)

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

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

Кроме того, пока злоумышленник имеет сетевой доступ к консоли, он всегда может запустить грубую атаку, чтобы узнать имя пользователя и пароль. Он не должен делать это сам: он может позволить его компьютер(ы) делать гадания. Чтобы сделать эту опцию невероятной или даже невозможной, вы можете:

  1. не предоставлять доступ из Интернета вообще, или ограничить его определенными IP-адресами или диапазонами IP-адресов
  2. by letting the SSH server dropbear and the web-Server uhttpd not listen on the external/WAN port
  3. блокируя входящие соединения на эти порты (TCP-порт 22, 80 и 443 по умолчанию) в брандмауэре
  4. сделать его труднее догадаться:
  5. не используйте имя пользователя “root”
  6. не использовать слабый пароль с 8 или менее символов
  7. не позволяйте SSH-серверу dropbear прослушивать порт по умолчанию (22)
  8. но с помощью комбинации
  9. имя пользователя отличается от “корня”
  10. сказать “пакет dropbear” слушать на случайный порт (должен быть >1024): система → Администрирование → например → пакет dropbear порт

SSH Port

  1. проверка подлинности открытого ключа. Ваш публичный ключ может быть указан в система → Управление → SSH-ключей. Старый путеводитель пакет dropbear SSH аутентификации по публичному ключу содержит подробную информацию о генерации пар ключей SSH, которые включают в себя открытый ключ(s). вы должны загрузить в конфигурацию.

SSH Keys

Если у вас есть внешний диск, вы можете шифрования.

  1. https://www.cipherdyne.org/fwknop//Fwknop (НОК Оператор брандмауэра) реализует схему авторизации под названием wр_один_пакет_авторизации (СПА). Этот способ авторизации по умолчанию-сбросить фильтр пакетов и libpcap. Спа-центр-это порт следующего поколения, стучащий. Например: он может открыть порт SSH на глобальной сети, но только в течение короткого периода времени, пока вы не можете установить новое подключение через этот порт.
  • Ознакомиться с подробными инструкциями по: Fwknop

  1. Ostiary, как и стук порта, добавляет дополнительный слой безопасности. Он может быть использован, чтобы просто запустить скрипт или удаленно (без доступа по SSH). Ознакомиться с подробными инструкциями по настройке сервера или клиента, перейдя на соответствующую ссылку ниже.
  1. Чтобы защитить открытые порты от атаки грубой силы, IP-адрес злоумышленника может быть запрещен через iptables конфигурации:
  1. Зависит от ситуации, вы можете использовать wр_система_предотвращения_вторжений, как wр_кроме_того_fail2ban или еще лучше реализовать свой собственный, основанные на “logtrigger”.

Пример, который добавляет пользователя с именем Николай:

opkg update
opkg install shadow-useradd
useradd nicolaus

Или добавить пользователя вручную (заботиться, что uid/gid (e.g.=1000) еще не используются!)

/etc/passwd: USER:x:1000:1000:GROUP:/mnt/usb:/bin/false
/etc/group: GROUP:x:1000:
/etc/shadow: USER:RANDOMSTUFWillBeUpdatedWithPasswd:16666:0:99999:7:::
passwd USER

Однако этот пользователь пока не может использовать ssh. Чтобы включить доступ к ssh, необходимо ввести пароль для этого пользователя, создать его домашнюю папку и, что самое главное, * * указать оболочку* * этого пользователя:

passwd nicolaus
mkdir /home
mkdir /home/nicolaus
chown nicolaus /home/nicolaus
vi /etc/passwd
   nicolaus:x:1000:1000:nicolaus:/home/nicolaus:/bin/ash

Во-первых, необходимо установить sudo:

opkg install sudo

Кроме того, необходимо разрешить желаемому пользователю манипулировать “'в/etc/пользователям использовать sudo?”' с помощью инструмента “visudo”. Теперь вы можете следовать * * один* * из методов ниже, чтобы выбрать, как пользователь должен быть в состоянии выполнять команды как “корень”:

Способ 1: 'sudo' вычислить любого пользователя с паролем (более безопасный)

В этом методе любой пользователь может временно выполнять команды от имени root только в том случае, если ему известен пароль root. Таким образом, когда пользователь выполняет команду “sudo”, он должен ввести пароль root вместо своего пароля.

Для включения этого метода вы должны открыть файл '/etc/sudoers'введя команду

visudo

Затем распакуйте 2 строки ниже в этом файле, а затем сохраните

## Uncomment to allow any user to run sudo if they know the password         
## of the user they are running the command as (root by default).            
Defaults targetpw  # Ask for the password of the target user                 
ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'

Этот метод более безопасен, потому что вам не нужно защищать как корневых, так и привилегированных (sudoer) пользователей, чтобы сохранить всю систему в безопасности.

Один usecase может быть позволяет удаленным SSH с паролем от глобальной сети: для большей безопасности (все-таки меньше, чем RSA ключом) вы можете только позволить пользователям другой пользователь, кроме root по SSH с паролем (опционально на заказ) порт из WAN. И для еще большей безопасности вы можете запросить пароль администратора после команды “sudo”. В этом случае хакер должен найти 3 различных строки имя пользователя, пароль пользователя и пароль корня, чтобы получить полный доступ к системе. Даже если учетная запись пользователя скомпрометирована, злоумышленник все еще не может повредить вашу систему, потому что у него еще нет пароля root.

Способ 2: 'sudo'ing с паролем пользователя

В этом методе, после входа в пользователя, когда вы входите “sudo”, вы должны снова ввести пароль пользователя. Конечный результат аналогичен тому, как вы используете “sudo” в Ubuntu или других популярных дистрибутивах Linux, но этот метод не использует группу “sudo” для этой цели.

Для включения этого метода необходимо также ввести команду

visudo

А затем добавьте строку, позволяющую пользователю, под комментарием “ ## Спецификация привилегий пользователя”:

##                                                                           
## User privilege specification                                              
##                                                                           
root ALL=(ALL) ALL                                                           
nicolaus ALL=(ALL) ALL                                                           

Способ 3: 'sudo' с паролем пользователя, если он является членом группы 'sudo' (необходимо установить некоторые пакеты)

Этот метод очень похож на метод 2, за исключением того, что она позволяет любому члену группы 'sudo' использовать “sudo” со своим паролем. Этот метод точно такой же, который используется в Ubuntu и других популярных дистрибутивах Linux, чтобы разрешить доступ пользователя к “sudo”.

Для активации этот способ сначала вы должны позволить группе 'судо' использовать команду “sudo”, введя

visudo

А затем раскомментируйте строку ниже:

## Uncomment to allow members of group sudo to execute any command           
%sudo ALL=(ALL) ALL 

Во-вторых, вы должны создать группу 'sudo'. Вы можете сделать это путем редактирования вручную /etc/group - но это скорее стандарт для того чтобы установить и использовать инструменты для достижения этой цели:

opkg install shadow-groupadd
groupadd --system sudo

Этот метод является более удобным, потому что вы можете просто позволить “sudo” доступ для любого пользователя вы хотите, просто usermod -a -G sudo <USER> но занимает больше места (для установки новых пакетов), чем метод 2, который может быть более подходящим для систем с очень ограниченным пространством.

Если вы используете PPP в конфигурации по умолчанию имя пользователя и пароль в /etc/config/network,потом непривилегированный пользователь может читать его из командной строки pppd не (с например,ps w).Чтобы предотвратить это, можно добавить “пользователя ”<имя_пользователя>“” в “в/etc/ррр/Options” и /etc/ppp/{chap|pap}-secretsа затем удалить логин / пароль, параметры от UCI конфигурации.

Конечно в/etc/ppp/{chap|pap}-secretsне следует читать:

chmod go-rw /etc/ppp/chap-secrets

Для secure web access, позже можно получить доступ через https (TLS) вместо незашифрованный протокол http. Если HTTP недостаточно безопасен для вас, вы можете отключить существующий (незашифрованный) веб-доступ и либо

  • Настройте защищенный SSL доступ с помощью uhttpd, выполнив следующие действия (проверено с 15.05)
    1. Установите генератор cert и плагин веб-сервера TLS:
      opkg install luci-ssl
    2. В то время как Luci SSL-шифрования автоматически устанавливает px5g, которые могут быть использованы,Вы также можете использовать openssl для создания собственного центра сертификации и сертификаты, а затем использовать этот сертификат, чтобы подписать сертификат, который вы используете для uhttpd, сохраним изменения.. Сертификаты можно также назвать или поместить в любой каталог, редактируя /etc/config/uhttpd
    3. Обратите внимание, что uhttpd, сохраним изменения.-мод-TLS не нужны после r35295 в Jan2013. Но вам нужно юстрим-библиотекой SSL wrapper на высоком библиотекой SSL (polarssl, mbedtls, cyassl, в openssl). Luci-SSL включает по libustream-mbedtls по умолчанию (с Dec2016).
    4. При необходимости укажите серверу, чтобы он больше не слушал обычный HTTP:
      uci delete uhttpd.main.listen_http ; uci commit

ИЛИ только переадресация на локальную сеть и перенаправление всех HTTP-запросов на https:

  1. uci set uhttpd.main.listen_http=192.168.1.1:80
    uci set uhttpd.main.listen_https='192.168.1.1:443'
    uci set uhttpd.main.redirect_https='1'
    uci commit
    1. Перезапустите веб-сервер для запуска создания сертификатов:
      /etc/init.d/uhttpd 
      restart
    2. При необходимости удалите генератор ключей:
      opkg remove px5g

Может ли обязательная проверка сертификата клиента быть настроена с помощью uhttpd? → not possible with uhttpd

Если требуется удаленный доступ к SSH, следуйте инструкциям по упрочнению на SSH, упомянутых выше.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2018/06/07 19:45
  • by 46.229.168.70