Поднимаем свой, приватный прокси-сервер

Сегодня мы будем поднимать анонимный и действительно шустренький proxy/socks сервер для себя-любимого. Так чтоб настроить его один раз, да и забыть — пускай пыхтит да нам на радость.

Будем считать что ты уже приобрел себе простенький vps, в качестве ОС выбрал Cent OS 7 и подцепился к нему по SSH, наблюдая девственную чистоту. Первым делом тюним SSH:

Подробнее под катом

LEMP + CentOS = ❤

Данный пост скорее заметка для самого себя, дабы не забыть чего при новой итерации. Нового в ней ничего нет, ставим пакеты да настраиваем. У нас имеется новый и девственно чистый сервер под управлением CentOS 7.2 (minimal). Задача — поставить на него nginx + php + php-fpm + mysql и чтоб всё это шустро работало, да обновлялось самостоятельно из репозиториев (при возможности). Так же необходим тот же phpMyAdmin и настроенная отправка почты с сервера. В общем — минимальный web-stack, на котором хоть разработкой занимайся, хоть что-то вордпресо-подобное разворачивай. Сервер, к слову, располагается на hetzner.de.
Подробнее под катом

Собираем и настраиваем msmtp

msmtp — это простой консольный клиент для отправки сообщений электронной почты по протоколу SMTP.

Можно, конечно, пойти сложным путем и поставить полноценный почтовый сервер, но зачем? Нам ведь требуется просто позволить скриптам и демонам отправлять почту, а заморачиваться с DKIM, SPF, заголовками и прочим — крайне лень. Поэтому мы будем отправлять почту с помощью почтового ящика на yandex.ru, и поможет нам в этом приложение под названием msmtp.

Важное замечание — в моем случае домен уже делегирован на яндекс, в DNS имеются все необходимые записи, почтовый ящик создан на странице pdd.yandex.ru, к нему прописаны алиасы вида no-reply, noreply, donotreply, do-not-reply для того, что бы была возможность иметь почтовый ящик с именем [email protected], но успешно отправлять письма от имени, например, [email protected].

Единственное но — в репозиториях находится старая и бажная версия. Самый критичный для нас баг — это неизменяемое поле Sender, т.е. мы не можем указать имя (или адрес? не помню) отправителя. Смотрим что есть в репозиториях:

$ yum info msmtp
# ...
Name        : msmtp
Version     : 1.4.32
Release     : 1.el7
Size        : 120 k
# ...

Смотрим информацию о релизах на официальном сайте — на момент написания этих строк это версия 1.6.5 (уже без описанного выше бага).

Все манипуляции производились на «чистой» системе CentOS 7.2.

Скачаем исходники и соберем приложение ручками.
Подробнее под катом

CentOS — обновляем php до 5.6

Задался вопросом — при разработке web-приложений под какую версию php их «затачивать»? Ответ оказался проще некуда — достаточно посмотреть на календарь релизов и понять, что на данный момент поддерживаемой является версия 5.6.19:

PhpCurrentlySupportedVersions

И ну никак не та (5.4.16), что встала из репозитория epel «по умолчанию». Для того чтоб исправить сложившуюся ситуацию выполним совсем не сложные действия, описанные ниже.

Подробнее под катом

RSS → Bash → Transmission

Нахрен долгое вступление. Если на вопрос «Нравится автоматизировать и любишь посмотреть кино?» ты неосознанно ответишь положительно, то то что здесь написано — тебе понравится. Итак, наверняка у тебя есть своя железяка, которая стоит дома/офисе где-то в уголочке и выполняет роль файлошары/торрентокачалки и Джа знает ещё чего.

Железяка (4 фотки в 1)
Hardware:
Мать MSI C847IS-P33
Камень Распаян на плате, Intel(R) Celeron(R) CPU 847 @ 1.10GHz / 2 ядра
Память DDR3 @ 2 Gb
SDD (система) Kingston @ 8 Gb
HDD (данные) WG Green @ 2 Tb

Что такое RSS torrent?

Это RSS лента, в которой вместо привычных новостей публикуются ссылки на .torrent файлы выбранной тобой тематики. Придумали это давно, и прогрессивный народ активно этим пользуется. Есть даже сервисы, такие как:

Которые этим и живут. Конечный пользователь приходит, выбивает интересный ему контент, получает ссылку на свою ленту, кормит её своему торрент-клиенту (который в свою очередь должен поддерживать torrent rss) — получая в конечном счете новые серии любимых сериалов/фильмов определенной тематики почти без задержки и лишних действий. Пиздец как удобненько.

Подробнее под катом

Брутим пароли с Гидрой (hydra)

Статья носит носит строго познавательный характер, за применение кем либо описанных в статье методик автор ответственности не несет.

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

И такой инструмент уже имеет место быть. Быстрый, сочный, достойный внимания — THC-Hydra. Версия 7.5 (из репозитория epel) поддерживает подбор по/для: asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp rexec rlogin rsh sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp. Примеры эксплуатации мы рассмотрим чуть ниже, а пока — посмотрим как можно заполучить данный инструмент в свой арсенал.

Под катом описание всех флагов и живые примеры

Маленькая хитрость iptables

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

...
8080/tcp  filtered http-proxy
...

Что говорит нам о том что порт наверняка используется системой, но «прикрыт» извне. Не смотря на то что работать с ним врятли будет возможно — он всё же дает исследуемому дополнительную информацию о исследуемой системе.

Как проще всего прикрыть порт извне используя iptables?

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

А как можно прикрыть его так, чтоб он был недоступен только лишь извне, да ещё и не отображался в результатах nmap как filtered?

$ iptables -A INPUT ! -s 127.0.0.1/8 -p tcp --dport %номер_порта% -j REJECT --reject-with tcp-reset

Если по-человечески, то это означает:
Для всех входящих пакетов (кроме локального хоста (127.0.0.1/8)), приходящих по протоколу tcp на порт %номер_порта% ответить ICMP уведомлением tcp-reset, после чего пакет будет «сброшен»

Так же возможны варианты ICMP ответа: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited и icmp-host-prohibited

После чего не забудьте выполнить:

$ service iptables save; service iptables restart

Для выполнения $ service iptables save в системе должен присутствовать пакет iptables-services

Если в системе работает fail2ban обязательно перед выполнением $ service iptables save остановите его, выполнив $ service fail2ban stop