Разрешаем производить только 4 коннекта к 22 порту в течении 60 секунд:
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Как удалить iptables правило по номеру
iptables -L INPUT --line-numbers iptables -D INPUT номер iptables -t nat -L POSTROUTING --line-numbers iptables -t nat -D POSTROUTING номер
Как ограничить пропускную полосу для пакетов помеченных меткой через MARK
Сделать MARK, и загнать все такие трансферы в какой-либо класс шейпера. Т.е. если например помеченные пакеты — все их отнести к классу 1:51 где скорость ограничена от 32К до 64К:
tc filter add dev eth1 parent 1:0 protocol ip prio 100 handle 51 fw classid 1:51 tc class add dev eth1 parent 1:2 classid 1:51 htb rate 32Kbit ceil 64Kbit tc qdisc add dev eth1 parent 1:51 handle 51 sfq perturb 10
Как запретить пользователям качать большие файлы
— Собираем поддержку connbytes в patch-o-matic.
— Добавляем правило в firewall, например:
iptables -A FORWARD --connbytes 100000 -j REJECT
— теперь все TCP сессии более 100 Кбайт будут «обрезаны», необходимо добавить исключения для протоколов типа ssh, обычные «долгоживущие» чаты и т.п.
Борьба с Kazaa и прочим вредным трафиком путем вырезания пакетов по маске
— собираем поддержку «string» в patch-o-matic.
— смотрим на протокол Kazaa, в заголовках содержится:
HTTP/1.0 503 Service Unavailable.Retry-After: 3..X-Kazaa-Username: BlazeTre
— добавляем в firewall строчку — iptables -A FORWARD -m string —string «X-Kazaa-» -j REJECT
Как в Linux перебросить соединение через NAT во внутреннюю сеть (1)
Первый путь — пробрасывание только порта:
1) iptables -t nat -A PREROUTING -p tcp -d EXT_R_IP --dport 10000 -j DNAT --to-destination LOCAL_IP:80 2) iptables -A FORWARD -i eth0 -d LOCAL_IP -p tcp --dport 22 -j ACCEPT
Второй вариант — выброс всей машины наружу (если есть свободные адреса):
1) ifconfig eth0:0 NEW_IP netmask NETMASK broadcast BROADCAST 2) route add NEW_IP gw GW netmask 0.0.0.0 metric 1 dev eth0:0 3) iptables -t nat -A PREROUTING -p tcp -d NEW_IP -j DNAT --to-destination LOCAL_IP 4) iptables -A FORWARD -i eth0 -d LOCAL_IP -j ACCEPT
Обозначения: EXT_R_IP — внешний IP роутера, LOCAL_IP — внутренний IP машины, которую хочешь выбросить NEW_IP — новый IP на который хочешь посадить машину, которая имеет локальный LOCAL_IP NETMASK, BROADCAST, GW — внешние netmask, broadcast и gateway
Пример настройки NAT с привязкой к IP под Linux
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth0 -j SNAT --to-source 212.23.98.45
или (без привязки к IP)
ipchains -A forward -j MASQ -s 192.168.0.0/16 -d 0.0.0.0/0
или (через iproute2)
ip rule add from 10.0.1.0/24 nat 254.147.38.14
Другой способ трансляции адресов:<
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -j MASQUERADE
Как ограничить через iptables максимальное число одновременных соединений с одного IP.
# Максимум 10 одновременных соединений к 80 порту с одного IP iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT # Блокируем на стадии SYN iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10 # 20 соединений на сеть класса С iptables -p tcp --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT
Как посмотреть статистику по PREROUTING цепочкам в iptables.
> Делаю: >
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128 >
По iptables -L ничего не показывается.
Используйте:
iptables -t nat -L
Как настроить пакетный фильтр для фильтрации по содержимому пакетов
Следующие правила блокируют прохождение пакетов, данные в которых содержат подстроку virus.exe и ведут лог пакетов с строкой secret внутри:
iptables -A INPUT -m string --string "secret" -j LOG --log-level info --log-prefix "SECRET" iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --string "virus.exe" # Block Code Red iptables -I INPUT -j DROP -p tcp -m string --string "cmd.exe" # Block Nimda iptables -I INPUT -j DROP -p tcp -m string --string "root.exe" iptables -I INPUT -j DROP -p tcp -m string --string "default.ida"
Как настроить NAT (транслятор адресов) для нормальной работы с FTP и ICQ в Linux
iptables:
modprobe iptable_nat modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ip_nat_irc
ipchains:
modprobe ip_masq_ftp modprobe ip_masq_raudio modprobe ip_masq_irc modprobe ip_masq_icq
Можно ли отфильтровывать пакеты (вести лог) в зависимости от UID пользователя ?>
Для FreeBSD:
ipfw add count tcp from any to not 192.168.1.0/24 uid 231
uid user (или gid group) — под правило попадают все TCP или UDP пакеты посланный или принятые пользователем user (группой group).
В Linux в ядрах 2.4.x в iptables можно использовать модуль owner.
Ограничение трафика через iptables (1)
iptables --new-chain car iptables --insert OUTPUT 1 -p tcp --destination-port 25 -o eth1 --jump car iptables --append car -m limit --limit 20/sec --jump RETURN iptables --append car --jump DROP