Unix-wayКак заблокировать распространенные виды хакерских атак на веб-сервер под управлением Nginx

В заметке показан конфиг Nginx для блокировки наиболее распространенных видов атак — SQL-инъекции, файл-инъекции, спам и т.д.

Правил нужно вставить в каждый виртуальный хост внутри контейнера server {}. К сожалению это нельзя использоваться в глобальном масштабе, так как не допускается множество директив внутри контейнера HTTP {}.



[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 2964
  • +20
  • 13 августа 2012, 05:04
  • 1

Unix-wayКак вручную настроить сеть в Ubuntu Linux

В статье описано как вручную настроить сетевой интерфейс на Ubuntu Linux.



[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 3450
  • +10
  • 16 апреля 2012, 15:26
  • 5

Unix-wayКак фильтровать нежелательные сайты с помощью проси-сервера Squid на Linux

В статье описано как защитить домашнюю или корпоративную сеть от нежелательного интернет контента. Наша цель заключается в установке и настройке прокси-сервера Squid на Linux и развертывания системы фильтрации.



[ Читать дальше... ⇒ ]

Unix-wayУстановка и настройка Xen на CentOS (Linux)

В статье описано как установить Xen (4.1.2) на CentOS 6.2 (x86_64). Xen позволяет создавать гостевые ОС «виртуальные машины», под базовой операционной системой (dom0). Используя Xen можно разделять приложения на различные виртуальные машины, которые полностью независимы друг от друга, например отдельная виртуальная машина для почтового сервера, для сайта(ов), другую отдать под сайты клиентов сети, для DNS, и т.д., но используя одно оборудование. Это экономит деньги, и что еще более важно, это более безопасно. Если взломают виртуальную машины с DNS, это не окажет влияния на другие виртуальные машины. Кроме того можно перемещать виртуальные машины с одного сервера Xen на другой!

Используется dom0 как базовая ос, а domU как гостевая. Статья предназначена в качестве практического руководства, и она не охватывает теоретической части и всех возможных проблем/решений. ВНИМАНИЕ! Не даю гарантий что все это будет работать у вас. Также данная статья справидлива для большенства других Linux дистрибутивов, конечно при внесении некоторых изменений.



[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 19756
  • +23
  • 31 января 2012, 07:54
  • 3

Unix-wayWinUSB для создания флешки с Windows в Linux

WinUSB это простой инструмент для создания флэшки с установщиком Windows из ISO образа или реального DVD диска.

WinUSB

Пакет содержит два варианта:

— WinUSB-GUI: графический интерфейс
— WinUSB: инструмент командной строки



[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 4970
  • +18
  • 17 января 2012, 14:00
  • 3

Unix-wayBash scripts: nautilus - пакетный ресайзинг изображений

Утилита может пригодится web-разработчикам да и просто в быту. Скрипт, используя возможности ImageMagic, изменяет размер изображений на заданный пользователем в пакетном режиме и сохраняет их во вложенную папку, не изменяя исходных файлов. Можно также добавить текстовую подпись на все изображения. Картинка не изменяет пропорций и, при их несоответствии заданным размерам, выполняется либо ресайз по наименьшей стороне с подрезкой «излишков» либо ресайз по наибольшей стороне с добавлением черных полей.
Скрипт может работать как автономно так и дополнением к менеджеру файлов Nautilus.

deb-пакет добавляет команду resizer в /usr/bin и ссылку на него в Nautilus->Сценарии->Пакетное изменение размера изображений

Исходник
#!/bin/bash
# resizer - Multi Picture Resizer - nautilus script
# written by Conquistador

TFN="/tmp/tmp$$" # temporary file
TFN1="${TFN}-1"
FTR="*.png *.PNG *.jpg *.JPG" # фильтры для zenity --file-selection
FTM="png|jpg" # фильтры для собственных циклов
BGRDCLR=black # цвет фона
TXTCLR=blue # цвет текста
QUALITY=92 # качество сжатия

error() # вывод ошибки -> выход
{
zenity --info --title="Ё-маё!" --text="Ошибка: ${1}!" --timeout=5;
if [ -f ${TFN} ];then rm -f ${TFN};fi
if [ -f ${TFN1} ];then rm -f ${TFN1};fi
exit 1
}

if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
	NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=$(zenity --file-selection --multiple --file-filter="${FTR}" --filename="${HOME}" --title="Выбери файлы")
	if [ -z "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}" ];then error "ничего не выбрано"; fi
	IFS=$'|'
else
	IFS=$'\n'
fi
echo -n > "$TFN"
max=0
for name in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
	echo "$(basename ${name})" >> "$TFN"
	if [ $max -eq 0 ];then folder="$(dirname ${name})";fi
	let max++	
done
unset IFS

# Корректирую список - фильтрую файлы и удаляю пустые строки.
echo -n > "$TFN1"
IFS=$'|'
for e in ${FTM}; do cat "${TFN}" | grep -i .$e >> "$TFN1"; done
unset IFS
sed -i '/^$/d' "$TFN1"
max=$(cat "$TFN1"| wc -l)
[ $max -eq 0 ] && error "нет файлов-изображений для обработки!"

# Спрашиваю размер
_x=$(xrandr | sed -n 's/.\{0,\}current \([0-9]\{1,\}\) x [0-9]\{1,\}.\{0,\}/\1/g;p;q')
_y=$(xrandr | sed -n 's/.\{0,\}current [0-9]\{1,\} x \([0-9]\{1,\}\).\{0,\}/\1/g;p;q')
res=$(zenity --entry --entry-text="${_x}x${_y}" --title="Размер изображений" --text="Введи требуемый размер изображений (например 320x240):")
if [ -z ${res} ]; then error "не выбран размер";fi
res=${res//[X ч Ч х Х \[]/x} # Корректирую сепаратор
if [ "x$(echo ${res} | grep "x")" = "x" ];then error "неверный ввод";fi
width=$(echo "$res" | cut -d"x" -f1 -s) # проверка на пустые значения
height=$(echo "$res" | cut -d"x" -f2 -s)
if [ -z ${width} ] || [ -z ${height} ];then error "не указан один из параметров размера"; fi
geometry=$res

_ext=''
zenity --text="При несоответствии пропорций..." --title="Пропорции" --ok-label="Обрезать изображение" --cancel-label="Добавить пустые поля" --question && _ext='^'

# Спрашиваю автограф
agph=$(zenity --entry --entry-text="Conquistador ™" --title="Автограф" --text="Введи текст подписи, если не нужно оставь поле пустым или нажми - отмена")
if [ $? -ne 0 ]; then agph=""; fi

dist_folder="${folder}/${geometry}"
mes="Всего к обработке: $max файла(ов)\n\
Выбрана папка: ${folder}\n\
Целевая папка: ${dist_folder}\n\
Выбранный размер: ${geometry}
Автограф: ${agph}"
res=0
zenity --text="$mes" --title="Все верно?" --ok-label="Начать" --cancel-label="Отменить" --question && res=1
if [ $res -eq 0 ];then error "отменено"; fi

# Создаю целевую папку
[ -d "${dist_folder}" ] || mkdir ${dist_folder}

# Обнуляю счетчик для прогресс-бара
count=0;
IFS=$'\n'
for i in $(cat "$TFN1"); do
	echo "# Обрабатываю: ${i}"
	# создаю новое имя файла удаляя старый и добавляя новый
	# суффикс ШИРИНАxВЫСОТА и заменяя пробелы на символы подчеркивания
	separator="x X х Х"
	new_name=${i//[- _][0-9][0-9][0-9][0-9][$separator][0-9][0-9][0-9][0-9]/}
	if [ "$new_name" = "$i" ];then
	  new_name=${i//[- _][0-9][0-9][0-9][0-9][$separator][0-9][0-9][0-9]/}
	  if [ "$new_name" = "$i" ];then
	    new_name=${i//[- _][0-9][0-9][0-9][$separator][0-9][0-9][0-9]/}
	    if [ "$new_name" = "$i" ];then
	      new_name=${i//[0-9][0-9][0-9][0-9][$separator][0-9][0-9][0-9][0-9]/}
	      if [ "$new_name" = "$i" ];then
		new_name=${i//[0-9][0-9][0-9][0-9][$separator][0-9][0-9][0-9]/}
		if [ "$new_name" = "$i" ];then
		  new_name=${i//[0-9][0-9][0-9][$separator][0-9][0-9][0-9]/}
	fi fi fi fi fi
	new_name="$(echo ${new_name// /_} | sed 's/\(.*\)\(\....\)/\1-'$geometry'\2/')"

	# Собственно конвертирование картинок
	if [ "x${agph}" = "x" ]; then
		convert "${folder}/${i}" -resize ${geometry}${_ext} -background ${BGRDCLR} -compose Copy -gravity Center -extent ${geometry} -quality ${QUALITY} "${dist_folder}/${new_name}"
	else
		convert "${folder}/${i}" -resize ${geometry}${_ext} -background ${BGRDCLR} -compose Copy -gravity Center -extent ${geometry} -font URW-Palladio-Bold-Italic -gravity South -fill ${TXTCLR} -pointsize 20 -annotate +5+5 "${agph}" -quality ${QUALITY} "${dist_folder}/${new_name}"
	fi
	if [ $? -ne 0 ]; then
		echo "# Ошибка!!!\tНе могу обработать: ${i}"
		sleep 4
	fi    
	let count++
	echo $(($count * 100 / $max))
done | zenity --progress --width=500 --title="Изменение размера $max файла(ов)" --auto-close --auto-kill --percentage=0
unset IFS

rm -f ${TFN} ${TFN1} # удаляю временные файлы
nautilus "${dist_folder}"&
exit 0
  • avatar
  • terra
  • 2504
  • +28
  • 13 января 2012, 23:13
  • 10

Unix-wayУстановка и настройка файлового сервера Samba на Linux Ubuntu

В статье описана установка и настрока Samba на Ubuntu 11.10 для обмена файлами по протоколу SMB. Samba сконфигурирован как автономный сервер, а не как контроллер домена. Справедливости ради — данная статья подойдет не только для Ubuntu, а и для большинства дистрибутивов Linux, конечно с небольшими правками в установке и расположении конфига.

Используется сервер с IP адресом 192.168.0.100. Для начала зайдите под root:

sudo su




[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 17893
  • +24
  • 13 января 2012, 04:15
  • 13

Unix-wayКак узнать используемый дистрибутив Linux

В посте показано как с помощью команды lsb_release определить используемый дистрибутив.





[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 3305
  • +20
  • 09 января 2012, 10:38
  • 4

Веб-разработкаGradiator – генератор CSS3 градиентов в Linux

Веб-разработчики сидящие на Linux определенно оценят приложение Gradiator. Позволяет регулировать прочность и позиционирование, цвета и направление градиента.

Gradiator



[ Читать дальше... ⇒ ]
  • avatar
  • pashtuun
  • 1740
  • +14
  • 09 января 2012, 09:47
  • 3

Unix-wayУстановка программ с Launchpad.net в Debian

Проект launchpad.net был запущен в 2004 году компанией Cannonical для управления свободными проектами поддерживающими Ubuntu. В Ubuntu по такому случаю добавлена команда add-apt-repository. Команда осуществляет простое добавление, не включенных в основные ветки, репозиториев персональных проектов launchpad, и автоматически добавляет ключи безопасности в систему управления пакетами.
Ubuntu построена на Debian и поэтому большинство программ с ланчпада с равным успехом работают и в последнем. Есть только одно неприятное но — приводимые убунтоводами команды типа:
sudo add-apt-repository ppa:blabla/ppa дебиан не понимает.
Нижеприведенный скрипт в некотором роде решает эту проблему, стоит только добавить его под именем add-apt-repository в папку /usr/sbin.
deb-пакет

[ Читать дальше... ⇒ ]
  • avatar
  • terra
  • 4133
  • +32
  • 06 января 2012, 23:51
  • 4