CentOS: udev renamed network interface eth0 to em1

Подобная проблема часто встречается при настройке брендовых серверов, таких как DELL. Если вас не устраивает вид сгенерированных интерфейсов, он бывает и более затейливым, например eth0 -> p3p1, вы можете все вернуть «как было», для этого потребуется выполнить несколько шагов.

Проверено на системе CentOS release 6.9. Для начала, добавим в загрузчик (grub.conf) директивы net.ifnames=0 и biosdevname=0

kernel /boot/vmlinuz-2.6.32-696.el6.x86_64 ro
root=UUID=357f2c79-f7eb-4318-be69-da573fab5198
rd_NO_LUKS ...
net.ifnames=0 biosdevname=0 crashkernel=auto ...

Далее переименуем конфиг и обновим имя интерфейса:

mv /etc/sysconfig/network-scripts/ifcfg-em1 /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/em1/eth0/g' /etc/sysconfig/network-scripts/ifcfg-eth0

Удаляем файл:

rm -f /etc/udev/rules.d/70-persistent-net.rules

Перезагружаем сервер и видим наш eth0!

Nginx: автоматическая защита от парсинга и DDoS-атак

В своей прошлой статье я писал о возможности применения данного способа защиты от атак с помощью модуля Nginx testcookie. Сегодня мы более подробно остановимся на реализации скрипта, который автоматически будет включать защиту, обновляя конфиг и отправляя уведомление на email при срабатывании.

Устанавливаем и включаем модуль:

yum install nginx-module-testcookie

# /etc/nginx/module.inc.conf
load_module modules/ngx_http_testcookie_access_module.so;

Скрипт /srv/scripts/check_ddos.sh выглядит следующим образом и работает довольно просто. Он мониторит LA и количество коннектов к nginx. При превышении установленных порогов LA_ACTIVATE или NGINX_CONNECT включает тесткуку и отправляет письмо на email. При снижении LA ниже порога LA_DEACTIVATE, скрипт выключает тесткуку:

#!/bin/sh

NGINX_CONF=/srv/www/nagg.ru/conf/nginx.conf
MAIL="" # true is enable send mail
MAILTO=root
LA_ACTIVATE=17
LA_DEACTIVATE=5
NGINX_CONNECT=1000

########################################################
TMPLOG=/tmp/testcookie_module.tmp
NGINXCONN=`curl -s http://localhost/nginx-status | grep "Active" | awk '{print($3)}'`
LA=`cat /proc/loadavg | awk -F '.' '{print($1)}'`

function e {
    echo -en $(date "+%F %T"): "$1"
}

if [ ! -f $TMPLOG ];then echo 0 > $TMPLOG; fi
LASTRESULT=`cat $TMPLOG`

if [ -n "$NGINXCONN" ]; then
  if [ $NGINXCONN -gt $NGINX_CONNECT ]; then
    ALERT1="1"
  fi
fi

if [ -n "$LA" ]; then
  if [ $LA -gt $LA_ACTIVATE ]; then
    ALERT2="1"
  fi
fi

ALERT=$ALERT1$ALERT2

if [ -n "$ALERT" -a $LASTRESULT -eq 0 ]; then
    e; printf "Nginx connect: %-4s LA: %-3s | Activate testcookie\n" "$NGINXCONN" "$LA"
    sed -i 's/.*##-AUTO-DDOS-LABEL-##/\ttestcookie on; ##-AUTO-DDOS-LABEL-##/g' $NGINX_CONF
    /sbin/service nginx reload >/dev/null 2>&1
    echo 1 > $TMPLOG
    if [ "$MAIL" = "true" ];then
        echo "Nginx connect $NGINXCONN, LA $LA. Nginx test-cookie enable" | mail -s "`hostname` DDOS detected. Nginx test-cookie enable" $MAILTO
    fi
fi

if [ $LA -le $LA_DEACTIVATE -a $LASTRESULT -eq 1 ]; then
    e; printf "Nginx connect: %-4s LA: %-3s | Dectivate testcookie\n" "$NGINXCONN" "$LA"
    sed -i 's/.*##-AUTO-DDOS-LABEL-##/\ttestcookie off; ##-AUTO-DDOS-LABEL-##/g' $NGINX_CONF
    /sbin/service nginx reload >/dev/null 2>&1
    echo 0 > $TMPLOG
fi

(далее…)