Рейтинг
+4.52

Linux

14 читателей, 56 топиков

Неувядающий SSH-туннель

  • Linux
Как известно, SSH-туннели смертны. Помирают они по самым разным, порой непредсказуемым причинам, так что все возможные казусы одним лишь рихтованием настроек SSH предусмотреть наперёд невозможно. Понятно, что так жить нельзя, и с этим разумеется, нужно было позавчера что-то делать :)
На счастье в *nix кроме монстроидальных ужасных by design вещей типа upstart или systemd есть ещё и маленькие надёжные программы, решающие свою узкую задачу просто, предсказуемо и прямолинейно, то есть в так называемом unix-way стиле. К числу таковых относится и так называемый супервизор RunIt. Почитать о нём подробно можно, например, на хабре, здесь же я приведу готовое решение проблемы рушащегося на головы туннеля:

sudo apt-get install runit
sudo mkdir /etc/sv/unbreak-tun
cat <<'EOF' | sudo tee /etc/sv/unbreak-tun/run
#!/bin/bash
exec 2>&1
chpst  -u gideon:gideon ssh -i /home/gideon/.ssh/unsecure.rsa -p 5714 -L 1234:localhost:4567 melpomena@remote.host
EOF
sudo chmod +x /etc/sv/unbreak-tun/run
sudo ln -s '../sv/unbreak-tun' /etc/service/

Собственно, вот и всё решение!
Поменяйте номера портов, имена хостов и логины пользователей на нужные перед копированием этого кода в консоль — и получите туннель который уж если работает, то убить его будет решительно невозможно. А вот штатным образом остановить службу — пожалуйста: sudo sv stop unbreak-tun.

Shell скрипт для получения whois информации о домене

  • Linux
Тестировалось на Ubuntu 10.04. Доставляем пакет whois, если его нет.
apt-get install whois

Создаем скрипт
_dom=$@

# Die if no domains are given
[ $# -eq 0 ] && { echo "Usage: $0 domain1.com domain2.com ..."; exit 1; }
for d in $_dom
do
        _ip=$(host $d | grep 'has add' | head -1 | awk '{ print $4}')
        [ "$_ip" == "" ] && { echo "Error: $d is not valid domain or dns error."; continue; }
        echo "Getting information for domain: $d [ $_ip ]..."
        whois "$_ip" | egrep -w 'OrgName:|City:|Country:|OriginAS:|NetRange:'
        echo ""
done

Читать дальше →

Примеры использования Iptables

  • Linux
В Linux встроен брандмауэр называемый Netfilter. По данным официального сайта проекта:

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

Брандмауэр в Linux управляется программой iptables, которая имеет функции фильтрации IPv4, ip6tables фильтрует IPv6. Данное руководство рассказывает как научится пользоваться Netfilter (iptables) в CentOS / RHEL / Fedora / Redhat Enterprise Linux. В этой статье можно найти основные примеры настройки iptables в Linux для защиты от вторжений.

Читать дальше →

Удаление и новая установка MySQL в Ubuntu 10.x

  • Linux
Если Вам друг потребуется переустановить MySQL как мне, сначала скопируйте папку с базой MySQL если она Вам нужна, затем приступайте к удалению MySQL 5.1 из Ubuntu 10.x. Данный метод удалит все, что связано с MySQL в ubuntu! Установка MySQL будет как на чистой системе.

Удалить можно с помощью apt:
apt-get --purge remove mysql-server
apt-get --purge remove mysql-client
apt-get --purge remove mysql-common

apt-get autoremove
apt-get autoclean

Читать дальше →

Защита от Apache от DDOS-атак

  • Linux
Пару недель назад позвонил один знакомый и пожаловался, что плохо работает сайт и канал поменяли на FTTX с xDSL и тариф выбрали со скоростью повыше, но помогло мало — пользователи жалуются на HTTP/1.1 403 Forbidden. Сервер настраивал им не я, благо что установлена Ubuntu 10.04 LTS — люблю продукты семейства long time support — очень уж они хорошо. Получив доступ начал ковырять систему — первое что бросилось в глаза — практически пустой фаейр — десятка 2 правил на вход-выход ЛВС и сайта в мир. Набрав в консоли команду
netstat -n --tcp | grep SYN_RECV
— несколько секунд наблюдал строчки вида:
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:1084    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:1228    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:2652    SYN_RECV   
tcp     0   0 xxx.xxx.xxx.xxx:80    206.192.175.100:3446    SYN_RECV
Сразу стало понятно — что сайт завален большим количеством syn-пакетов, потому так плохо и работает.
Читать дальше →

Назад в будущее

  • Linux
Что делать если tar при попытке разархивировать выдает ошибку «timestamp in the future»? Нужно добавить в опции параметр m.
tar -xmvf archive.tar
и если запаковано в .gz, то
tar -xmzvf archive.tar.gz

Установка драйвера и подключение раздела exFAT в Linux с возможностью записи

  • Linux
Для добавления возможности подключения ExFat разделов в Ubuntu выполните в консоли команды:

sudo -s
apt-get install python-software-properties
apt-add-repository ppa:relan/exfat
apt-get update
apt-get install fuse-exfat

Читать дальше →

Замена BIND на Unbound на Ubuntu 11.10

  • Linux
То что BIND достаточно неповоротлив знают наверно все. А тут еще захотелось чтобы и рекурсии было и производительность повыше да и кэширование не помешает. Курение гугла выдало несколько вариантов, одно заинтересовало: кеширующий и рекурсивный DNS сервер Unbound, хорошо мониторится работа в Cacti/Munin и других программах.
Итак приступаем. Исходные данные: Ubuntu Server 11.10 (LAMP+SQUID+SAMS+…
Читать дальше →

Включаем IP Forwarding в Linux

  • Linux
По умолчанию в большинстве дистрибутивов IP Forwarding выключен, но форвардинг может понадобится если на сервере будет подниматься VPN или например это будет роутер.
Проверить включен ли IP Forwarding можно так:
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward

Включить можно так (действовать будет до перезагрузки):
sysctl -w net.ipv4.ip_forward=1

или
echo 1 > /proc/sys/net/ipv4/ip_forward

Или жётско включить (действовать будет и после перезагрузки):
# grep forward /etc/sysctl.conf
net.ipv4.ip_forward = 1

В RedHat подобных:
# grep -i forward /etc/sysconfig/network
FORWARD_IPV4=true

в Debian (Ubuntu):
# grep -i forward /etc/network/options
ip_forward=yes

После правки конфигов (перманентное включение) необходимо перезапустить сеть. например, /etc/init.d/network restart
Note that: В OpenVPN используется первый способ (изменение на лету), это прописано в стартап скриптах.

Читать дальше →

Продолжаем защищаться или fail2ban на страже сервера

  • Linux
Предистория: Недавно настраивал в одной небольшой конторе внешний мультисервер — squid/postfix/apache и так далее. Доступ естественно по ssh, в конторе сразу попросили настроить защиту с мира на все что возможно. «Громкая просьба», но заказчик в данном случае прав — защита нужна, хотя бы от тупых халявщиков и прочей бредни. Естественно пожелание было учтено.
Вообще эпопея началась сразу: как только поднял ssh и proftpd (делал большую часть удаленно), в логи посыпался перебор паролей, на первом этапе быстренько подцепил sshguard — на первое время так сказать хватит. Так как в мир смотрело много сервисов — включая POP3/IMAP4 (ну возжаждал так клиент, web-морды для почты им мало) и прочее, решил поискать что-нибудь поинтересней. Google как говориться в помощь. Плутая в дебрях инета нашол простенькую, но интересную прогу из боекомплекта linux — fail2ban, быстренько пробежался по описанию — дружит почти со всем что можно и нельзя, умеет баннить и jail-ить. Ну что ж — вперед, на танки как говориться.
Читать дальше →