Linux за българи: Форуми

Нетехнически теми => Идеи и мнения => Темата е започната от: VladSun в May 13, 2005, 00:16



Титла: Firewall, router
Публикувано от: VladSun в May 13, 2005, 00:16
Приемаме, че политиката по подразбиране на веригите е:

FORWARD - DROP
INPUT, OUTPUT, PREROUTING, POSTROUTING - ACCEPT

Машината изпълнява функции на рутер (със и без SNAT) и сървер за Интернет приложения

Тогава, какво бихте препоръчали да се промени/добави/премахне в тази защитна стена така, че да защитава както самия рутер, така и потребителите зад него?

Примерен код


#Block subnet gator.com;)
$ipt -I FORWARD 1 -d 64.152.73.0/24 -j DROP
$ipt -I FORWARD 1 -s 64.152.73.0/24 -j DROP

### MALFORMED PACKETS ###

#Smurf attack
$ipt -A INPUT -p icmp -d 0.0.0.255/0.0.0.255 -j DROP
$ipt -A FORWARD -p icmp -d 0.0.0.255/0.0.0.255 -j DROP

#Malformed xmas packets
$ipt -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$ipt -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP

#Malformed null packets
$ipt -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$ipt -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

#New tcp connections must be SYN packets!
$ipt -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$ipt -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

#Drop ICMP fragment packets
$ipt -A INPUT --fragment -p icmp -j DROP
$ipt -A OUTPUT --fragment -p icmp -j DROP
$ipt -A FORWARD --fragment -p icmp -j DROP

#others
$ipt -A INPUT -m state --state INVALID -j DROP
$ipt -A FORWARD -m state --state INVALID -j DROP

$ipt -A INPUT -m unclean -j DROP

### ROUTER PROTECTION ###

#Local IP addressing
$ipt -A PREROUTING -t mangle -s 192.168.2.1 -j DROP # вътрешното ИП на рутера
$ipt -A PREROUTING -t mangle -s 10.0.0.0/8 -j DROP
$ipt -A PREROUTING -t mangle -s 172.16.0.0/16 -j DROP
$ipt -A PREROUTING -t mangle -d 10.0.0.0/8 -j DROP
$ipt -A PREROUTING -t mangle -d 172.16.0.0/16 -j DROP

$ipt -A PREROUTING -t mangle -i ! lo -s 127.0.0.0/8 -j DROP

#UDP ports
$ipt -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT
$ipt -A INPUT -i eth1 -p udp -j DROP

#Block FTP, Telnet, Auth
$ipt -A INPUT -p tcp --dport 21 -j DROP
$ipt -A INPUT -p tcp --dport 23 -j DROP
$ipt -A INPUT -p tcp --dport 111 -j DROP

$ipt -A INPUT -p tcp --dport 113 -m state --state NEW,INVALID -j DROP

#Syn-flood protection
$ipt -N syn-flood
$ipt -F syn-flood
$ipt -A INPUT -p tcp --syn -j syn-flood
$ipt -A syn-flood -m limit --limit 10/s --limit-burst 8 -j RETURN
$ipt -A syn-flood -j REJECT

#Furtive port scanner
$ipt -N port-scanner
$ipt -F port-scanner
$ipt -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scanner
$ipt -A port-scanner -m limit --limit 10/s --limit-burst 4 -j RETURN
$ipt -A port-scanner -j REJECT

#Ping of death
$ipt -N PoD
$ipt -F PoD
$ipt -A INPUT -p icmp --icmp-type echo-request -j PoD
$ipt -A PoD -m limit --limit 10/s --limit-burst 4 -j RETURN
$ipt -A PoD -j REJECT

### USERS PROTECTION ###

#NetBios block
$ipt -A FORWARD -p tcp --dport 137:139 -j REJECT
$ipt -A FORWARD -p udp --dport 137:139 -j REJECT
#NetBios Windows 2000/XP block
$ipt -A FORWARD -p udp --dport 135 -j REJECT
$ipt -A FORWARD -p udp --dport 445 -j REJECT
$ipt -A FORWARD -p tcp --dport 135 -j REJECT
$ipt -A FORWARD -p tcp --dport 445 -j REJECT


Нека всеки препатил или не, даде по съветче и да стане една клоняща към идеална защитна стена ;)


Титла: Firewall, router
Публикувано от: в May 13, 2005, 12:32
Няколко неща които се набиват на очи:
1. Политиката по подразбиране на FORWARD e DROP, чудесно ... само дето по надолу виждаме FORWARD ... DROP, FORWARD ... REJECT, a FORWARD ... ACCEPT никъде ?
2. Лимитите тествал ли си ги или само си ги преписал от някъде? Една проста сметка позказва следното: SYN пакета е с дължина 40bytes (320 bits) -> --limit 10/s означава 10 пакета/с т.е. 320b*10/с или 3kbps което няма и 0.5 KB/s ?
3. #Block FTP, Telnet, Auth
$ipt -A INPUT -p tcp --dport 21 -j DROP
$ipt -A INPUT -p tcp --dport 23 -j DROP
$ipt -A INPUT -p tcp --dport 111 -j DROP
Не е ли по лесно да спреш telnetd и ftpd ? А и 111 порт се ползва от sunrpc а auth e на 113 порт, ти ще кажеш кое всъщност искаш да спреш.
Доста наедро си преписвал (то няма лошо и аз преписвам от разни HOWTO's, README's и др. TUTORIAL's) ама и ти малко повече старание вложи :) Бая си се ровил за да извадиш всичките тези защити (ако не ме лъже паметта още във версия 2.0.X на ядрото оправиха smurf, ping of Death, xmas и др.) ама накрая само си слепил фрагментите и толкоз :(


Титла: Firewall, router
Публикувано от: VladSun в May 13, 2005, 12:47
1. FORWARD ACCEPT има за определени ИП-та от вътрешната страна, но тъй като няма много общо със самата защитна стена съм го пропуснал :)

2. Пробвал съм ги - натоварването на Интернет приложенията е малко, така че няма проблеми (все пак става въпрос само за SYN пакети)

3. Честно казано, такова експлицитно забраняване ме кара да се чувствам по-сигурен ;) За auth си прав - коментара е стара версия ;)
За auth съм чел, че не е хубаво да се дропи (някои услуги отказвали достъп - прим. IRC), по-добре било да се REJECT-ва за да има някакъв отговор. Другото, което съм чел е, че трябва да има отговор само към RELATED връзките. Очаквам коментар по въпроса ...

За преписването - трудно е да се каже, че съм преписвал наедро - от една година я сглобявам/променям тая стена.

Аааа, това за фрагментацията не го разбрах .. Помощ? :)

ПП: По принцип е по-добре политиката на всички вериги да е DROP, но ви моля в случая да го пренебрегнете.

ППП: Интересно ми е и какъв е вашя коментар за начина на отказване на пакети - DROP или REJECT - четох, че някои вируси като атакуват машина са "вежливи" - т.е. ако получат port-closed престават да флудят, иначе ако порта е stealth-нат флудят здраво. НО също така четох и за обратния вариант ...


Титла: Firewall, router
Публикувано от: VladSun в May 13, 2005, 12:52
Нещо свързано с темата - опцията tcpsyncookies на кернела - много противоречиви коментари има в нета, та ми се иска някой по-навътре с нещата да си каже мнението


Титла: Firewall, router
Публикувано от: VladSun в May 15, 2005, 12:23
Чак толкова ли е безинтересна темата ...  :(