НАСТРОЙКА IPTABLES. Защита от паразитного трафика

Posted by Cooper Wed, 29 Nov 2006 01:14:00 GMT

Анализируя информацию о статистике использования моего блога, я обнаружил, что ежедневно с конкретных хостов происходит подозрительно бурная активность, характерная скорее для роботов или пауков чем для реальных пользователей.

Кроме того, что эта информация искажала общие данные статистики использования ресурса, к тому же я получал приличный объем зарубежного трафика, за который при определенных условиях приходится платить отдельно.

Я решил найти простое и действенное средство защиты от паразитного трафика, которое, по возможности, должно базироваться на стандартных утилитах LINUX. Для себя я выделил несколько подходов:

  1. Блокировать “плохие” хосты на уровне приложения;

  2. Использовать стандартные средства вэб-сервера Apache или lighttpd;

  3. Настроить правила утилиты iptables, которая присутствует во всех LINUX дистрибутивах, базирующихся на ядрах 2.4.x или 2.6.x

    Первые два способа были исключены из рассмотрения, поскольку здесь существует определённая привязка к приложению или к конкретному web-серверу. И если, например, Apache будет заменён на ngnix, придется заново прописывать блокирующие правила. К тому же, паразитные пакеты будут доходить до вэб сервера и приложения, дополнительно загружая их.

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

Настройка правил iptables

Процесс настройки достаточно простой и занимает несколько минут. Надо заметить, что Вы должны зайти на сервер как root пользователь или использовать команду sudo для добавления правил.

Итак, у нас есть конкретный хост (crawler.bloglines.com, IP=65.214.44.29) и целая подсеть (84.110.0.0), которые надо забанить. Правила выглядят так:

#Crawler bloglines 
/sbin/iptables -A INPUT -s 65.214.44.29 -p tcp -m multiport --dports 80 -j DROP

#bzq-*.red.bezeqint.net
/sbin/iptables -A INPUT -s 84.110.0.0/255.255.0.0 -p tcp -m multiport --dports 80 -j DROP

Для других хостов или подсетей в правилах iptables, меняется только IP источника (параметр -s).

Просмотр статистики iptables

Запускаем iptables с параметрами -L и -v для просмотра статистики. Опция -L определяет вывод статистики для цепочки (chain). Если конкретная цепочка не задана, то для всех.

Опция -v задает расширенный вывод, включающий в себя счетчики пакетов и байт.

Очень часто добавляется параметр -n, который говорит команде iptables о том, что не надо обращаться к DNS для разрешения IP адресов и вывода их в виде доменных имен. Это значительно уменьшает время на выдачу результатов и позволяет уменьшить нагрузку на сервер.

Для дополнительного удобства список правил может быть пронумерован. Для этого используется опция –line-numbers.

/sbin/iptables -L -v --line-numbers

Сохранение правил и статистики

Если перезагрузить компьютер или удалить iptables kernel modules вся информация о собранной статистике и добавленных правилах будет утеряна. Чтобы предотвратить потерю данных необходимо делать бэкап после каждого изменения в списке правил. Для этого служить утилита iptables-save. Например:

iptables-save -c > /root/iptables-backup.txt

Восстановить данные из бэкапа можно используя команду iptables-restore. Обычно это делается после перезагрузки в одном из скриптов инициализации, например в /etc/rc.d/rc.local для Red Hat Linux.

iptables-restore -c < /root/iptables-backup.txt


Библиография:

news2.ru:НАСТРОЙКА IPTABLES. Защита от паразитного трафика del.icio.us:НАСТРОЙКА IPTABLES. Защита от паразитного трафика digg:НАСТРОЙКА IPTABLES. Защита от паразитного трафика reddit:НАСТРОЙКА IPTABLES. Защита от паразитного трафика spurl:НАСТРОЙКА IPTABLES. Защита от паразитного трафика wists:НАСТРОЙКА IPTABLES. Защита от паразитного трафика simpy:НАСТРОЙКА IPTABLES. Защита от паразитного трафика newsvine:НАСТРОЙКА IPTABLES. Защита от паразитного трафика blinklist:НАСТРОЙКА IPTABLES. Защита от паразитного трафика furl:НАСТРОЙКА IPTABLES. Защита от паразитного трафика fark:НАСТРОЙКА IPTABLES. Защита от паразитного трафика blogmarks:НАСТРОЙКА IPTABLES. Защита от паразитного трафика Y!:НАСТРОЙКА IPTABLES. Защита от паразитного трафика smarking:НАСТРОЙКА IPTABLES. Защита от паразитного трафика magnolia:НАСТРОЙКА IPTABLES. Защита от паразитного трафика segnalo:НАСТРОЙКА IPTABLES. Защита от паразитного трафика

Posted in  | Tags , , , , , ,  | 1 comment

HowTo Install typo on Red Hat EL3

Posted by Cooper Tue, 04 Jul 2006 19:52:00 GMT

Here is a typo installation guide based on the folowing: http://www.typosphere.org/trac/wiki/TypoOnFreebsd

