Firewall своїми руками, Linux, Операційні системи, статті

 Матеріал не готовий, поки сюди звалюються нотатки та інформація до роздумів.

Запуск маськарадінг для діалап-клієнтів

echo 1> / proc/sys/net/ipv4/ip_forward # без форвардінга не запрацює ipfwadm-F-p deny # заборонити всім ipfwadm-F-am-S 195.0.0.2 / 0-D 0.0.0.0 / 0 # дозволити адресою 195.0.0.2 ipfwadm-F-am-S 192.22.22.68 / 0-D 0.0.0.0 / 0 # дозволити адресою 195.0.0.2

Обмежити трафік конкретної машини в мережі

while sleep 5
do
ipfw add 111 drop ip from baduser.host.name to any
sleep 15
ipfw delete 111
done

Статистика і accounting

NET-3 HOWTO (razdel "IP Accounting") i "man ipfwadm"

Проброс зі свого порту на чужу машину

myhost:82 -- > secondhost:8499
ipfwadm -Fa accept -b -P tcp -S 0/0 82 -D secondIPaddr/32 8499

Налаштування пакетного фільтра

Date: 7 May 1998
From: Igor Mikhayliuk
Якось раз, середа 6 травня 1998 10:06, Dima Volodin писав All:
DV> Немає такого стандарту. Є таке _умолчаніе_, що якщо порт не вказаний, то DV> це - 80 в разі http і 443 у разі https. Про взагалі ж кажучи, от DV> живий приклад з життя - потрапивши якось за фіревол, сконфігуренний одним DV> умільцем від NT, я ніяк не міг скористатися пошуком по CNNовскому DV> сайту - він у них (у CNN) висить на якомусь лівому порту (скажімо, 8765). DV> Дратувало страшно. Довелося зробити конфігурацію з трьох пальців, ssh і DV> далекого proxy. Слава богу, що хоч 22 порт відкритий був (після деякого DV> бризкання слиною з мого боку).
Злісний який адмін попався, добре, хоч не вологостійкий.
;)
DV> Коротше, суть в тому, що у "не хто хоче розбиратися з кожною черговою DV> інетовской прогою "дуже туманне уявлення про TCP зокрема і про IP DV> взагалі, і таки йому треба б спочатку розібратися з предметом, а потім вже DV> приступати до конфігуренію фіреволов.
Це, мабуть, заява із серії: "WinNT адмін Суксь і мастдай"?
DV> І в менш роздратованому тоні -
Ось це є вельми добре.
:)
DV> відкривати треба все _ісходящіе_ TСРшние DV> сполуки, що входять же пускати тільки на конкретні хости і порти, DV> на DV> яких висять публічно доступні сервіси. Крім того, зазвичай відкривають DV> UDРшний трафік на domain (53), ntp (123), real-чого-то там і т.д. і, для DV> блезиру, що входить icmp. Щоб працював ping, треба окрить і вихідний icmp, DV> і щоб працював traceroute - udp на тих верхніх портах, якими він DV> безсоромно користується. Хоча, наскільки я чув, MSовскій tracert працює DV> не так, як юніксний traceroute, тут не мені розповідати. Ну і, DV> природно, блокується весь вихідний трафік з чужими src (це не DV> стільки security, скільки хороший тон), весь вхідний трафік на чужій dst DV> і весь вхідний трафік зі своїм src.
Загалом стисло і дуже добре описав, спасибі.
DV> Швидше за все, чогось забув, але тут досить народу, щоб виправити і DV> доповнити.
А тепер, все-таки уточню, звідки ростуть ноги у мого вихідного листа. Велл ноун сервайсес на те й велл ноун, щоб всі знали, які протоколи / порти вони використовують. Всім відомо, що ФТП за замовчуванням використовує 21-й порт, а деяким навіть відомо, що ще й 20-й. Але коли справа доходить до чогось менш традиційного, виникає проблема. Вона вирішується шляхом послідовного читання доки, якщо не допомогло, пошуку в Інеті, на худий кінець, з використанням сніффер. Природно на це йдуть сили і час. Тому мені здавалося логічним, що де-небудь існують накопичені дані про те, які програми що юзають. У мене навіть є підозра, що в хелпе / доках на крутий файрволл, сніффер і т.п. таке цілком можна знайти. І я попросив допомоги клубу. Можливо, небажання розбиратися в кожній принесеної юзером мульк здається тобі ламерізмом, але мені шкода витрачати на це час. А іноді я просто не знаю, як з цим впоратися. Живий приклад - мені вже тім'ячко продовбали з мережевою чатілкой WinTalk. Штука дійсно зручна, але доки до неї взагалі немає, з автором зв'язатися не вдалося, дуже обмежений сніффер, яким я маю, показує мені тільки результат - сесію на парі послідовних довільних портів за 1024. Як вона встановлює сесію, поняття не маю. Я навіть напружився і скачав тріалку якогось монстрообразних сніффер, Guardian Session Wall-3, і був дуже втішений, коли виявив, що цей монстр, з більш, ніж двадцятиметровому дистрибутив благополучно Трапан відеопідсистему.
:( Загалом, постався з розумінням до того, що адміну НТевой сітки так само складно знаходити інфу / програми, що стосуються WAN, як юніксоід небудь DTP пакет. А людині, яка працює в маленькій фірмі і, крім сітки, колупається в залозі, витирає соплі юзерам, супроводжує ДБ і багато чого ще робить по роботі, не завжди вистачає часу на глибоке освоєння тонкощів мережевого взаємодії.
:)

