Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

13.02.2007, 19:07
|
|
Участник форума
Регистрация: 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..
|
|
|

13.02.2007, 19:31
|
|
Участник форума
Регистрация: 11.09.2006
Сообщений: 239
Провел на форуме: 626169
Репутация:
167
|
|
|
|
|

13.02.2007, 20:17
|
|
Участник форума
Регистрация: 25.01.2006
Сообщений: 158
Провел на форуме: 1000724
Репутация:
361
|
|
Да и, думаю, это ни к чему.
Кому как, но мне так очень не понравилось бы если бы по моему компу кроме меня шарился кто-нибудь еще(я вообще немного параноик  ), поэтому и заморачиваюсь с настройкой фаервола. За ссылки, конечно, спасибо, только я таких и множества подобных этим руководств начитался пока разбирался с iptables  . Что можно я уже взял из них, поэтому и интересуюсь чужими правилами/скриптами, потому что в них можно найти что-нить поинтереснее чем в общих руководствах.
|
|
|

14.02.2007, 00:44
|
|
ы
Регистрация: 11.02.2007
Сообщений: 750
Провел на форуме: 1347723
Репутация:
1477
|
|
Советую почитать мою статью о расширенных возможностях iptables. Хотя писалась она давно (начало 2005 года) и большинство модулей перекачевали в стандартную поставку ядра без доустановки patch-o-matic (если кто помнит - было такое раньше извращение =)).
http://hellknights.void.ru/articles/...d_IpTables.htm
Там множество интересных примеров.
Кроме того привожу пример и пояснения из руководства gentoo, хотя он больше подходит для сервеной машины:
Код:
/etc/init.d/firewall
#!/sbin/runscript
IPTABLES=/sbin/iptables
IPTABLESSAVE=/sbin/iptables-save
IPTABLESRESTORE=/sbin/iptables-restore
FIREWALL=/etc/firewall.rules
DNS1=212.242.40.3
DNS2=212.242.40.51
#inside
IIP=10.0.0.2
IINTERFACE=eth0
LOCAL_NETWORK=10.0.0.0/24
#outside
OIP=217.157.156.144
OINTERFACE=eth1
opts="${opts} showstatus panic save restore showoptions rules"
depend() {
need net
}
rules() {
stop
ebegin "Setting internal rules"
einfo "Setting default rule to drop"
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
#default rule
einfo "Creating states chain"
$IPTABLES -N allowed-connection
$IPTABLES -F allowed-connection
$IPTABLES -A allowed-connection -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed-connection -i $IINTERFACE -m limit -j LOG --log-prefix \
"Bad packet from ${IINTERFACE}:"
$IPTABLES -A allowed-connection -j DROP
#ICMP traffic
einfo "Creating icmp chain"
$IPTABLES -N icmp_allowed
$IPTABLES -F icmp_allowed
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
time-exceeded -j ACCEPT
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
destination-unreachable -j ACCEPT
$IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP traffic:"
$IPTABLES -A icmp_allowed -p icmp -j DROP
#Incoming traffic
einfo "Creating incoming ssh traffic chain"
$IPTABLES -N allow-ssh-traffic-in
$IPTABLES -F allow-ssh-traffic-in
#Flood protection
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL RST --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL FIN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
ALL SYN --dport ssh -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT
#outgoing traffic
einfo "Creating outgoing ssh traffic chain"
$IPTABLES -N allow-ssh-traffic-out
$IPTABLES -F allow-ssh-traffic-out
$IPTABLES -A allow-ssh-traffic-out -p tcp --dport ssh -j ACCEPT
einfo "Creating outgoing dns traffic chain"
$IPTABLES -N allow-dns-traffic-out
$IPTABLES -F allow-dns-traffic-out
$IPTABLES -A allow-dns-traffic-out -p udp -d $DNS1 --dport domain \
-j ACCEPT
$IPTABLES -A allow-dns-traffic-out -p udp -d $DNS2 --dport domain \
-j ACCEPT
einfo "Creating outgoing http/https traffic chain"
$IPTABLES -N allow-www-traffic-out
$IPTABLES -F allow-www-traffic-out
$IPTABLES -A allow-www-traffic-out -p tcp --dport www -j ACCEPT
$IPTABLES -A allow-www-traffic-out -p tcp --dport https -j ACCEPT
#Catch portscanners
einfo "Creating portscan detection chain"
$IPTABLES -N check-flags
$IPTABLES -F check-flags
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit \
--limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit \
5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
-m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit \
--limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit \
--limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Apply and add invalid states to the chains
einfo "Applying chains to INPUT"
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -p icmp -j icmp_allowed
$IPTABLES -A INPUT -j check-flags
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -j allow-ssh-traffic-in
$IPTABLES -A INPUT -j allowed-connection
einfo "Applying chains to FORWARD"
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -p icmp -j icmp_allowed
$IPTABLES -A FORWARD -j check-flags
$IPTABLES -A FORWARD -o lo -j ACCEPT
$IPTABLES -A FORWARD -j allow-ssh-traffic-in
$IPTABLES -A FORWARD -j allow-www-traffic-out
$IPTABLES -A FORWARD -j allowed-connection
einfo "Applying chains to OUTPUT"
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -p icmp -j icmp_allowed
$IPTABLES -A OUTPUT -j check-flags
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -j allow-ssh-traffic-out
$IPTABLES -A OUTPUT -j allow-dns-traffic-out
$IPTABLES -A OUTPUT -j allow-www-traffic-out
$IPTABLES -A OUTPUT -j allowed-connection
#Allow client to route through via NAT (Network Address Translation)
$IPTABLES -t nat -A POSTROUTING -o $OINTERFACE -j MASQUERADE
eend $?
}
start() {
ebegin "Starting firewall"
if [ -e "${FIREWALL}" ]; then
restore
else
einfo "${FIREWALL} does not exists. Using default rules."
rules
fi
eend $?
}
stop() {
ebegin "Stopping firewall"
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
eend $?
}
showstatus() {
ebegin "Status"
$IPTABLES -L -n -v --line-numbers
einfo "NAT status"
$IPTABLES -L -n -v --line-numbers -t nat
eend $?
}
panic() {
ebegin "Setting panic rules"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
eend $?
}
save() {
ebegin "Saving Firewall rules"
$IPTABLESSAVE > $FIREWALL
eend $?
}
restore() {
ebegin "Restoring Firewall rules"
$IPTABLESRESTORE < $FIREWALL
eend $?
}
restart() {
svc_stop; svc_start
}
showoptions() {
echo "Usage: $0 {start|save|restore|panic|stop|restart|showstatus}"
echo "start) will restore setting if exists else force rules"
echo "stop) delete all rules and set all to accept"
echo "rules) force settings of new rules"
echo "save) will store settings in ${FIREWALL}"
echo "restore) will restore settings from ${FIREWALL}"
echo "showstatus) Shows the status"
}
Здесь следует пояснить следующее:
Подключения к межсетевому экрану разрешены только через SSH (порт 22)
Локальная сеть должна иметь доступ к HTTP, HTTPS и SSH (также должен быть разрешен DNS)
ICMP может содержать постороннюю информацию и не должен быть разрешен. Конечно же, мы разрешаем некоторые ICMP-сообщения.
Сканирование портов должно быть определено и зарегистрировано
SYN-flood атаки должны быть пресечены
Весь остальной трафик должен быть отброшен и запротоколирован.
Вот несколько советов при создании правил для межсетевого экрана:
Создайте политику межсетевого экрана до того, как ее реализуете
Сделайте ее простой
Знайте принцип работы каждого протокола (прочитайте подходящий RFC)
Всегда помните, что межсетевой экран — это просто программа, запускаемая с правами администратора.
Проверьте свой межсетевой экран
Если вам кажется, что iptables труден для понимания или нужно слишком много времени для настройки межсетевого экрана, то вы можете попробовать Shorewall. Для генерации правил межсетевого экрана он использует iptables, но акцентируется на правилах и не указывает протокол.
А вот у HaOS'a я не понял зачем сначала было делать так:
Код:
# Устанавливаем политику по умолчанию ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
Ставь сразу в DROP.
А потом перебирать все модули. Поясни, pls =)
А так я бы ему за работу "+" поставил, если б мог =)
__________________
..когда же кто-нибудь выпустит MD5(Unix) брутер на GPU.... жду....
Последний раз редактировалось ShadOS; 14.02.2007 в 00:58..
|
|
|

14.02.2007, 02:49
|
|
Участник форума
Регистрация: 25.01.2006
Сообщений: 158
Провел на форуме: 1000724
Репутация:
361
|
|
А вот у HaOS'a я не понял зачем сначала было делать так:
Код:
# Устанавливаем политику по умолчанию ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
Так ты ж посмотри в какой функции все это делается - stop_firewall()
Политики по умолчанию устанавливаются в ACCEPT, потому что если я этого не сделаю, то при остановке фаервола они остануться в DROP, тогда получается, что ты остановил фаер, а он все равно все дропает
Она и стоит в DROP в соответствующей функции
А потом перебирать все модули. Поясни, pls =)
И модули перебираются в той же функции.
stop_firewall()
{
...
# Выгружаем модули
if [ "`lsmod|grep iptable_filter|awk '{print $1}'|grep iptable_filter`" = "iptable_filter" ]; then
/sbin/rmmod iptable_filter;
fi
...
}
Тут проверяется, загружен ли указанный модуль, и если да, то он выгружается из оперативки. Этого конечно можно и не делать, просто мне вывод lsmod глаза мозолит(хоть и нечасто туда заглядываю  ), не люблю когда много буковок выводит =)
Статью твою обязательно прочитаю в ближайшее время. А в скрипте, который ты привел я уже нашел несколько интересных для меня вещей. Tnx 
|
|
|

