Скрипты sh, bash
Опубликовано: 2018-06-08
iptables.sh
#! /bin/sh
#
#######################
# Настройка интерфейсов
#######################
iptables.sh
#! /bin/sh
#
#######################
# Настройка интерфейсов
#######################
# Internet (Поменяйте на ваш интернет-интерфейс)
Inet_Interface="eth0"
# Lan (поменяйте на ваш интерфейс сетевогй карты)
Lan_Interface="eth1"
# Lo (локальный интефейс - петля)
Lo_Interface="lo"
# Описываем путь до iptables
IPT="/sbin/iptables"
# Определяем локальную подсеть и адрес сервера для перенаправления на squid
localNet="10.0.0.0/24"
serverSquid="10.0.0.1"
# Очищаем текущие правила (если вдруг есть какие-то правила)
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Задаем политики по умолчанию
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Создаем цепочку для обработки неправильных пакетов.
# bad_packets
$IPT -N bad_packets
$IPT -A bad_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW -j REJECT --reject-with tcp-reset
$IPT -A bad_packets -p tcp \! --syn -m conntrack --ctstate NEW -j LOG --log-prefix "New not syn:"
$IPT -A bad_packets -p tcp \! --syn -m conntrack --ctstate NEW -j DROP
# Создаем цепочку для обработки входящих (из интернета) tcp соединений.
# tcp_p
$IPT -N tcp_p
# Чтобы, например, разрешить подключаться к нашему шлюзу из интернета по ssh:
ssh="22"
ssh_ip_allowed="192.168.0.0/24"
$IPT -A tcp_p -p tcp -s $ssh_ip_allowed --dport $ssh -j ACCEPT
$IPT -A tcp_p -p tcp -s 0/0 -j DROP
# Создаем цепочку для обработки входящих (из интернета) udp соединений.
# udp_p
$IPT -N udp_p
$IPT -A udp_p -p udp -s 0/0 -j DROP
# Создаем цепочку для обработки входящих (из интернета) icmp соединений.
# icmp_p
$IPT -N icmp_p
# Разрешаем "пинговать" наш шлюз из интернета:
$IPT -A icmp_p -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
$IPT -A icmp_p -p icmp -s 0/0 --icmp-type 11 -j ACCEPT
$IPT -A icmp_p -p icmp -s 0/0 -j DROP
# Цепочка INPUT
$IPT -A INPUT -p tcp -j bad_packets
$IPT -A INPUT -p all -i $Lan_Interface -j ACCEPT
$IPT -A INPUT -p all -i $Lo_Interface -j ACCEPT
$IPT -A INPUT -p all -i $Inet_Interface -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp -i $Inet_Interface -j tcp_p
$IPT -A INPUT -p udp -i $Inet_Interface -j udp_p
$IPT -A INPUT -p icmp -i $Inet_Interface -j icmp_p
# Цепочка FORWARD
$IPT -A FORWARD -p tcp -j bad_packets
$IPT -A FORWARD -p all -i $Lan_Interface -j ACCEPT
$IPT -A FORWARD -p all -i $Lo_Interface -j ACCEPT
$IPT -A FORWARD -p all -i $Inet_Interface -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Цепочка OUTPUT
$IPT -A OUTPUT -p tcp -j bad_packets
$IPT -A OUTPUT -p all -o $Inet_Interface -j ACCEPT
$IPT -A OUTPUT -p all -o $Lan_Interface -j ACCEPT
$IPT -A OUTPUT -p all -o $Lo_Interface -j ACCEPT
# Цепочка POSTROUTING (таблица nat)
$IPT -t nat -A POSTROUTING -o $Inet_Interface -j MASQUERADE
# заворачиваем пакеты на 80 и 8080 порты на прокси. У кого нет - строчку удаляем.
$IPT -t nat -A PREROUTING -i $Lan_Interface \! -d $localNet -p tcp \
-m multiport --dport 80,8080 -j DNAT --to $serverSquid:3128
# Включаем перенаправление ipv4.
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Firewall started"
exit 0
gtTest.sh
#!/bin/bash
#Список хостов для проверки
HOSTS="ya.ru google.com trion.mk.ua"
#Количество итераций для пинга
N=3
#Подсеть локального сегмента
LAN0="192.168.0.1"
LAN1="10.0.0.0/24"
#Адрес yполучателя отчета
EMAIL="borisbelyaev@mail.ru"
#Переменные пути и названия файлов
PWD="/var/test"
FILE="test.txt"
{
echo
echo "Test date:" `date`
echo
for H in $HOSTS
do
PING=`ping -c$N $H | tail -n 2 | head -n 1 | cut -b24`
let "NGOOD=$N / 3"
if [ -n "$PING" ]
then
if [ $PING -ge $NGOOD ]
then
echo "Were $PING ping on host $H"
else
echo "Ping on host $H = failed"
fi
else
echo $PING
fi
done
#определение своего IP адреса
MYIP=`wget -O - -q icanhazip.com`
echo
echo "WAN IP = $MYIP"
#nmap -sP $LAN | grep Host | cat >> $PWD/$FILE
#nmap -sP $LAN0
nmap -sP $LAN1
} > $PWD/$FILE
#отправляем данные на почту
mail -s "gate" $EMAIL < $PWD/$FILE
#показать результат
#cat $PWD/$FILE
exit 0
logToHtml.sh
#!/bin/bash
sourceFile_a="/var/log/apache2/access.log"
sourcefile_e="/var/log/apache2/error.log"
outFile_a="/home/boris/public_html/access.htm"
outFile_e="/home/boris/public_html/error.htm"
# Обработка файла логов доступа
{
echo "<html><table border=1>"
cat -n $sourceFile_a | tac | \
awk '\
{printf "\n\
<tr bgcolor='#0099CC' align='center'>\n\
<td>%s</td>\n\
<td>%s</td>\n\
<td>%s %s</td>\n\
<td>%s %s</td>\n\
<td>%s %s %s %s %s %s %s %s</td>\n\
</tr>\n", $1, $2, $3, $4, $5, $6, $13, $14, $15, $16 , $17, $18, $19, $20 }\
{printf "\n\
<tr>\n\
<td></td>\n\
<td>Request (ont): </td>\n\
<td colspan='3'>%s %s %s %s</td>\n\
</tr>\n", $7, $8, $9, $10 }\
{printf "\n\
<tr>\n\
<td></td>\n\
<td>Response (in): </td>\n\
<td align='center'>%s</td>\n\
<td colspan='2'>%s</td>\n\
</tr>\n\n", $11, $12 }'
echo "</table>