суббота, 29 июля 2017 г.

Как удалить каталог Linux

В операционной системе Linux можно выполнить большинство действий через терминал. Удаление каталога Linux - это достаточно простое действие, которое можно выполнить просто открыв файловый менеджер.
Однако в терминале это делается немного быстрее и вы получаете полный контроль над ситуацией. Например, можете выбрать только пустые папки или удалить несколько папок с одним названием. В этой статье мы рассмотрим как удалить каталог Linux через терминал.

Как удалить каталог Linux

Существует несколько команд, которые вы можете использовать для удаления каталога Linux. Рассмотрим их все более подробно. Самый очевидный вариант - это утилита rmdir. Но с помощью нее можно удалять только пустые папки:
$ rmdir моя_папка
Другая команда, которую можно применить - это rm. Она предназначена для удаления файлов Linux, но может использоваться и для папок если ей передать опцию рекурсивного удаления -r:
$ rm -R моя_папка
Такая команда уже позволяет удалить непустой каталог Linux. Но, можно по-другому, например, если вы хотите вывести информацию о файлах, которые удаляются:
$ rm -Rfv моя_папка
Команда -R включает рекурсивное удаление всех подпапок и файлов в них, -f - разрешает не удалять файлы без запроса, а -v показывает имена удаляемых файлов. В этих примерах я предполагаю что папка которую нужно удалить находится в текущей рабочей папке, например, домашней. Но это необязательно, вы можете указать полный путь к ней начиная от корня файловой системы:
$ rm -Rfv /var/www/public_html
Читайте подробнее про пути в файловой системе в статье путь к файлу Linux.  Теперь вы знаете как удалить непустой каталог в консоли linux, далее усложним задачу, будем удалять папки, которые содержат определенные слова в своем имени:
$ find . -type d -name "моя_папка" -exec rm -rf {} \;
Подробнее про команду find смотрите в отдельной статье. Если кратко, то -type d указывает, что мы ищем только папки, а параметром -name задаем имя нужных папок. Затем с помощью параметра -exec мы выполняем команду удаления. Таким же образом можно удалить только пустые папки, например, в домашней папке:
$ find ~/ -empty -type d -delete
Как видите, в find необязательно выполнять отдельную команду, утилита тоже умеет удалять. Вместо домашней папки, можно указать любой нужный вам путь:
$ find /var/www/public_html/ -empty -type d -delete
Перед удалением вы можете подсчитать количество пустых папок:
$ find /var/www/public_html/ -empty -type d | wc -l

