| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
firewall+proxy
Требуется внедрение фаервола и, возможно, прокси-сервера.
Пока остановился на iptables+squid. Есть ли лучшие варианты? Посоветуйте.
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 3 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Есть еще вопрос по iptables.
Для пробы составил несколько правил (и взял готовые примеры). Просканировал сервер. Сканер нашел несколько служб. Одна из которых - Finger. В список правил фаервола добавил блокировку соединения на порт фингера. Но при повторном сканировании сканер выдал, что фингер доступен. Т.е. правила не сработали??? Или запущенные службы, которые открыли порты, пропускаются фаерволом? Так ли это?????
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 5 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Правила в студии
#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 Данные правила созданы не мной. Взал из книги. И подредактировал под свои нужды. (Выше оригинал)
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 6 |
|
Newbie
Регистрация: 13.05.2002
Адрес: Москва
Сообщения: 41
![]() |
>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 бесполезными... Кстати прости за глупый вопрос, а откуда сканишь то? изнутри? извне?? с самой машины? |
|
|
|
|
# 7 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Starik
Что касается finger, то я специально ставил на него запрет от входящих запросов: Сканировал сервер из локалки (чтобы посмотреть дыры и закрыть). После сканирования посмотрел отчет и решил закрыть finger. Создал спец. правило, но после повторного сканирования, finger все равно был (сканировал SSS'ом последней версией).
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 9 |
|
Member
Регистрация: 26.08.2002
Адрес: Germany
Сообщения: 232
![]() ![]() ![]() |
Гадание на кофейной гуще.
Что ты хочешь от твоего 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 дело тонкое и очень личное. ????????????????????????????????????????????????????????????????? Потом поговорим о правилах....... Последний раз редактировалось Gennadi; 10.06.2004 в 20:11. |
|
|
|
|
# 10 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
shuron
Какая разница из какой книги. Мне нужно разобраться с настройкой. Если тебе нужна книга, то я не знаю, есть ли она в эллектронном виде. У меня покупная. Называется "Руководство администратора Linux" с кучей авторов. Gennadi Дело обстоит так. Internet | | Firewall (настроеный, но чужой, на него не пустят) | <- Firewall (встроится тот, который нужно настроить) | Internal LAN (собственно, локалка своя) Приведенные выше правила составил и переделал под эти нужды. Тестирую пока в локалке.
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 12 |
|
Member
Регистрация: 26.08.2002
Адрес: Germany
Сообщения: 232
![]() ![]() ![]() |
Что ты хочешь от твоего firewall'a?
Какие порты (www?, smtp?, ssh?, ftp? .......? ) должны быть открыты для доступа из чужой сети на твой firewall (etn0)? или NAT в локальную сеть(eth1)?..... ... доступ из локальной сети на firewall (eth1)? ..или доступ в чужую сеть? Firewall (настроеный, но чужой, на него не пустят) | | etn0 <- Firewall (встроится тот, который нужно настроить) eth1 | Internal LAN (собственно, локалка своя) ??????? Последний раз редактировалось Gennadi; 10.06.2004 в 20:10. |
|
|
|
|
# 13 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Gennadi
1. Должен быть доступен веб-сервер. Он в локалке. 2. Возможно, почтовый сервер (пока в планах) 3. ssh хотелось бы (пока нет и в планах), ftp - не известно 4. firewall также должен запрещать слив инфы из локалки в инет 5. Скорее всего будет так (по-другому вроде и не может) | etn0 <- Firewall (встроится тот, который нужно настроить) eth1 | Меня интересует настройка при наличии всех вышеупомянутых служб. И, естественно, максимальная безопасность. PS Каким лучше всего сканером проверить настройку. PS2 proxy пока не осваиваю
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 14 |
|
Full Member
Регистрация: 06.03.2003
Адрес: Earth
Сообщения: 761
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
я думаю лучше всего взять и почитать мануал
http://gazette.linux.ru.net/rus/arti...-tutorial.html сканер imho nmap http://www.insecure.org/ также есть nessus http://nessus.org/
__________________
Смерть фашистским оккупантам. |
|
|
|
|
# 16 |
|
Member
Регистрация: 26.08.2002
Адрес: Germany
Сообщения: 232
![]() ![]() ![]() |
Копируешь этот скрипт, делаешь как написано и всё работает, ну а потом на досуге разбираешься, анализируешь, экспериментируешь.....
Скрипт "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 Последний раз редактировалось Gennadi; 12.06.2004 в 11:02. |
|
|
|
|
# 17 |
|
Member
Регистрация: 21.08.2003
Адрес: Россия
Пол: Male
Сообщения: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Gennadi
Спасибо конечно, но теперь замучаю вопросами по этому скрипту (перл в линуксе не знаю). Но за скрипт спасибо. Попробую разобраться сам.
__________________
The Man Who Sold The World (© Nirvana) So What! (© Metallica) |
|
|
|
|
# 18 | |
|
Member
Регистрация: 16.09.2002
Адрес: Vault 13
Сообщения: 335
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
кстати поищи скриптец KISS называется... довольно толково да и просто KISS = Keep It Simple Stupid!
|
|
|
|
|
|
# 19 | |
|
Newbie
Регистрация: 20.09.2004
Сообщения: 26
![]() |
скормный ламерский вопросик :-) а куда пишет iptables свой лог ?
Цитата:
|
|
|
|
|
|
# 20 |
|
Newbie
Регистрация: 20.09.2004
Сообщения: 26
![]() |
мне нужно пускать только в город(пиринговые сети моего прова), правильно ли я делаю:
Код:
#!/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
|
|
|