ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Безопасность > *nix
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Rules for Iptables
  #1  
Старый 13.02.2007, 19:07
Аватар для L0rd_Ha0S
L0rd_Ha0S
Участник форума
Регистрация: 25.01.2006
Сообщений: 158
Провел на форуме:
1000724

Репутация: 361
По умолчанию Rules for Iptables

Давно собирался настроить на своем десктопе фаервол (iptables), наконец дошли руки и до него Настроил, но теперь вот интересуют любые интересные правила, к примеру правила для защиты от разного вида атак и т.п. Интересно было бы посмотреть на правила/скрипты, которыми пользуетесь Вы. Возможно там найдутся какие-нибудь полезные строки . Кому не жалко, выкладывайте сюда. Начну с себя, вот мой стартовый скрипт инициализации фаервола, который я написал для удобства запуска/остановки фаервола(вообще,у меня он запускается во время загрузки системы INIT'ом, но иногда бывает нужно временно отключить его), все правила написаны исключительно по моим потребностям, немного переделав правила "под себя" (если, конечно, они вас не устраивают) можете использовать его для своих целей.

Вот сам скрипт:
Код:
#!/bin/bash
# iptables-control
# Author: L0rd_Ha0S
# Скрипт для запуска/остановки iptables
# Правила построены по принципу "что не разрешено-то запрещено"
# Charset for comments: UTF-8
# Date: Feb 12, 2007
#
# Parameters
IPTABLES="/sbin/iptables"
INET_IFACE="ppp+"
DNS1="`cat /etc/ppp/pppoe.conf|grep DNS1|grep -v "#"|sed 's/DNS1=//g'`"
DNS2="`cat /etc/ppp/pppoe.conf|grep DNS2|grep -v "#"|sed 's/DNS2=//g'`"
LAN_IFACE="eth0"
LAN_IP="192.168.1.52"
LAN_ADDR="192.168.1.0/24"
LO_IFACE="lo"

# Functions: stop_firewall, start_firewall

stop_firewall()
{
echo -ne " \033[01;36m*\033[00m Stopping firewall"

# Перенаправляем stdout и stderr в /dev/null
exec 3>&1 4>&2 1>/dev/null 2>/dev/null

# Сбрасываем все правила
$IPTABLES -F
# Удаляем все пользовательские цепочки
$IPTABLES -X

# Устанавливаем политику по умолчанию ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

# Восстанавливаем stdout и stderr
exec 1>&3 2>&4

echo -e "\t\t\t\t\t\t\t\t\t\t\t\t\t \033[01;32m[ ok ]\033[00m"
}

start_firewall()
{
echo -e " \033[01;36m*\033[00m Starting firewall"

# Перенаправляем stdout и stderr в /dev/null
exec 3>&1 4>&2 1>/dev/null 2>/dev/null

## Загрузка модулей
/sbin/depmod -a

/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe ipt_LOG
/sbin/modprobe ip_conntrack_ftp

## Определяем правила фаервола
# Устанавливаем политики по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

# Сбрасываем старые правила, чтобы они не смешивались с новыми
$IPTABLES -F
# Удаляем все пользовательские цепочки
$IPTABLES -X

## Общие правила
# Разрешаем руту доступ в сеть
$IPTABLES -A OUTPUT -m owner --uid-owner root -j ACCEPT
# Запрещаем nobody доступ в сеть
$IPTABLES -A OUTPUT -m owner --uid-owner nobody -j DROP

# icmp
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 13 -j DROP # Deny Timestamp request
$IPTABLES -A INPUT -p icmp --icmp-type 15 -j DROP # Deny Information request
$IPTABLES -A INPUT -p icmp --icmp-type 17 -j DROP # Deny Address mask request
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -j ACCEPT


## loopback
# Разрешаем весь обмен данными через loopback
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT

## Локальная сеть
# Тут разрешаем необходимые порты
# Заносим в лог все попытки соединения с 21,22,23,80 портами из сети $LAN_ADDR
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 21 -s $LAN_ADDR -m state --state NEW -j ULOG --ulog-prefix "FTP REQUESTS FROM LAN:"
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 22 -s $LAN_ADDR -m state --state NEW -j ULOG --ulog-prefix "SSH REQUESTS FROM LAN:"
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 23 -s $LAN_ADDR -m state --state NEW -j ULOG --ulog-prefix "TELNET REQUESTS FROM LAN:"
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 80 -s $LAN_ADDR -m state --state NEW -j ULOG --ulog-prefix "WEB REQUESTS FROM LAN:"
# Заносим в лог и уничтожаем все пакеты, которые имеют статус NEW, но SYN-флаг в которых не установлен
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp ! --syn -m state --state NEW -j ULOG --ulog-prefix "NEW NOT SYN FROM LAN:"
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp ! --syn -m state --state NEW -j DROP
# Уничтожаем все пакеты, имеющие статус INVALID
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp -m state --state INVALID -j DROP
# Запрещаем все попытки установления соединения
$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --syn -j REJECT
# Что-то вроде политики по умолчанию для $LAN_IFACE
$IPTABLES -A INPUT -i $LAN_IFACE -s $LAN_ADDR -d $LAN_IP -p ! icmp -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN_IFACE -s $LAN_IP -d $LAN_ADDR -p ! icmp -j ACCEPT


## Интернет
# Тут разрешаем необходимые порты
# Заносим в лог все попытки соединения с 21,22,23,80 и непривилегированными портами
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 21 -m state --state NEW -j ULOG --ulog-prefix "FTP REQUESTS FROM INET:"
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 22 -m state --state NEW -j ULOG --ulog-prefix "SSH REQUESTS FROM INET:"
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 23 -m state --state NEW -j ULOG --ulog-prefix "TELNET REQUESTS FROM INET:"
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 80 -m state --state NEW -j ULOG --ulog-prefix "WEB REQUESTS FROM INET:"
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 1024:65535 -m state --state NEW -j ULOG --ulog-prefix "ATTEMPT TO CONNECT TO UNPORT:"
# Заносим в лог и уничтожаем все пакеты, которые имеют статус NEW, но SYN-флаг в которых не установлен
$IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j ULOG --ulog-prefix "NEW NOT SYN FROM INET:"
$IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP
# Уничтожаем все пакеты, имеющие статус INVALID
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m state --state INVALID -j DROP
# Запрещаем все попытки установления соединения
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --syn -j DROP
# Разрешаем пакеты из установленных соединений
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
# принимаем DNS-ответы
$IPTABLES -A INPUT -i $INET_IFACE -p udp --sport 53 -s $DNS1 -j ACCEPT
$IPTABLES -A INPUT -i $INET_IFACE -p udp --sport 53 -s $DNS2 -j ACCEPT
# Заносим в лог и разрешаем исходящие соединения только на эти порты
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m multiport --dports 20,21,23,25,110,465,989,990,994,995 -m state --state NEW -j ULOG --ulog-prefix "OUTGOING REQUESTS"
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m multiport --dports 1080,8080,1194,1433,1434,1723,3306,9999 -m state --state NEW -j ULOG --ulog-prefix "OUTGOING REQUESTS"
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m multiport --dports 20,21,22,23,25,80,110,443,465,989,990,994,995 -j ACCEPT
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m multiport --dports 1080,8080,1194,1433,1434,1723,3306,5190,9999 -j ACCEPT
# Разрешаем DNS-запросы
$IPTABLES -A OUTPUT -o $INET_IFACE -p udp --dport 53 -d $DNS1 -j ACCEPT
$IPTABLES -A OUTPUT -o $INET_IFACE -p udp --dport 53 -d $DNS2 -j ACCEPT
# Устанавливаем ловушки. Работает только при устновленном Patch-o-matic
#$IPTABLES -A INPUT -p tcp -j TARPIT

# Восстанавливаем stdout и stderr
exec 1>&3 2>&4

echo -e "\t\t\t\t\t\t\t\t\t\t\t\t\t \033[01;32m[ ok ]\033[00m"
}



if [ $UID = 0 ]; then
	case "$1" in 
		start)
			start_firewall
			exit 0
			;;
		restart|reload|force-reload)
			stop_firewall
			start_firewall
			exit 3
			;;
		stop)
			stop_firewall
			exit 0
			;;
		*)
			progname=`echo $0|sed 's/\/usr//g'|sed 's/\/local//g'|sed 's/\/sbin//g'|sed 's/\/bin//g'|sed 's/\///g'|sed 's/\.//g'`
			echo -e " Usage: $progname \033[01;32m{\033[00mstart\033[01;32m|\033[00mrestart\033[01;32m|\033[00mstop\033[01;32m}\033[00m"
			exit 1
			;;
	esac;
else
	echo -e " \033[31mYou must be root!\033[00m";
fi

exit 0

Последний раз редактировалось L0rd_Ha0S; 26.11.2007 в 04:33..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Announcement: Rules of the "English zone" NeMiNeM Forum for discussion of ANTICHAT 0 19.03.2006 16:36



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