Другой способ удалить папку linux с помощью find - использовать в дополнение утилиту xargs. Она позволяет подставить аргументы в нужное место. Например:
$ find ~/ -type f -empty -print0 | xargs -0 -I {} /bin/rm "{}"
Опция -print0 выводит полный путь к найденному файлу в стандартный вывод, а затем мы передаем его команде xargs. Опция -0 указывает, что нужно считать символом завершения строки \0, а -I - что нужно использовать команду из стандартного ввода.
Если вы хотите полностью удалить папку Linux, так, чтобы ее невозможно было восстановить, то можно использовать утилиту wipe. Она не поставляется по умолчанию, но вы можете ее достаточно просто установить:
$ sudo apt install wipe
Теперь для удаления каталога Linux используйте такую команду:
$ wipe -rfi ~/моя_папка/*
Опция -r указывает, что нужно удалять рекурсивно все под папки, -f - включает автоматическое удаление, без запроса пользователя, а -i показывает прогресс удаления. Так вы можете удалить все файлы в папке linux без возможности их восстановления поскольку все место на диске где они были будет несколько раз затерто.

суббота, 22 июля 2017 г.

Ошибка bash permission denied

Многие новички пытаются выполнить запись определенных значений в системные файлы с помощью операторов перенаправления ввода и вывода и получают ошибку bash permission denied. Эта ошибка выводится, даже если вы использовали sudo.
Казалось бы, sudo есть, значит права суперпользователя получены и все должно работать но тут все не так просто. В этой статье мы рассмотрим почему возникает ошибка bash permission denied и как ее обойти.

Ошибка bash permission denied

Допустим, вы выполняете команду:
$ sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
А в результате вместо записи строчки в /etc/resolv.conf получаете ошибку:
bash: /etc/resolv.conf permission denied
В русской локализации это будет отказано в доступе bash linux. Так происходит потому что вы запускаете с правами суперпользователя утилиту echo и она честно выводит вашу строку в стандартный вывод bash с правами суперпользователя. Но bash запущен от обычного пользователя, и когда интерпретатор bash пытается записать полученную строчку в системный файл, естественно, что вы получите ошибку.
Но существует несколько способов обойти это ограничение, вы можете, например, использовать команду tee, которая записывает стандартный вывод в файл или запустить саму оболочку от имени суперпользователя. Рассмотрим сначала вариант с tee:
echo 'текст' | sudo tee -a /путь/к/файлу
$ echo 'nameserver 8.8.8.8' | sudo tee -a /etc/resolv.conf
Это очень простое решение, но, кроме того, вы можете запустить оболочку bash с правами суперпользователя, чтобы дать ей доступ на запись:
sudo sh -c 'echo текст >> /путь/к/файлу'
sudo bash -c 'echo текст >> /путь/к/файлу'
Например:
$ sudo bash -c 'echo nameserver 8.8.8.8 >> /etc/resolv.conf
 Еще одно решение, призванное, упростить эту команду, добавить такой код в ~/.bashrc:
sudoe() {
[[ "$#" -ne 2 ]] && echo "Usage: sudoe <text> <file>" && return 1
echo "$1" | sudo tee --append "$2" > /dev/null
}
Дальше для вывода строки в файл выполняйте:
sudoe 'текст' >> /путь/к/файлу
Например:
$ sudoe "nameserver 8.8.8.8" > /etc/resolv.conf
Теперь все будет работать, как и ожидалось, и ошибка bash отказано в доступе не появится. Еще можно поменять права на файл, а потом уже выводить в него строку. Но это очень неправильное решение. И даже не потому, что это небезопасно, а больше потому что там намного больше действий.

среда, 5 июля 2017 г.

10 полезных возможностей nmap

Nmap (Network Mapper) — свободная утилита с открытым исходным кодом, предназначенная для сканирования сетей и аудита сетевой безопасности. Nmap использует множество различных методов сканирования (UDP, TCP, TCP SYN, FTP, ICMP и т.д.), а также поддерживает большой набор дополнительных возможностей.
Ниже описаны некоторые полезные возможности этой замечательной утилиты.
Для выполнения большинства операций nmap требуются полномочия пользователя root. При запуске nmap от имени обычного пользователя значительная часть функ­ций будет не доступна.

1. Получение информации об удаленном хосте и определение операционной системы

Nmap используются в следующем виде:
$ sudo nmap -sS -P0 -sV -O <target>
где:
  • < target > — IP, хост или подсеть
  • -sS — TCP SYN сканирование (полуоткрытое)
  • -P0 — отключение ICMP сканирования.
  • -sV — определение закрытых и фильтруемых портов
  • -O — определение версии операционной системы
Еще опции:
  • -A — включает определение «отпечатка» и версии операционной системы
  • -v|-vv — уровень вывода диагностических сообщений
Используя дополнительные опции, команда выглядит следующим образом:
$ sudo nmap -sS -P0 -A -v < target >

2. Определение списка серверов с открытым портом

Nmap используются в следующем виде:
$ sudo nmap -sT -p 22 -oG - 192.168.1.* | grep open
Номер порта указывается после опции «-p». В данном примере, выполняется поиск
машин, для которых возможен вход по ssh (если, конечно, не изменен порт по
умолчанию для ssh).

3. Поиск активных IP адресов в сети

Nmap используются в следующем виде:
$ sudo nmap -sP 192.168.0.*
Чтобы опросить конкретную подсеть, можно использовать следующие параметры:
$ sudo nmap -sP 192.168.0.0/24

4. Опросить (пропинговать) диапазон адресов

Nmap используются в следующем виде:
$ sudo nmap -sP 192.168.1.100-254
Nmap понимает много натаций IP адресов.

5. Поиск неиспользуемых IP адресов в подсети

Nmap используются в следующем виде:
$ sudo nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp

6. Поиск вируса Conficker в подсети

Nmap используются в следующем виде:
$ sudo nmap -PN -T4 -p139,445 -n -v \
    -script=smb-check-vulns \
    -script-args \
    safe=1 192.168.0.1-254
Чтобы скорректировать список IP адресов, заменить «192.168.0.1-256» на свой вариант.

7. Поиск в сети мошеннических точек доступа (AP)

Nmap используются в следующем виде:
$ sudo nmap -A -p1-85,113,443,8080-8100 \
       -T4 -min-hostgroup 50 \
       -max-rtt-timeout 2000 \
       -initial-rtt-timeout 300 \
       -max-retries 3 \
       -host-timeout 20m \
       -max-scan-delay 1000 \
       -oA wapscan 10.0.0.0/8

8. Декорирование истинного IP адреса при сканировании сети

Nmap используются в следующем виде:
$ sudo nmap -sS 192.168.0.10 -D 192.168.0.2
В данном примере выполняется поиск открытых портов на машине 192.168.0.10, в качестве адреса, откуда ведется сканирование указывается адрес 192.168.0.2. Таким образом, в логах машины 192.168.0.10 будет отображен не истинный IP адрес, с которой ведется сканирование, а указанный — 192.168.0.2.

9. Список обратных DNS записей для подсети

Nmap используются в следующем виде:
$ sudo nmap -R -sL 209.85.229.99/27 | \
    awk '{if($3=="not")print"(" $2 ") no PTR";else print $3 " is "$2}' | \
    grep ‘(‘
В этом примере, nmap выполняет поиск обратных DNS записей для подсети. Результатом поиска будет список IP адресов с соответствующими PTR записями для подсети. Чтобы выполнить запрос через конкретный DNS сервер, необходимо добавить «-dns-servers x.x.x.x» после опции «-sL».

10. Подсчет Linux/Windows машин в сети

Nmap используются в следующем виде:
$ sudo nmap -F -O 192.168.0.1-255 | \
    grep "Running: " > /tmp/os; \
    echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \
    echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"

пятница, 30 июня 2017 г.

Как пользоваться OpenVPN

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

Как работает OpenVPN?

Вы уже знаете что программа организовывает виртуальную сеть между компьютерами и все данные в этой сети шифруются и недоступны для пользователей вне нее. Для достижения этой цели программа создает в системе виртуальное устройство tun0. Это такой же интерфейс, как и eth0 или wlan0, он имеет свой ip адрес. Весь трафик, который передается на этот интерфейс шифруется и передается в виртуальную сеть.
Поэтому для передачи трафика через OpenVPN будет достаточно добавить в таблицу маршрутизации несколько правил, которые будут заставлять трафик идти через интерфейс tun0.

Как пользоваться OpenVPN в Linux

Сначала рассмотрим как подключиться к OpenVPN из Ubuntu или любого другого Linux дистрибутива через терминал. Допустим, вы скачали файл конфигурации сервера .ovpn и хотите подключиться к этой сети. Для этого нужно установить клиент openvpn:
$ sudo apt install openvpn
А далее для подключения к сети достаточно выполнить команду openvpn и передать ей в параметры нужный вам файл:
$ sudo openvpn ~/Загрузки/config.ovpn
После этого окно терминала закрывать нельзя и если OpenVPN сервер был настроен правильно, то он уже передал на машину правильные маршруты и ваш трафик идет через виртуальную сеть. Давайте посмотрим маршруты:
$ sudo ip route
Здесь стоит обратить внимание на две строки:
0.0.0.0/1 via 192.168.243.1 dev tun0
169.254.0.0/16 dev enp2s0 scope link metric 1000
Первая направляет весь трафик системы на интерфейс tun0, а вторая более интересная, она разворачивает трафик ip сети 169.254.0.0 на реальный интерфейс. Если ее не будет, то весь трафик будет идти на tun0, в том числе и трафик от программы OpenVPN, который уже прошел этот интерфейс и получиться петля. Чтобы разорвать подключение в таком варианте достаточно нажать Ctrl+C в терминале, где вы запустили openvpn.
Второй способ использовать OpenVPN в Linux - это установить плагин openvpn для NetworkManager и подключатся с помощью него. Для установки этого пакета в Ubuntu выполните такую команду:
$ sudo apt-get install network-manager-openvpn
Теперь откройте апплет Network Manager, разверните "Соединение VPN" и выберите"Настроить соединение":
В открывшемся окне нажмите кнопку "+":
Затем выберите надпись "VPN".
Далее, вы можете взять "OpenVPN", но нас будет интересовать пункт "Импорт из файла".
Далее, просто выберите файл *.ovpn, который вы скачали на сервере. Осталось нажать кнопку "Добавить". Дальше вы можете активировать нужную сеть с помощью переключателя в окне настроек или аплета:
Снова смотрим таблицу маршрутизации:
$ sudo ip route
В целом, NetworkManager создает другие правила, но они работают так же. Настройка клиента openvpn на ubuntu завершена.

Использование OpenVPN в Android

Вы можете пользоваться OpenVPN на любой платформе, в том числе и на Android. Для устройств было выпущено официальное приложение OpenVPN Connect. С помощью него вы можете подключиться к сети, как и в предыдущем варианте, с помощью ovpn файла. Вы можете установить это приложение из Google Play:
Откройте приложение, нажмите на кнопку меню, затем выберите "Import" -> "Import profile from SDCard":
Выберите нужный файл и нажмите "Select":
Затем осталось нажать "Connect" для подключения к сети:
Настройка клиента openvpn включает только импорт конфигурационного файла, больше ничего не нужно. Дальше ваш трафик будет направлен через VPN, здесь тоже вы можете посмотреть таблицу маршрутизации, если установлен эмулятор терминала:
Правда, здесь мы не увидим такой ситуации, как в Linux, маршрутизация на VPN в Android осуществляется немного по-другому.

Как пользоваться OpenVPN в Windows

Нельзя было не рассказать в этой статье как пользоваться OpenVPN GUI в Windows, тем более что это ненамного сложнее чем в Android. Нам нужно установить клиент OpenVPN. Вы можете скачать его на официальном сайте:
После загрузки запустите программу от имени администратора и пройдите все шаги мастера:
Далее, запустите программу, найдите ее значок в трее, кликните по нему и выберите "Import":
Далее, просто выберите файл конфигурации *.ovpn для нужного VPN сервера:
Затем еще раз кликните по значку OpenVPN на панели, начнется инициализация и вы будете подключены к сети VPN, значок программы изменится на зеленый:
Теперь ваш трафик в операционной системе Windows тоже направлен через VPN. Как видите, использование OpenVPN очень просто во всех операционных системах.

Выводы

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