1. Install Ruby 1.8.4

Download and install ruby from the stable release 1.8.4 http://www.ruby-lang.org/en/20020102.html

2. Install gems

$cd
$wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz
$tar xvzf rubygems-0.8.11.tgz
$cd rubygems-0.8.11
$ruby setup.rb

3. Install Rails

$gem update
$gem install rails --include-dependencies 

4. Download and install FastCGI Development Kit

$ wget fastcgi.com/dist/fcgi-2.4.0.tar.gz | tar xfz -
$ copy fcgi-2.4.0 /usr/local/src/fcgi-2.4.0
$ cd /usr/local/src/fcgi-2.4.0
$ ./configure
$ make
$ sudo make install

5. Install FCGI bindings for Ruby

$ sudo gem install fcgi

6. Download and Install typo

# /usr/sbin/adduser typo_user
# passwd typo_user 
$ svn checkout svn://leetsoft.com/typo/trunk typo
$ cp -R typo /home/typo_user/websites/www.mysite.com

7. Configuring Typo

Replace

/usr/bin/env ruby 

with

/usr/local/bin/ruby 

in

public/dispatch.fcgi
and
public/dispatch.rb
.

8. Database

8.1 Install Ruby/MySQL

(http://www.tmtm.org/en/mysql/ruby/)

8.2 Create database in MySQL

mysql -p
create database typo_user_typo CHARACTER SET utf8;
grant all on typo_user_typo.* to 'typo_user'@'localhost' \
identified by 'typo_password';
flush privileges;
use typo_user_typo;
source /home/typo_user/websites/www.mysite.com/db/schema.mysql.sql;

Edit config/database.yml:

login: &login
  adapter: mysql
  host: localhost
  username: typo_user
  password: typo_password
  socket: /var/lib/mysql/mysql.sock
  encoding: utf8

development:
  database: typo_user_typo
  <<: *login

test:
  database: typo_user_typo
  <<: *login

production:
  database: typo_user_typo
  <<: *login

8.3 Update the database-schema

$rake migrate

9. Lighttpd

Download from http://www.lighttpd.net/download/lighttpd-1.4.11.tar.gz Extract to /usr/local/src/lighttpd-1.4.11

$ cd /usr/local/src/lighttpd-1.4.11
$ ./configure
$ make
$ su -
# make install
# exit

Copy config-file from /home/typo_user/websites/www.mysite.com/config to /etc/lighttpd/lighttpd.conf and then edit:

server.pid-file             = "/var/run/typo-typo_user.pid"
server.port                 = 3000
server.bind                 = "127.0.0.1"
#server.event-handler        = "freebsd-kqueue"
server.name                 = "www.mysite.com"

server.modules              = ( "mod_rewrite", "mod_fastcgi", "mod_accesslog" )
server.indexfiles           = ( "dispatch.fcgi" )
server.document-root        = "/home/typo_user/websites/www.mysite.com/public"
server.error-handler-404    = "/dispatch.fcgi"
server.errorlog             = "/home/typo_user/websites/www.mysite.com/log/error.log"
accesslog.filename          = "/home/typo_user/websites/www.mysite.com/log/access.log"

url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" )

#### fastcgi module
fastcgi.server =  (
   ".fcgi" => (
        "typo" => (
               "min-procs" => 4,
               "max-procs" => 4,
               "socket" => "/home/typo_user/websites/www.mysite.com/tmp/typo-typo_user.socket",
               "bin-path" => "/home/typo_user/websites/www.mysite.com/public/dispatch.fcgi",
               "bin-environment" => ("RAILS_ENV" => "production" ),
               "idle-timeout" => 120
                )
           )

Copy /usr/local/src/lighttpd-1.4.11/doc/rc.lighttpd.redhat to /etc/rc.d/init.d/lighttpd. Replace the line

lighttpd=”/usr/sbin/lighttpd”

with

lighttpd=”/usr/local/sbin/lighttpd”

Start lighttpd server /etc/rc.d/init.d/lighttpd start

news2.ru:HowTo Install typo on Red Hat EL3 del.icio.us:HowTo Install typo on Red Hat EL3 digg:HowTo Install typo on Red Hat EL3 reddit:HowTo Install typo on Red Hat EL3 spurl:HowTo Install typo on Red Hat EL3 wists:HowTo Install typo on Red Hat EL3 simpy:HowTo Install typo on Red Hat EL3 newsvine:HowTo Install typo on Red Hat EL3 blinklist:HowTo Install typo on Red Hat EL3 furl:HowTo Install typo on Red Hat EL3 fark:HowTo Install typo on Red Hat EL3 blogmarks:HowTo Install typo on Red Hat EL3 Y!:HowTo Install typo on Red Hat EL3 smarking:HowTo Install typo on Red Hat EL3 magnolia:HowTo Install typo on Red Hat EL3 segnalo:HowTo Install typo on Red Hat EL3

Posted in , ,  | Tags , , ,