Sentry Port Scan Detector 0.60

Date: 28 May 1998 05:45:05 -0000
From: crowland@psionic.com
Sentry is a port scan detector for Linux, *BSD, and most UNIX variants.
Sentry monitors your systems for port probing activity and will then take
any of the following actions:
1) Log the attacker hostname/IP and ports probed.
2) Run external program.
3) Configure routing table to drop route of attacking host.
4) Configure local packet filter (ipfwadm/ipfw) to drop all packets from
attacking host.
Sentry will now detect and respond to stealth scans against your host from
advanced scanners such as nmap:
www.insecure.org/nmap/index.html

* Ще для firewall потрібно *

NAT - Network Address Translation - налаштовується в ядрі командою
ipfwadm
Відключити роутинг.
Kernel reconfigure
Закрити вхідні сервіси.
TCPD
Proxy для httpd, ftp, і т.д.
squid
Proxy для Телнет, ftp, X11
TIS fw tollkit
Proxy для довільного TCP всього
socks5

Приклад налаштування фільтра IPFWADM

Date: 17 Jun 1998
From: MushyPea
On Tue, 16 Jun 1998, Avery Pennarun wrote:
> Here is the script I use on my home IP masquerade system. It is designed
> to deny everything except what is specifically allowed in some of the
> definitions near the top. Note that there is one fatal problem -- the
> input firewall is changed to allow incoming data back to ports 1024
> through 65535, because any of those might have been used to create an
> _outgoing_ connection (and thus might have data been sent back to them).
> NFS servers might run on one of these high port numbers, so watch out.
I do the following:
1) To make the script more readable, use variables:
ME="a.b.c.d/32"
HI="1024:65535"
ANY="0.0.0.0/0"
2) Use "-y -o" options to log all connection attempts (ie. SYN bit set) to
syslog (you need verbose firewall logging compiled into the kernel), and
accept the packets in both directions for these connections.
2a) Example of a bi-directional service
# SMTP mail traffic
/bin/echo -n "SMTP/"
/sbin/ipfwadm -O -a accept -P tcp -S ${ME} ${HI} -D ${ANY} 25 -y -o
/sbin/ipfwadm -O -a accept -P tcp -S ${ME} ${HI} -D ${ANY} 25
/sbin/ipfwadm -I -a accept -P tcp -S ${ANY} 25 -D ${ME} ${HI}
/sbin/ipfwadm -I -a accept -P tcp -S ${ANY} ${HI} -D ${ME} 25 -y -o
/sbin/ipfwadm -I -a accept -P tcp -S ${ANY} ${HI} -D ${ME} 25
/sbin/ipfwadm -O -a accept -P tcp -S ${ME} 25 -D ${ANY} ${HI}
2b) A tricky one - FTP
# Incoming FTP
/bin/echo -n "FTPin/"
/sbin/ipfwadm -I -a accept -P tcp -S ${ANY} ${HI} -D ${ME} 20:21 -y -o
/sbin/ipfwadm -I -a accept -P tcp -S ${ANY} ${HI} -D ${ME} 20:21
/sbin/ipfwadm -O -a accept -P tcp -S ${ME} 20:21 -D ${ANY} ${HI}
3) Drop everything else - note, the 'without logging' section only applies
if you ever set your interface(s) into promiscuous mode... it's wise not
to log packets to/from elsewhere, otherwise the machine load hits the
roof, and the log file expands rapidly... I found out the hard way. ;)
# Deny everything else
# with logging... (target = me)
/sbin/ipfwadm -I -a deny -S 0/0 -D ${ME} -o
/sbin/ipfwadm -O -a deny -S ${ME} -D 0/0 -o
# without logging... (target != me)
/sbin/ipfwadm -I -a deny -S 0/0 -D 0/0
/sbin/ipfwadm -O -a deny -S 0/0 -D 0/0
Hope that's of some help - oh, one thing - if you decide to use logging,
make sure the logfile is on another partition somewhere, in case someone
floods your box to try and fill up the disk! Logging is worth the effort
- I've detected port scans and other such nasties this way.
Ian.