14.02.2007, 17:38
|
|
ы
Регистрация: 11.02.2007
Сообщений: 750
Провел на форуме: 1347723
Репутация:
1477
|
|
Спасибо, прояснил. Насчёт Accept я сразу что-то не заметил... невнимательность...
__________________
..когда же кто-нибудь выпустит MD5(Unix) брутер на GPU.... жду....
|
|
|

15.02.2007, 15:26
|
|
Участник форума
Регистрация: 25.01.2006
Сообщений: 158
Провел на форуме: 1000724
Репутация:
361
|
|
Неужели больше никто не пользуется iptables?
|
|
|

15.02.2007, 19:38
|
|
Участник форума
Регистрация: 04.02.2007
Сообщений: 120
Провел на форуме: 306837
Репутация:
36
|
|
пользовался раньше, сейчас в этом нет необходимости.
всё в policy ACCEPT.
|
|
|

16.02.2007, 16:11
|
|
Познающий
Регистрация: 19.11.2006
Сообщений: 60
Провел на форуме: 320906
Репутация:
63
|
|
Понравилось у ShadOS. Хотя у меня правила намного проще прописаны. Хотя за старания + обоим
|
|
|

22.02.2007, 15:17
|
|
Познающий
Регистрация: 12.01.2006
Сообщений: 52
Провел на форуме: 297990
Репутация:
140
|
|
Кому интересно это то что у меня:
Код:
#!/bin/sh
IPTABLES=/sbin/iptables
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -i ! lo -j DROP
#traffic count begin #правила для моей системы учета трафика состоящей из 2х скриптов.
$IPTABLES -A INPUT -i ppp+ -j LOG --log-prefix "count"
$IPTABLES -A OUTPUT -o ppp+ -j LOG --log-prefix "count"
#traffic count end
#разрешаю все коннекты на мой фтп в локальной сети
$IPTABLES -A INPUT -i eth+ -p tcp -m multiport --dport 21 -j ACCEPT
#устанавливаем в заголовке пакетов величину ttl (Time To Live): исходящие 64, входящие 128. Приведу цитату из мануала "Увеличение поля TTL может использоваться для того, чтобы сделать наш брандмауэр менее "заметным" для трассировщиков (traceroutes). Программы трассировки любят за ценную информацию при поиске проблемных участков сети, и ненавидят за это же, поскольку эта информация может использоваться крякерами в неблаговидных целях."
$IPTABLES -t mangle -A OUTPUT -j TTL --ttl-set 64
$IPTABLES -t mangle -A PREROUTING -m ttl --ttl-gt 128 -j TTL --ttl-set 128
$IPTABLES -t mangle -A PREROUTING -m ttl --ttl-lt 128 -j TTL --ttl-set 128
$IPTABLES -t mangle -A PREROUTING -p TCP --dport 33434:33542 -j TTL --ttl-inc 1
#TV begin #Здесь специфические правила, разрешающие прием радио и теле передач в локальной сети.
$IPTABLES -A INPUT -i eth+ -s 192.168.172.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -d 225.10.10.0/28 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -s 192.168.204.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -d 192.168.204.0/24 -j ACCEPT
#TV end
#Запретить все входящие на локальные интерфейсы источником назначения которых не является мой ip
$IPTABLES -A INPUT -i eth+ -d ! 10.x.x.x -j DROP
#Запретить все входящие на порт 80,21,4662 из интернета.
$IPTABLES -A INPUT -i ppp+ -p tcp -m multiport --dport 80,21,4662 -j DROP
#icmp security begin #Настройка безопасности протокола icmp
#Эта строка блокирует icmp пакеты (тип 8) т.е запрос, которые превышают установленное количество в единицу времени. Т.о это позволяет избежать атаки вида пинг-флуд. на лишние пакеты отсылается ответ Destination host administratively prohibited
$IPTABLES -A INPUT -p icmp --icmp-type 8 -m limit --limit 30/minute --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p icmp --icmp-type 8 -j DROP
#Эта строка блокирует icmp пакеты (тип 0) т.е ответ, эта нужно для того, чтобы когда я буду сам проводить атаку такого типа, ответы от атакуемого хоста не забивали мне канал :)
$IPTABLES -A INPUT -p icmp --icmp-type 0 -m limit --limit 1/second --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j DROP
#Все остально пропускается тоже по принципу "количество в единицу времени"
$IPTABLES -A INPUT -p icmp -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p icmp -j DROP
#icmp security end
#udp security begin# Настройка безопасности протокола udp
$IPTABLES -A INPUT -i lo -j ACCEPT
#Разрешаю все с адреса 10.y.y.y для игры в quake3 :) разрешаю все коннекты с адресов источником которых является 53й порт.
$IPTABLES -A INPUT -i eth+ -s 10.y.y.y -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT
#Лимит в единицу времени, чтобы не зафлудили.
$IPTABLES -A INPUT -p udp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p udp -j DROP
#udp security end
#tcp security begin #настройка tcp
#первые 2 строки логирование и сброс пакетов с флагами SYN,ACK SYN,ACK имеющими статус NEW
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j LOG --log-prefix "new_syn/ack " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,ACK -j ACCEPT
#(sync secure bgin) #TARPIT сейчас не использую.
#$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 79 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 81 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 1 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 8008 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 8080 -j TARPIT
#Защита от syn атак.
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -m limit --limit 15/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -j LOG --log-prefix "left_syn " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -j DROP
#(sync secure end)
#Далее те состояния о которых я знаю, разрешены, те состояния которых быть не может запрещены.
#(scan inherit secure begin)
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 15/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j LOG --log-prefix "left_rst " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
#(scan inherit secure end)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "new_nesyn " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -m state --state INVALID -j DROP
#$IPTABLES -A INPUT -p tcp -m tcp --dport 137:139 -j TARPIT
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp -j DROP
#tcp security end
#все что я упустил, записывается в лог, и блокируется.
#$ipt -A FORWARD -p tcp --syn -i eth1 -m connlimit --connlimit-above 15 -j REJECT
$IPTABLES -A INPUT -p ALL -j LOG --log-prefix "proto_left " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p ALL -j DROP
$IPTABLES -A FORWARD -j DROP
$IPTABLES -A INPUT -j DROP
p.s про TARPIT почитать можно здесь: Скрытые возможности iptables
Скачать патч можно здесь: patch-o-matic-ng
Последний раз редактировалось BMaster; 22.02.2007 в 15:30..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|