Re: firewalls (was: ipchains)
On 2003.01.29 at 13:42:31 +0300, Герасимов Д.С. wrote:
> Hello Victor,
>
> Wednesday, January 29, 2003, 12:25:52 PM, you wrote:
>
> VW> On 2003.01.29 at 11:04:20 +0200, Denis A. Kulgeyko wrote:
>
> >> > Я, честно говоря, не помню процесс перетаскивания своего
> >> > firewall-скрипта с 2.2 на 2.4, маскарадинг там тоже используется для
> >> > прозрачного прокси. В общем, было это в другом дистрибутиве, так что
> >> > неважно. Но по крайней мере фильтрация пакетов и получение статистики
> >> > должны работать.
> >>
> >> Закину свои ржавых 1/20 часть "Убитого американского Енота". :)
> >> Я для firewall'ов (а в свое время пришлось писать их немало, все на линухе, в
> >> основном woody/2.4.x) долго искал хороший инструмент для автоматизации.
> >> Потому как писать _все_ правила ipchains/iptables руками
>
> VW> А зачем писать их все руками?
>
> VW> В конце концов, это обычные юниксовые команды, вызывающиеся из
> VW> shell-овского скрипта.
>
> VW> Я генерирую из биллинговой базы файлик вида
>
> VW> block такой-то-IP
> VW> allow такoй-то-IP smtp socks
> VW> disallow такой-то-IP http
>
> VW> После чего этот файлик включается командой source в скрипт инициализации
> VW> файрволла. А в том определены shell-функции block, allow, disallow etc.
> Вот с этого места, если можно поподробнее.. :-).. Виктор, можно
> взглянуть на этот скрипт? Для общего развития.
Ну вот некоторые фрагменты
ADDRULES=/etc/network/ipchains_stop
ip_block() {
iptables -A FORWARD -s $1 -d 0/0 -j REJECT
# Сюда надо еще добавить DNAT-правило, чтобы все запросы на 80 порт
# любого хоста в интернет форвардились на страничку "Мужик, деньги
# давай"
}
case `uname -r` in
2.2.*)
exec /etc/init.d/firewall-ipchains
;;
esac
insmod ip_conntrack
modprobe ip_nat_ftp
modprobe ip_nat_irc
#Здесь много-много фиксированных правил, общих для всей сети
....
# Reject addresses of local clients which haven't pay enough for internet
[ -x $ADDRULES ] && source $ADDRULES
# and let all others out
iptables -A FORWARD -s 192.168.216.0/25 -d 0/0 -j ACCEPT
iptables -A FORWARD -s 192.168.216.128/25 -d 0/0 -j REJECT
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.216.0/24 -d 0.0.0.0/0 -j MASQUERADE
# Здесь еще энное количество правил,
А файлик который ADDRULES выглядит так:
#!/bin/sh
ip_block 192.168.216.84
ip_block 192.168.216.74
ip_block 192.168.216.15
ip_block 192.168.216.44
ip_block 192.168.216.70
ip_block 192.168.216.57
ip_block 192.168.216.13
В файле firewall-ipchains функция ip_block определена как:
ip_block() {
ipchains -A forward -s $1 -d 0/0 -j REJECT
}
--
Victor Wagner vitus@ice.ru
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net http://www.ice.ru/~vitus
Reply to: