Архив рубрики: OpenBSD

Гарантированный запуск единичной копии скрипта

Принцип ее работы прост: для каждого процесса она создает файл и вешает на него lock. Как только процесс завершается, лок пропадает. Лок также пропадает в случае внезапной смерти процесса, и нет необходимости проверять pid на существование или делать другие телодвижения. Если процесс запускается повторно, а лок-файл еще не освободился, работа скрипта прерывается и выдается сообщение в STDERR. Читать далее

NAT with multiple outgoing IPs

IPFilter

map net0 10.10.10.0/24 -> 192.168.0.2/24 round-robin
map net0 10.10.10.0/24 -> 192.168.0.3 round-robin

Iptables

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0/24
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254

Читать далее

Iron Bars Shell — restricted system shell for Linux/Unix

Iron Bars SHell, or short ibsh is my first attempt to create a restricted working environment for Linux/Unix. I’m sure that many system administrators wish or have wished for a way to lock some/all users into a safe dungeon, where they can only do harm to their own files. Even more important is the protection against users reading sensitive files, for example the /etc/passwd file, which is accessible for any person with an unrestricted shell. But many system files may be listed here. Users could easily gain information, that could help malicious hackers to compromise the system, the network, the company.
Many attempts have already been made to fix this problem. Menu-based and other interactive shells have been created, but they were not able to completely satisfy worried system administrators. The amount of documents available at various security sites about how to bypass restrictions, how to hack through these shells and gain full access, shows, that ANY experienced Linux user is able to cause big problems.

Читать далее

[nginx] fastcgi_connect_timeout

Выдержка из документации:

Синтаксис: fastcgi_connect_timeout время;
Умолчание: fastcgi_connect_timeout 60s;
Контекст: http, server, location

Задаёт таймаут для установления соединения с FastCGI-сервером. Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.

Читать далее

IP range in firewalls

PF

# grep test /etc/pf.conf
test="{ 10.0.0.1 - 10.0.0.100 }"
block in quick on $ext_if from $test
# pfctl -nvf /etc/pf.conf | grep 10.0
test = "{ 10.0.0.1 - 10.0.0.100 }"
block drop in quick on em1 inet from 10.0.0.1 - 10.0.0.100 to any

Но у меня не всегда корректно срабатывало это правило на FreeBSD.

iptables

iptables -A INPUT -p tcp --destination-port 22 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.100-192.168.1.200

В остальных файерволах (ipfilter) данного функционала нет и придётся разбивать диапазон на подсети CIDR.

ipfw

ipfw add allow all from 1.2.3.0/24{128,35-55,89}

Выдержка из мана:

As an example, an address specified as 1.2.3.4/24{128,35-55,89}
or 1.2.3.0/24{128,35-55,89} will match the following IP
addresses:
1.2.3.128, 1.2.3.35 to 1.2.3.55, 1.2.3.89 .

Спасибо нашему читателю, который дополнил статью про ipfw.

Если у кого-то не заработало, вот ссылка на разбивку на подсети

Несколько алиасов из одной подсети

При настраивании разного рода сервисов приходится сталкиваться с тем, что на одном интерфейсе, находится несколько алиасов. Всё бы ничего, но возникают вопросы: с каким src address будет уходить пакет?

Если алиасы из разных подсетей, то ответ сразу ясен. А если нет?

Читать далее

Отслеживание изменений в RealTime

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

Linux

DirNotify (dnotify), Inotify

FreeBSD/OpenBSD

Kqueue

Solaris

FAM, FEN

Разное

А вот и ПО, которое построено на базе вышеперечисленных механизмов, которое позволяет синхронизировать контент в реальном времени:

lsyncd

Фильтрация по MAC-адресу в различных файерволах

ipfw

add allow all from any to 192.168.2.0/24 via ${natd_interface} mac aa:bb:cc:dd:ee:ff any

pf

(только OpenBSD)

в консоли:

# ifconfig bridge0 rule pass in on fxp0 src 0:de:ad:be:ef:0 tag USER1

в pf.conf:

pass in on fxp0 tagged USER1

ipf

Нельзя сделать

iptables

/sbin/iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP

Меняем RPATH

Что такое RPATH? Wikipedia:

rpath is a term in programming which refers to a run-time search path hard-coded in an executable file or library, used during dynamic linking to find the libraries the executable or library requires.

Иными словами это жёстко зашито в заголовке бинарника. Можно попробовать поменять в момент запуска:

LD_LIBRARY_PATH=/var/other myprog &

Но это не всегда возможно и не всегда работает. Для постоянного изменения существует специальные утилиты, которые правят сам бинарник.

Читать далее