[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: