IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   firewall+proxy (https://www.imho.ws/showthread.php?t=60858)

Zueuk 04.06.2004 22:15

firewall+proxy
 
Требуется внедрение фаервола и, возможно, прокси-сервера.
Пока остановился на iptables+squid.

Есть ли лучшие варианты?
Посоветуйте.

Bek 05.06.2004 14:01

разве что конфигуратор удобный.
а так - это лучшее :imho:

Zueuk 05.06.2004 20:37

Есть еще вопрос по iptables.

Для пробы составил несколько правил (и взял готовые примеры).
Просканировал сервер. Сканер нашел несколько служб. Одна из которых - Finger. В список правил фаервола добавил блокировку соединения на порт фингера. Но при повторном сканировании сканер выдал, что фингер доступен. Т.е. правила не сработали??? Или запущенные службы, которые открыли порты, пропускаются фаерволом? Так ли это????? :eek:

Starik 07.06.2004 13:56

Правила в студию :-)) ТОгда посмотрим и скажем почему и как..

Zueuk 08.06.2004 21:04

Правила в студии :biggrin:

#drop all rules
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP

#allawed SSH, HTTP, HTTPS
iptables -A FORWARD -i eth0 -p ANY -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 443 -j ACCEPT

#для пропинговывания пропускаются некоторые ICMP пакеты
#
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 5 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 3 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 5 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p icmp --icmp-type 11 -j ACCEPT

#для защиты от поддельных IP
iptables -t nat PREROUTING -i ppp0 -s 10.0.0.0/8 -j DROP
iptables -t nat PREROUTING -i ppp0 -s 127.16.0.0/12 -j DROP
iptables -t nat PREROUTING -i ppp0 -s 192.168.0.0/16 -j DROP
iptables -t nat PREROUTING -i ppp0 -s 127.0.0.0/8 -j DROP
iptables -t nat PREROUTING -i ppp0 -s 224.0.0.0/4 -j DROP

#close all other in/out packets
iptables -A INPUT -i ppp0 -j LOG
iptables -A FORWARD -i ppp0 -j LOG

#ниже строчки разрешают всем пакетам покидать сеть,
#но принимаются лишь те пакеты, которые поступают в рамках #соединений, #установленных узлами нашей сети
iptables -A FORWARD -i eth0 -p ANY -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Данные правила созданы не мной. Взал из книги. И подредактировал под свои нужды. (Выше оригинал)

Starik 09.06.2004 09:25

>Zueuk Просканировал сервер. Сканер нашел несколько служб. Одна из >которых - Finger. В список правил фаервола добавил блокировку >соединения на порт фингера. Но при повторном сканировании сканер >выдал, что фингер доступен.

Что то тут ни одного правила нет которое бы запрещало finger. Да к тому же (если я не ошибаюсь :-) ) правило
iptables -A FORWARD -i eth0 -p ANY -j ACCEPT
разрешает всё и вся из твоей сети.. и делает строки
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 443 -j ACCEPT
бесполезными...

Кстати прости за глупый вопрос, а откуда сканишь то? изнутри? извне?? с самой машины?

Zueuk 09.06.2004 14:39

Starik
Что касается finger, то я специально ставил на него запрет от входящих запросов:
Сканировал сервер из локалки (чтобы посмотреть дыры и закрыть).
После сканирования посмотрел отчет и решил закрыть finger.
Создал спец. правило, но после повторного сканирования, finger все равно был (сканировал SSS'ом последней версией).

shuron 10.06.2004 14:57

Zueuk
А из какой книги взял правила? Есть ли она в електронном виде если да,
где брал?

Gennadi 10.06.2004 17:58

Гадание на кофейной гуще.

Что ты хочешь от твоего firewall'a?
Какие порты должны быть открыты для доступа из интернета на роутер? ... локальную сеть_?...DMZ ?
...DNZ ? ... доступ на веб-сервер? .. майл-сервер? FTP-сервер?
... доступ из локальной сети на firewall?...DMZ ?

1.)

Internet
|
|
Firewall
|
|
Internal LAN

2.)

Internet
|
| Web server
| |
Firewall-------
|
|---Mail server
|
|---Database
|
Internal LAN

3.)

Internet Trusted_Company
| |
| |
| |
Firewall-------Web server
| |
| |
| |
| |--- Admin Network
|
Internal LAN---Server (for the trusted_company)
|
Mail server

Firewall дело тонкое и очень личное.

?????????????????????????????????????????????????????????????????

Потом поговорим о правилах.......

Zueuk 10.06.2004 18:54

shuron
Какая разница из какой книги. Мне нужно разобраться с настройкой. Если тебе нужна книга, то я не знаю, есть ли она в эллектронном виде. У меня покупная. Называется "Руководство администратора Linux" с кучей авторов.

Gennadi
Дело обстоит так.

Internet
|
|
Firewall (настроеный, но чужой, на него не пустят)
|
<- Firewall (встроится тот, который нужно настроить)
|
Internal LAN (собственно, локалка своя)

Приведенные выше правила составил и переделал под эти нужды. Тестирую пока в локалке.

shuron 10.06.2004 19:03

мне интересна была имменно книга..
спасибо!

Gennadi 10.06.2004 19:17

Что ты хочешь от твоего firewall'a?
Какие порты (www?, smtp?, ssh?, ftp? .......? ) должны быть открыты для доступа из чужой сети на твой firewall (etn0)? или NAT в локальную сеть(eth1)?.....
... доступ из локальной сети на firewall (eth1)? ..или доступ в чужую сеть?


Firewall (настроеный, но чужой, на него не пустят)
|
|
etn0
<- Firewall (встроится тот, который нужно настроить)
eth1
|
Internal LAN (собственно, локалка своя)

???????

Zueuk 11.06.2004 11:24

Gennadi
1. Должен быть доступен веб-сервер. Он в локалке.
2. Возможно, почтовый сервер (пока в планах)
3. ssh хотелось бы (пока нет и в планах), ftp - не известно
4. firewall также должен запрещать слив инфы из локалки в инет
5. Скорее всего будет так (по-другому вроде и не может)

|
etn0
<- Firewall (встроится тот, который нужно настроить)
eth1
|

Меня интересует настройка при наличии всех вышеупомянутых служб. И, естественно, максимальная безопасность.

PS Каким лучше всего сканером проверить настройку.
PS2 proxy пока не осваиваю

noname 11.06.2004 12:02

я думаю лучше всего взять и почитать мануал
http://gazette.linux.ru.net/rus/arti...-tutorial.html

сканер imho nmap http://www.insecure.org/

также есть nessus http://nessus.org/

sky 11.06.2004 12:56

http://www.linuxrsp.ru/docs/socks5.html

Gennadi 11.06.2004 17:26

Копируешь этот скрипт, делаешь как написано и всё работает, ну а потом на досуге разбираешься, анализируешь, экспериментируешь.....

Скрипт "firewall"

========================== FIREWALL ==================================================
#!/bin/bash

case "$1" in
start)
echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle заполнить
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies установить
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT заполнить
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -j DROP

# все пакеты протоколировать
iptables -A INPUT -j LOG --log-prefix "INPUT LOG "
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT LOG"
iptables -A FORWARD -j LOG --log-prefix "FORWARD LOG "

# все выброшенные пакеты протоколировать
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Stealth Scans etc. DROPpen
# Flags не установлен
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN и FIN установить
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN и RST одновременно установить
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG без ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Network-Kommunikation разрешить
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) для Forwarding на PMTU разрешить
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking активировать
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

###### Открыть из интернета на firewall'е SSH и IPSEC ######################################
# SSH
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# IPSEC
iptables -A INPUT -i eth0 -p 50 -j ACCEPT
iptables -A INPUT -i eth0 -p 51 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 500 -j ACCEPT
###################################################################### ################

# IP-Adresse для LAN-Interfac'а определить
LAN_IP=$(ifconfig eth1 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)

##################### NAT в локалку ##################################################

# NAT для HTTP веб-сервер в локалке 192.168.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.1 --dport 80 -j ACCEPT

# NAT для HTTPS веб-сервер в локалке 192.168.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.1
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 443 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.1 --dport 443 -j ACCEPT

# NAT для POP3 почтовый сервер в локалке 192.168.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 110 -j DNAT --to-destination 192.168.0.2
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 110 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.2 --dport 110 -j ACCEPT

# NAT для SMTP почтовый сервер в локалке 192.168.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 192.168.0.2
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 25 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.2 --dport 25 -j ACCEPT

# NAT для IMAP почтовый сервер в локалке 192.168.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 143 -j DNAT --to-destination 192.168.0.2
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 143 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.2 --dport 143 -j ACCEPT

# NAT для IMAPS почтовый сервер в локалке 192.168.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 993 -j DNAT --to-destination 192.168.0.2
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 993 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.2 --dport 993 -j ACCEPT

# NAT для FTP ftp- сервер в локалке 192.168.0.3
modprobe ip_nat_ftp
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 192.168.0.3
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 21 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.0.3 --dport 21 -j ACCEPT
###################################################################### ################

# Допуск из LAN к eth1 разрешить
iptables -A INPUT -m state --state NEW -i eth1 -j ACCEPT

# Default-Policies с REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT

# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying отключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP отключить
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Негодные ICMP-ответы игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts игнорировать
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) посылать
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Оптимизация RAM и времени де- и фрагментирования IP-.пакетов
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout защиту от DoS-Attacken установить
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 ответа на один TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x повторить
echo 15 > /proc/sys/net/ipv4/tcp_retries2

;;

stop)
echo "Stoppe IP-Paketfilter"
# Tabelle заполнить
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# Default-Policies установить
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

*)
echo "Bad run"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac
====================================================================== ===========

cp firewall /etc/init.d
chmod 755 /etc/init.d/firewall
ln -s /etc/init.d/firewall /sbin/rcfirewall
chkconfig -a firewall
rcfirewall start
rcfirewall stop
rcfirewall status

Zueuk 13.06.2004 10:54

Gennadi
Спасибо конечно, но теперь замучаю вопросами по этому скрипту (перл в линуксе не знаю). Но за скрипт спасибо. Попробую разобраться сам.

snark 15.06.2004 02:35

Цитата:

Сообщение от Zueuk
Gennadi
Спасибо конечно, но теперь замучаю вопросами по этому скрипту (перл в линуксе не знаю). Но за скрипт спасибо. Попробую разобраться сам.

а где там перловка? там жеж в начале #!/bin/bash написано! значица это башевский aka shell скрипт а не перловка ;) кстати поищи скриптец KISS называется... довольно толково да и просто :) KISS = Keep It Simple Stupid!

Svinopas 22.11.2004 10:24

скормный ламерский вопросик :-) а куда пишет iptables свой лог ?
Цитата:

# все пакеты протоколировать
iptables -A INPUT -j LOG --log-prefix "INPUT LOG "
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT LOG"
iptables -A FORWARD -j LOG --log-prefix "FORWARD LOG "
и как для определенной цепочки писать лог в определенный файл ?

Svinopas 23.11.2004 11:13

мне нужно пускать только в город(пиринговые сети моего прова), правильно ли я делаю:
Код:

#!/bin/bash

# Обьявляем пиринговые сети
declare -a PIRINGNETWORK=(
1.2.3.4
2.3.4.5
3.4.5.6
)
PIRINGNETWORK_count=${#PIRINGNETWORK[*]}

# чистим таблицу
iptables -F
iptables -X

# запрещаем не разрешенное
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP

# разрешаем локал хост+ локал сеть
iptables -A OUTPUT -d localhost -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 212.23.86.0/24 -j ACCEPT

for (( i = 0 ; i < PIRINGNETWORK_count ; i++ ))
do
    iptables -A OUTPUT -d ${PIRINGNETWORK[$i]} -j ACCEPT
done

iptables -A INPUT -s localhost -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -s 212.23.86.0/24 -j ACCEPT

for (( i = 0 ; i < PIRINGNETWORK_count ; i++ ))
do
    iptables -A INPUT -s ${PIRINGNETWORK[$i]} -j ACCEPT
done


DeADMoroZ 25.11.2004 11:31

Цитата:

скормный ламерский вопросик :-) а куда пишет iptables свой лог ?
в сислог.
От каждой цепочки отдельный лог вести нельзя, можно только задавать log_prefix для сортировки при выводе.


Часовой пояс GMT +4, время: 14:33.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.