Iptables. советы и примеры
Рассмотрим несколько полезных советов по iptable — блокировка IP-адресов, которые имеет 20 и более одновременных запросов и бан пула адресов конкретной страны.
1. Блокировка IP-адресов, которые имеет 20 и более одновременных запросов (drop ip addresses)
Несколько вариантов определения таких ip-адресов:
$ netstat -an| grep :80 | grep -v 127.0.0.1 |grep -v 0.0.0.0 |awk '{ print $5 }' | sort|awk -F: '{print $1}' | uniq -c | awk '$1 > 20 {print $2}'
$ netstat -apn | grep TIME_WAIT |awk '{print $5}' |awk -F: '{print $1}' | sort | grep -v 127.0.0.1 | grep -v 0.0.0.0 | awk '{ if ($1 > 20) print $1 }'
пишем такой bash скрипт:
#!/bin/bash
ipban=’netstat -an| grep :80 | grep -v 127.0.0.1 |grep -v 0.0.0.0 |awk ‘{ print $5 }’ | sort|awk -F: ‘{print $1}’ | uniq -c | awk ‘$1 > 20 {print $2}’
for ip in $ipban
do
iptables -A INPUT -s $ip -j DROP
done
Файлы зон для стран-регионов с IP-диапазонами берем: тут
#!/bin/bash
#COUNTRY = «cn.zone»
bandir=»/root/banips» # сюда кладем файл зоны .zone
bandir=»/root/banips» #put .zone files under /root/banips/,later comes the .zone files link
[ ! -d $bandir] && mkdir -p $bandir && echo «put .zone file in $bandir» && exit 0
IPTABLES = /sbin/iptables
if [ "$(id -u)" != "0" ]; then
echo «you must be root» 1>&2
exit 1
firesetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}resetrules
zonelists=`ls /root/banips/`
for COUNTRY in $zonelists
do
IPS=`cat $COUNTRY`
for ip in $IPS
do
echo «blocking $ip»
$IPTABLES -A INPUT -s $ip -j DROP
done
done
exit 0
Читаем еще:
- Проверка Linux сервер на предмет взлома
- Проверка системы на rootkit ‘руткиты’
- Защищаем сервер от атаки DNS Amplification с помощью fail2ban
- Настраиваем bash под себя
- Обзор бесплатных инструментов для аудита web-ресурсов и не только