пятница, 3 апреля 2015 г.

Скрипт резервирования канала на 3G с отправкой email mikrotik routerboard

:local sysname [/system identity get name];
:local sysver [/system package get system version];
:local smtpserv [:resolve "smtp сервер"];
:local Eaccount "мыло админа";
:local pass "пароль";
:local PingCount 3;
:local InterfaceWan pppoe-rt;
:local Interface3G ppp-3G;
:local CheckIp 8.8.4.4;
:local Use3G false;

:local WANstatus [/interface get [/interface find name="$InterfaceWan"] running];
:if ($WANstatus=false) do={
:set Use3G true;
} else {
:local CheckMainISP [/ping $CheckIp count=$PingCount interface=$InterfaceWan];
:if ($CheckMainISP=3) do={
:set Use3G false;
} else {
:set Use3G true;
}
}
:local 3Gstatus [/interface get [/interface find name="$Interface3G"] running];
:if ($Use3G=true) do={
if ($3Gstatus=false) do={
/interface enable [find name="$Interface3G"];
:log warning "Set routes to 3G";
:delay 2;
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv port=587 user=$Eaccount password=$pass start-tls=yes subject=("$sysname Switch to 3G (" . [/system clock get date] . ")") body=("$sysname Switch to 3G.\nRouterOS version: $sysver\nTime and Date stamp: " . [/system clock get time] . " " . [/system clock get date]);
}
} else {
:if ($3Gstatus=true) do={
/interface disable [find name="$Interface3G"];
:log warning "Set routes to RT";
:delay 2;
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv port=587 user=$Eaccount password=$pass start-tls=yes subject=("$sysname Switch to RT (" . [/system clock get date] . ")") body=("$sysname Switch to RT.\nRouterOS version: $sysver\nTime and Date stamp: " . [/system clock get time] . " " . [/system clock get date]);
}
}

среда, 1 апреля 2015 г.

Скрипт создания зеркала обновлений для ESET на FreeBSD

Сам скрипт взят с сайта за что им большое спасибо

Ставим bash, curl, wget, unrar
# cd /usr/ports/shells/bash && make install clean
# chsh -s /usr/local/bin/bash root

cd /usr/ports/ftp/curl && make install clean
# cd /usr/ports/ftp/wget && make install clean
# cd /usr/ports/archivers/unrar && make install clean

Ставим скрипт
# cd /tmp
# wget https://github.com/tarampampam/nod32-update-mirror/archive/master.zip
# unzip master.zip; cd ./nod32-update-mirror-master/

Переносим набор скриптов в директорию недоступную «извне», но доступную для пользователя, который будет его запускать:
# mv -f ./nod32upd/ /home/

Переходим в новое расположение скриптов и выполняем их настройку (подробнее об этом в readme.md):
# cd /home/nod32upd/
# nano ./settings.cfg

Даем права на запуск скриптов:
# chmod +x ./*.sh

Проверяем наличие unrar, если планируем обновляться с официальных зеркал Eset NOD32:
# type -P unrar

В файлах settings.cfg и update.shgetkey.sh меняем #!/bin/bash на #!/usr/local/bin/bash

Меняем переменную pathToSaveBase="$HOME/nod32mirror/"; на pathToSaveBase="/var/nod32mirror/";

Выполняем пробный запуск:
# ./update.sh

Добавляем в cron
# ee /etc/crontab
*       1       *       *       *       root    /home/nod32upd/update.sh > /dev/null 2>&1
и правим PATH к такому виду PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

Ставим NGINX с параметром fancyindex
# cd /usr/ports/www/nginx && make install clean
# echo 'nginx_enable="YES"' >> /etc/rc.conf
# ee /usr/local/etc/nginx/nginx.conf

events {
        worker_connections 1024;
}