Ian Marsh
mushypea@dominion.net.uk ... Email
http://www.etchq.demon.co.uk/ ... WWW
http://www.dominion.net.uk/ telnet://dominion.net.uk:2468/ ... Dominion
http://www.alpha4.com/ telnet://alpha4.com:3214/ ... MBa4

Приклад від Рикова

rc.firewall:
ifconfig eth0 promisc
ifconfig eth1 promisc
ifconfig eth1 arp
ifconfig eth0 arp
route add -net default gw 193.232.173.45 dev eth1
brcfg -enable >> /dev/null
ipfwadm -I -f
ipfwadm -O -f
ipfwadm -F -f
ipfwadm -I -a reject -S 0.0.0.0/0.0.0.0 -D 0.0.0.0/0.0.0.0
ipfwadm -I -i accept -S 195.231.183.1/255.255.255.255 -D 0.0.0.0/0.0.0.0
ipfwadm -I -i accept -S 195.231.183.2/255.255.255.255 -D 0.0.0.0/0.0.0.0
ipfwadm -I -i accept -P tcp -S 195.231.183.0/255.255.255.0 ftp telnet -D 0.0.0.0/0.0.0.0
ipfwadm -O -a reject -P tcp -k -S 195.231.183.0/255.255.255.0 -D 0.0.0.0/0.0.0.0 137 138 139

Захист named

From: Adam Sulmicki
One of reasons for presenting is that in all examples shown so far
it seemed that everyone suggested to leave named full-open. However,
it does not always have to be case. Say, if you are running an private
network then you want just to allow named get data transfers from
trusted host and that is all.
[root@eax /root]# cat ipfwadm-named
#!/bin/sh
#allow connection only from trusted named servers
ME="1.2.3.4" # MY ip
NS1="10.20.30.41" # IP of the primary name server
NS2="10.20.30.42" # IP of the secondary name server
NS3="10.20.30.43" # IP of the trietary name server
SRV="domain"
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P udp -S $NS1 $SRV
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P tcp -S $NS1 $SRV
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P udp -S $NS2 $SRV
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P tcp -S $NS2 $SRV
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P udp -S $NS3 $SRV
/sbin/ipfwadm -I -a accept -D ${ME} $SRV -W eth0 -P tcp -S $NS3 $SRV
/sbin/ipfwadm -I -a reject -D ${ME} $SRV -W eth0 -P tcp -o -v -x -e
/sbin/ipfwadm -I -a reject -D ${ME} $SRV -W eth0 -P udp -o -v -x -e
And while we are speaking about named. Here is an example
as someone from "Catholic liberal arts institution" (as per their web
page) connecting to my box. I assume that person was scanning
whole subnet searching for vulnerable versions of named.

Про статистику і підрахунку трафіку

Ставите mrtg, і вважаєте через smnpget.
"ipfwadm configuration utility"
http://www.ejj.net/~sonny/fwconfig/fwconfig.html

І взагалі, для початку ознайомитися з документацією

