Пятница, 08 апреля 2016 07:26

Хитрости с iptables

Это будет долгая и длинная статья о том что и как можно делать с помощью iptables. Предпологается что уже у Вас установленны все важные плюшки, а именно

apt-get install conntrack conntrackd libnetfilter-conntrack3 xtables-addons-dkms libnetfilter-queue1 

Небольй трюк по обману сетевых сканеров, но если сканирований будет много, это отразатся на работе процессора

iptables -A INPUT -p tcp -m tcp -m multiport --dports 135,139,1025 -j TARPIT

TARPIT открывает у вас на компьютере TCP/IP порт. Если некая система соединяется с таким портом, то закрыть такое соединение быстро не получится. Соединение зависнет до тех пор, пока само не прервется по таймауту. Причем система, которая инициировала соединение, будет тратить свои системные ресурсы, а наш сервер просто будет останавливать попытки передачи данных, что практически не расходует ресурсов.

Защита SSH от брутфорса

самый просто способ это поставить fail2ban и успокоиться, по молчанию он сам все настроит и сделает, но можно сделать так, если от котого приходит более одно пакета с заголовком NEW в течение 20 секунд, он отправляется в бан

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j TARPIT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

Фильтр по содержанию пакета

 Предположим нам надо блокировать все запросы которые идут на список от РосКомНадзора (это могут быть и ip и domen имена) а наш сервер это шлюз.

iptables -I FORWARD -s 10.0.0.0/8 -p tcp -m string --algo bm --string "bad-domen.ru" -j DROP

Есть два варианта использования --algo, bm ялвляется самый быстрый.

Защита от SYN-flood

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

Защита от сканеров портов

iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP

Фильтрация по дате

iptables -A FORWARD -p tcp --dport 80 -m time --timestart 06:00 --timestop 17:00 --weekdays Mon -j REJECT
Заворот трафика на Squid (proxy server)

1. Если прокси сервер на той же машине что и шлюз, то используем редирект (REDIRECT)

iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/24 -i $int_if -m multiport --dport 80,3128,8080,8081 -j REDIRECT --to-port 3128
2. Если на другой машине (имеет другой адрес)

iptables -t nat -A PREROUTING -i $int_if  -d 10.0.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 10.0.0.124:3128
Проброс портов внутрь сети

iptables -t nat -A PREROUTING -p tcp -d $ext_ip --dport 9000 -j DNAT --to-destination 10.0.0.3:3389
Для того что бы правильно и полностью работали соединения инициированные вашими компами внутри локалки наружу надо разрешить такие соединения

iptables -A FORWARD -i $int_if -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

Опубликовано в Linux

Это будет долгая статья, так как все перепровить быстро не получается.

Ставим себе задачу следить тайно за проходящем трафиком. У меня это делает старенький комп с тремя сетевыми картами, две из них соеденены в мост, а третья для управления.

eth2 - сетевая для управления сервером

eth0 и eth1 соеденены в мост

apt-get install bridge-utils

и пишем нужные нам данные в /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth2
iface eth2 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.3

auto vmbr1
iface vmbr1 inet manual
bridge_ports eth0 eth1
bridge_stp off
bridge_fd 0
Опубликовано в Linux
Суббота, 16 января 2016 09:46

Proxmox настройка сети

Настройка сети в Proxmox очень легка и сейчас я распишу несколько случаев. Предположим у нас в сервере (или ноде) всего 1 сетевая карта eth0 при установке proxmox'а он создал сетевой мост и вложил в него эту сетевую карточку и выдал на мосте такие настройки: ip 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1.

1. Каждой виртуальной машине выдается свой IP из 192.168.1.*

В данном случае все просто, при создании такой ВМ в качестве соединения мы выбираем мост с именем vmbr0

vmbr0

ВМ получит ip адрес сама если в сети 192.168.1.* выдаются адреса автоматически

Опубликовано в Linux
Вторник, 20 октября 2015 17:04

iptables настройка работы по времени