http {

        server {
                listen *:80;
                server_name имя сервера;
                root        /папка зеркала;
                error_log   off;
                access_log  off;

                charset utf-8;
                index index.html;

                if ($http_user_agent ~* ^(Wget|aria2|NOD32view|perl|php|curl|Google|Yandex|Yahoo)|(Mirror|spider|bot|Parser|RSS|grab)) {
                        return 403;
                }

                location ~* ^.+.(htaccess|htpasswd|pl|cqi|sh|sql|conf|tmp)$ {
                        return 403;
                }

                location / {
                        autoindex  on;
                        fancyindex on;
                        fancyindex_localtime on;
                        fancyindex_header /.webface/header.html;
                        fancyindex_footer /.webface/footer.html;
                        fancyindex_ignore "(^\.(htpasswd|htaccess|webface)$|\.(php.?|htm.?|txt|conf|log|tmp.?)$)";
                }

                set $errordocs $document_root/.webface/errorpages;
                error_page 401 /401.html; location = /401.html {root $errordocs;}
                error_page 403 /403.html; location = /403.html {root $errordocs;}
                error_page 404 /404.html; location = /404.html {root $errordocs;}
                error_page 500 /500.html; location = /500.html {root $errordocs;}
                error_page 502 /502.html; location = /502.html {root $errordocs;}
                error_page 503 /503.html; location = /503.html {root $errordocs;}
                }
}

Копируем файл .htaccess и папку .webface в папку зеркала и наблюдаем такой мини сайт

вторник, 31 марта 2015 г.

Решаем проблему DHCP, получение адресов только от своего сервера (для EoIP и ipip тунелей) mikrotik routerboard

/interface bridge filter add action=drop chain=forward dst-port=67 ip-protocol=udp mac-protocol=ip disabled=no comment="drop all dhcp requests over bridge"

VMware Tools для гостевой FreeBSD

Отправте с хоста команду на установку VMware Tools

#cd cd /usr/ports/misc/compat6x
#make install clean
#mount /cdrom
#cd /tmp
#tar zxpf /cdrom/vmware-freebsd-tools.tar.gz
#umount /cdrom
#cd vmware-tools-distrib
#./vmware-install.pl

Простая защита от DDoS mikrotik routerboard

/ip firewall filter
add action=jump chain=forward comment="drop ddos" connection-state=new jump-target=block-ddos
add action=drop chain=forward connection-state=new dst-address-list=ddosed log=yes log-prefix=ddos src-address-list=ddoser
add action=return chain=block-ddos dst-limit=50,50,src-and-dst-addresses/10s
add action=add-dst-to-address-list address-list=ddosed address-list-timeout=10m chain=block-ddos
add action=add-src-to-address-list address-list=ddoser address-list-timeout=10m chain=block-ddos

Защита от сканирования портов mikrotik routerboard

/ip firewall filter
add action=drop chain=input comment="port scanners" src-address-list="port scanners"
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp psd=21,3s,3,1
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=fin,syn
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=syn,rst
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=fin,syn,rst,psh,ack,urg
add action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w chain=input protocol=tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg

Защита от брутфорсеров mikrotik routerboard

/ip firewall filter
add action=drop chain=input comment="drop ssh brute forcers" dst-port=22 protocol=tcp src-address-list=ssh_blacklist
add action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1w3d chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage3
add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage2
add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage1
add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp

/ip firewall filter
add action=drop chain=input comment="drop telnet brute forcers" dst-port=23 protocol=tcp src-address-list=telnet_blacklist
add action=add-src-to-address-list address-list=telnet_blacklist address-list-timeout=1w3d chain=input connection-state=new dst-port=23 protocol=tcp src-address-list=telnet_stage3
add action=add-src-to-address-list address-list=telnet_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=23 protocol=tcp src-address-list=telnet_stage2
add action=add-src-to-address-list address-list=telnet_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=23 protocol=tcp src-address-list=telnet_stage1
add action=add-src-to-address-list address-list=telnet_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=23 protocol=tcp