1. Security Problems in the TCP/IP Protocol Suite
-- S.M. Bellovin then of AT&T
ftp://research.att.com/dist/internet_security/ipext.ps.Z
2. A Weekness in the 4.2 BSD Unix TCP/IP Software
-- R.T. Morris then of AT&T
ftp://research.att.com/dist/internet_security/117.ps.Z
*3.* Network (In)Security Through IP Packet Filtering
-- D. Brent Chapman
ftp://coast.cs.purdue.edu/pub/doc/firewalls/Brent_Chapman_packet_filtering.ps.ZOn the subject of firewall and IP packet filtering just go
to (and read the whole directory):
ftp://coast.cs.purdue.edu/pub/doc/firewalls/
In case of interest, the source of the IP filter that
OpenBSD uses, are at:(claims it runs under linux 2.0.31 too)
http://cheops.anu.edu.au/~avalon/
But one of the best monitoring tools is tcpdump, its
current version being 3.4, and you need libpcap-0.x, to
work. Both of the packages are ready to download from:
ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
ftp://ftp.ee.lbl.gov/libpcap.tar.Z
ftp://ftp.ee.lbl.gov/tcpslice.tar.Z
The last one is for reading files with live snapshots
from your net, these written by tcpdump, at later times,
when needed.
WARN: untar libpcap where your *current untarred* tcpdump
files lie, in other words under the tcpdump-3.4 directory!

Ще один firewall - LRP

From: Rob Bringman
To:
linux-security@redhat.com
I am the Firewall-1 administrator where I work and it has a very nice
GUI tool for defining objects (can be hosts, networks, DNS domains,
groups of hosts, etc.) and a straightforward way of building a
rulebase.
At home I use the LRP with a mini-qmail daemon forwarding the e-mail
via qmqp to the real mailhost, and sshd for remote admin. It has
ipautofw, ipportfw and masquerading.
I really can't think of anything I can do with the Firewall-1 machine
that I can't do with this LRP machine. The whole OS used to fit on a
floppy until I added the mini-qmail and sshd packages. Now it boots
off a small HD and runs only on ramdisks. Except for the GUI and the
price, I'd say they are about equal in terms of power and protection.
I've looked into TIS but never used it. It involved running proxy
daemons on the firewall for telnet ftp and snmp. I like the LRP much
better.
(for those that don't know, LRP is the Linux Router Project. see
www.linuxrouter.org/

TCPwrapper: hosts.deny

# /etc/hosts/deny
#
# deny all, send an alert email to root...
ALL : ALL : \
banners /etc/banners/deny : \
spawn ( \
/bin/echo -e "\n\
TCP Wrappers\: Connection Refused\n\
By\: $(uname -n)\n\
Process\: %d (pid %p)\n\
\n\
User\: %u\n\
Host\: %c\n\
Date\: $(date)\n\
" | /bin/mail -s "$(uname -n) wrappers\: %d refused for %c" \
root@localhost ) &
====8<------ end of cut --------------------------
This will deny access to anyone not specifically allowed (from
/etc/hosts.allow), give banners message (specific for the daemon being
called - see the man pages), and generate a very informative mail message
sent to root. (You can add other recipients to that line, btw).
We have found this to be VERY useful here...
[mod: Some remarked that things like "%u" are "client controlled" and
could be used to exploit Tony's system. The manual however claims:
Characters in % expansions that may confuse the shell
are replaced by underscores.
so that should be OK. -- REW]
Але я все ж волію записувати ці логи в файл а не напружувати свій send- mail - інакше атакуючий підвищивши частоту спроб завести мою машину.

IPFilter

Як у ipfILTER обнулити статистику без перезавантаження?
ipf -z -f my_ipfilter_rules_file

Для того, щоб використовувати ssh1 & ssh2 одночасно, треба:

1. Поставити ssh-1.2.26 (первим!) 2. Поставити ssh-2.x.x 3. В "sshd2_config" додати (можливо змінивши шляху):
Ssh1Compatibility yes
Sshd1Path /usr/sbin/sshd1 4. В "ssh2_config" додати (можливо змінивши шляху):
Ssh1Compatibility yes
Ssh1Path /usr/bin/ssh1
Налаштувати в ssh2 обмеження доступ непросто, тому найпростіший спосіб - запускати його через inetd.conf і доступ регулювати стандартними файлами TCP-wrappera hosts.allow / hosts.deny
/etc/inetd.conf
ssh2 stream tcp nowait root /usr/sbin/tcpd sshd2 -i
/etc/hosts.allow
sshd2 : 123.232.175.0/255.255.255.0, 127.0.0.0/255.0.0.0, 234.567.890.12

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*