Для того что бы заставить работать блокировки iptables по времени, достаточно просто написать команду

iptables -I FORWARD -m ndpi --proto steam -s 10.10.10.101 -m time --timestart 09:00 --timestop 17:20 --weekdays Mon,Tue,Wed,Thu,Fri -j DROP

 и вот уже кое кто, не сможет поиграть в стим игры с 9 утра до 17:20 вечера на буднях

а еще запретим например сайт youtube.com

iptables -I FORWARD -s 10.0.0.0/8 -p tcp -m string --algo bm --string "youtube.com" -j DROP

почему --algo bm так потому что это самы быстрый сопособ обработаь запись, вот тут написано это

Опубликовано в Linux
Среда, 07 января 2015 11:20

пример настройки iptables

#!/bin/sh

echo "Loading iptables rules"
#определеяем сетевые карты
int_if="eth1"
ext_if="eth0"
ext_ip=`ifconfig  $ext_if | grep "inet addr" | awk '{print$2}' | sed 's/addr://'`
echo "$ext_ip"
echo 1 > /proc/sys/net/ipv4/ip_forward
#очищаем старые правила
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
modprobe ip_nat_ftp
modprobe ip_nat_pptp
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

echo "loopback allowed..."

iptables -A INPUT -i $int_if -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
echo "SSH allowed ..."
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

echo "RDP"
#iptables -t nat -A PREROUTING -p tcp -d $ext_ip --dport 9000 -j DNAT --to-destination 10.0.0.3:3389
#iptables -t nat -A PREROUTING -p tcp -d $ext_ip --dport 15432 -j DNAT --to-destination 10.0.0.3:4899
#iptables -A FORWARD -o $int_if -d 10.0.0.3 -p tcp --dport 3389 -j ACCEPT

echo "Ping allowed ..."
iptables -A INPUT -i $ext_if -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -i $ext_if -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
#iptables -A INPUT -p all -s 109.173.124.161 -j ACCEPT
iptables -A INPUT -i $ext_if -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i $ext_if -p udp --dport 1723 -j ACCEPT
iptables -A INPUT -i $ext_if -p 47 -j ACCEPT
iptables -A FORWARD -i $ext_if -p 47 -j ACCEPT
echo "mail rules ..."
iptables -A INPUT -p tcp -m multiport --dport 25,465,487,110,143,993,995,443 -j ACCEPT

echo "Allow established"
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT
iptables -A INPUT -s 185.8.6.16 -p all -j ACCEPT
#iptables -A INPUT -s 62.173.134.10 -p all -j ACCEPT
echo "SQUID redirect"
#iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/24 -i $int_if -m multiport --dport 80,3128,8080,8081 -j REDIRECT --to-port 3128
#iptables -A INPUT -p TCP -i $int_if --dport 3128 -j ACCEPT

echo "NAT for users"
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $ext_if -j MASQUERADE
#iptables -t nat -A POSTROUTING -o $ext_if -s 192.168.0.0/24 -j SNAT --to-source $ext_ip

echo "Local clients to inet"
iptables -A FORWARD -p ALL -m state --state RELATED,ESTABLISHED -j ACCEPT

 Дополнительные ограничения, например заблокировать все соединения, не инециализированные самим хостом.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT

Сбрасывать все соединеня на внешнем интерфесе с адресов серых сетей

iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP -m comment --comment "Сбрасываем сеть С"
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP -m comment --comment  "Сбрасываем сеть А"
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP -m comment --comment  "Сбрасываем сеть B"
iptables -A INPUT -i eth1 -s 224.0.0.0/4  -j DROP -m comment --comment  "Сбрасываем мультикаст"
iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP -m comment --comment  "Сбрасываем сеть Е"

Записать действия над пакетом и сбросить.

iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Работаем с диспазоном адресов

iptables -A INPUT -p tcp --destination-port 22 -m iprange --src-range 10.100.0.10-10.100.0.200 -j ACCEPT

Разрешаем только 2 соединения на 22 порт

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT

 

Опубликовано в Linux