Блог Загирова Рустама

Около-интернетные заметки

Debian. Часть 3. Настройка Iptables: NAT, фаервол

| Комментарии

Фаервол нам нужен для ограничения подключения из вне, NATа, а также проброса портов. Для удоства написал скрипт на bash. Вставляем в файл /etc/init.d/rc.firewall

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash

IPTABLES="/sbin/iptables"

############### Config #######
LNETS="eth1 eth2 wlan0"

DESKTOP="192.168.1.1"
DESKTOP_OPEN_PORT="8010 9000"

DESKTOP2="192.168.2.1"
DESKTOP2_OPEN_PORT="9003"

HOME_MASKS="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24"

PROVIDER="eth0"
PROVIDER_IP="10.0.4.59"
PROVIDER_MASK="10.0.0.0/8"
INET="ppp+"
WHITE_IP="77.77.77.77"

OPEN_PORTS="22,80"
###################
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe nf_nat_pptp
modprobe nf_conntrack_pptp
modprobe nf_conntrack_proto_gre
modprobe nf_nat_proto_gre
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_LOG

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F POSTROUTING

############ DELETE IF ALL WORKING FINE ###### 
#$IPTABLES -A INPUT -j ACCEPT
#####################################

#mtu for vpn magick command, mega debian epic fail
$IPTABLES -o $INET -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 800:1536 -j TCPMSS --clamp-mss-to-pmtu

# DENY SECTIONS
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP

# local interface, allow all
$IPTABLES -A INPUT -i lo -j ACCEPT

# ALLOW PACKETS IF CONNECTION ESTABLISHED
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# access from white ip
$IPTABLES -A INPUT -s $WHITE_IP -j ACCEPT

# access from home net
for i in $HOME_MASKS; do
$IPTABLES -A INPUT -s $i -j ACCEPT
done
# defence for ssh for server
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP 
$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

# open ports for server
$IPTABLES -A INPUT -p tcp --syn -m multiport --destination-ports $OPEN_PORTS -j ACCEPT


######### FORWARD ##########
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#forward each home eth to provider eth and ppp+
for i in $LNETS; do
  $IPTABLES -A FORWARD -i $INET -o $i -j ACCEPT
  $IPTABLES -A FORWARD -i $i -o $INET -j ACCEPT
  $IPTABLES -A FORWARD -i $i -o $PROVIDER -j ACCEPT
  #forward each home eth to other home eth
  for j in $LNETS; do
    if [ "$i" != "$j" ] ; then
      $IPTABLES -A FORWARD -i $i -o $j -j ACCEPT
      $IPTABLES -A FORWARD -i $j -o $i -j ACCEPT
    fi
  done
done

###########################

######### LOCAL NAT ########
for i in $HOME_MASKS; do
  $IPTABLES -t nat -A POSTROUTING -s $i -d $PROVIDER_MASK -j SNAT --to-source $PROVIDER_IP
done
############################

######### INET NAT #########
for i in $HOME_MASKS; do
  $IPTABLES -t nat -A POSTROUTING -s $i -j SNAT --to-source $WHITE_IP
done 
############################

########## FORWARD PORTS #########
for i in $DESKTOP_OPEN_PORT; do
  $IPTABLES -t nat -A PREROUTING -p tcp --dport $i -j DNAT --to $DESKTOP:$i
  $IPTABLES -A FORWARD -p tcp -d $DESKTOP --dport $i -j ACCEPT
done

for i in $DESKTOP2_OPEN_PORT; do
  $IPTABLES -t nat -A PREROUTING -p tcp --dport $i -j DNAT --to $DESKTOP2:$i
  $IPTABLES -A FORWARD -p tcp -d $DESKTOP2 --dport $i -j ACCEPT
done

# ssh for destop with defence
$IPTABLES -t nat -A PREROUTING -p tcp --dport 12345 -j DNAT --to $DESKTOP:22
$IPTABLES -A FORWARD -p tcp -m state -d $DESKTOP --state NEW --dport 12345 -m recent --update --seconds 20 -j DROP
$IPTABLES -A FORWARD -p tcp -m state -d $DESKTOP --state NEW --dport 12345 -m recent --set -j ACCEPT   

# ping
$IPTABLES -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
# deny other ICMP packets
$IPTABLES -A INPUT -p icmp -j DROP

# other reject
$IPTABLES -A INPUT -j DROP $IPTABLES -A FORWARD -j DROP

Делаем скрипт исполняемым:

1
chmod +x /etc/init.d/rc.firewall

И прописываем в автозагрузку

1
update-rc.d rc.firewall defaults

По сути в нём всё лаконично закоментированно, но iptables – та ещё магия. В скрипте почти все настройки вынесены. Скрипт разрешает форвардинг между всеми интерфейсами, включает NAT, разрешает пинги до сервера. Всё что явно не разрешено, то запрещено. Бонусом есть защита ssh от брута, форвардинг ssh с порта 12345 на 22 порт домашнего компьютера, форвардинг портов на внутренние компьютеры (разделяются пробелом) Там найдёте магическую строку с моим негативом. Дебиан почему-то не может поставить MTU для ppp. Всё бы ничего, но некоторые сайты не открываются (nix.ru, mail.ru). Как говорят знакомые админы баг тянется ещё с etch. Отписал баг-репорт, ничего внятного так и не ответили. В Ubuntu 9.10, когда настраивал VPN скриптом, всё с mtu было нормально. Благодарю нашего админа за предоставление конфигов и помощи в настройках Теперь у всех домашних компьютеров есть интернет и настроен фаервол. Следующие статьи будут о полезных программах, настройке веб-сервера.

← Часть 2 | Часть 4 →

Debian. Часть 2. Настройка сети: Dhcp, Bind9, Vpn, Wifi-точка на карте Dlink Dwa-520

| Комментарии

После установки, сперва настроим локальную сеть провайдера и vpn для интернета. Напоминаю схема сети:

Схема сети

Локальная сеть провайдера будет на интерфейсе eth0. Внутренняя сеть на интерфейсах eth1 и eth2.

Сами настройки сети находятся в файле: /etc/network/interfaces

Настройки сети провайдера: ip: 10.0.4.59, маска: 255.255.255.0, шлюз: 10.0.4.254, dns: 10.0.0.1 и 10.0.0.10

В домашней сети у сервера будут ip 192.168.1.254 и 192.168.2.254

1
nano /etc/network/interfaces
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
   address 10.0.4.59
   netmask 255.255.255.0
   network 10.0.4.0
   broadcast 10.0.4.255
   gateway 10.0.4.254
   dns-nameservers 10.0.0.1 10.0.0.10

auto eth1
iface eth1 inet static
   address 192.168.1.254
   netmask 255.255.255.0
   network 192.168.1.0
   broadcast 192.168.1.255
   gateway 192.168.1.254

auto eth2
iface eth2 inet static
   address 192.168.2.254
   netmask 255.255.255.0
   network 192.168.2.0
   broadcast 192.168.2.255
   gateway 192.168.2.254

auto wlan0
iface wlan0 inet static
   address 192.168.3.254
   netmask 255.255.255.0
   gateway 192.168.3.254

Перезагружаем сеть

1
invoke-rc.d networking restart

По команде ifconfig должно быть примерно следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
eth0 Link encap:Ethernet  HWaddr 00:22:00:e2:0b:2f
inet addr:10.0.4.59  Bcast:10.0.4.255  Mask:255.255.255.0
inet6 addr: fe80::222:b0ff:fee2:b2f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:34344719 errors:0 dropped:0 overruns:0 frame:0
TX packets:28907703 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1153177468 (1.0 GiB)  TX bytes:3724435420 (3.4 GiB)
Interrupt:16 Base address:0xc400

eth1 Link encap:Ethernet  HWaddr 00:e0:0c:c0:c2:49
inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::2e0:4cff:fec0:c249/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:333947 errors:0 dropped:0 overruns:0 frame:0
TX packets:397715 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:35492580 (33.8 MiB)  TX bytes:466529275 (444.9 MiB)
Interrupt:22

eth2 Link encap:Ethernet  HWaddr 00:15:09:3c:d3:8f
inet addr:192.168.2.254  Bcast:192.168.2.255  Mask:255.255.255.0
inet6 addr: fe80::215:e9ff:fe3c:d38f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:21667974 errors:0 dropped:0 overruns:0 frame:0
TX packets:29063568 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:902706969 (860.8 MiB)  TX bytes:90195099 (86.0 MiB)
Interrupt:17 Base address:0xc000

lo Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:598219 errors:0 dropped:0 overruns:0 frame:0
TX packets:598219 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:117103916 (111.6 MiB)  TX bytes:117103916 (111.6 MiB)

Втыкаем патч корд в сервер в сетевую карту eth1, а другой конец в главный десктоп. Пока что настройте на десктопе вручную сеть: ip: 192.168.1.1, маска: 255.255.255.0, шлюз 192.168.1.254.

Не всегда известно у сетевой карты интерфейс. Попробуйте с компьютера попинговать 192.168.1.254, если не пингуется, вставляйте в другую сетевуху до того момента, когда пинги появятся. Для удобства можно измененить названия интерфейсов (eth0, eth1, eth2 и т.д.) для сетевых карт. Для этого поправьте файл /etc/udev/rules.d/70-persistent-net.rules

Ставим пакеты ssh-server для удалённого управления сервером и pptp-linux для интернета. Во время установки не вынимайте CD диск с установщиком – на нём находятся эти пакеты.

1
aptitude install openssh-server pptp-linux

Теперь можно зайти на сервер по ssh с десктопа. На компьютере у меня Ubuntu 10.04, поэтому я захожу на сервер командой:

1
ssh root@192.168.1.254

Принимаем rsa ключ и вводим пароль. Всё, мы на сервере.

Создаём настройки для vpn:

1
nano /etc/ppp/peers/tvoynet

Настройки для vpn-соединения такие: сервер: vpn.tvoynet.ru, шифрование 128 бит

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pty "pptp vpn.tvoynet.ru --nolaunchpppd --nobuffer --loglevel 0"
mtu 1492
mru 1492
connect /bin/true
name ЛОГИН
remotename PPTP
require-mppe-128

#Авто-переподнятие vpn
persist
#Количество попыток для переподнятия
maxfail 0
#Время между попытками переподнятия
holdoff 20
lcp-echo-interval 10
lcp-echo-failure 4
defaultroute
replacedefaultroute

lock
noauth
nodeflate
nobsdcomp
persist

В конфигурации указано следующее: если через 40 секунд (4 раза по 10 секунд) не будет доступен интернет, то будет переподниматься vpn-соединение с промежутками 20 секунд до тех пор, пока соединение не подниметься. Записываем пароль в файл /etc/ppp/chap-secrets:

1
ЛОГИН PPTP ПАРОЛЬ

Интернет подключается по команде

1
pon tvoynet

Отключается:

1
poff tvoynet

Добавляем маршруты для локальных ресурсов (и на всякий случай убираем дефолтные маршруты в домашних подсетях) и подключение к интернету при загрузке. В файл /etc/rc.local вставляем до строки exit 0

1
2
3
4
route del default dev eth1
route del default dev eth2
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.0.4.254 eth0
pon tvoynet

Перезагружаем сервер для проверки: shutdown -r now. Должен появиться интерфейс ppp0. Как обычно проверяем наличие интернета пингом до ya.ru

Интернет есть, теперь обновляемся.

Запускаем aptitude. Нажимаем U (это эквивалентно aptitude update) для обновления списка пакетов. Если будут обновления, полявиться раздел: Upgradable Packages (n). Выбираем этот раздел и нажимаем +(плюс). Далее нажимаем g, выведуться все пакеты для обновления, удаления, установки. Можно отменить обновление какого-либо пакета, выбрав его и нажав :(двоеточие). И снова нажимаем g для обновления.

Нужно установить сервер dhcp для раздачи автоматических настроек для домашних компьютеров, а также DNS-сервер bind9.

В aptitude нажимаем .(точка в английской раскладке, левее правого шифта) – это вызовет поиск. Вводим dhcp3 и нажимаем n до тех пор, пока не найдём пакет dhcp3-server, нажимаем +(плюс). Далее опять вызываем поиск, вводим ^bind9$ (^ – означает начало строки, $ – конец строки), т.е. мы ищем по полному совпадению, ставим и его.

Настраиваем DHCP.

Файл /etc/dhcp3/dhcpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ddns-update-style none;
default-lease-time 31536000;
max-lease-time 31536000;
authoritative;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
   option domain-name "";
   option domain-name-servers 192.168.1.254;
   option routers 192.168.1.254;
   range 192.168.1.50 192.168.1.150;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
   option domain-name "";
   option domain-name-servers 192.168.2.254;
   option routers 192.168.2.254;
   range 192.168.2.50 192.168.2.150;
}

subnet 192.168.3.0 netmask 255.255.255.0 {
   option domain-name "";
   option domain-name-servers 192.168.3.254;
   option routers 192.168.3.254;
   range 192.168.3.50 192.168.3.150;
}

host stamm-desktop {
   hardware ethernet 00:1a:1d:9f:46:91;
   fixed-address 192.168.1.1;
}

Последний абзац означает привязку ip адреса 192.168.1.1 к mac-адресу 00:1a:1d:9f:46:91 для хоста stamm-desktop. Аналогично добавляем для других домашних компьютеров. Чтобы узнать mac адрес других компьютеров в сети, наберите arp.

Меняем файл /etc/default/dhcp3-server для установки прослушивающих интерфейсов для DHCP сервера

1
INTERFACES="eth1 eth2 wlan0"

Рестартуем dhcp сервер:

1
invoke-rc.d dhcp3-server restart

Теперь очередь за bind9 /etc/bind/named.conf.options

1
2
3
4
5
6
7
8
9
10
11
options {
   directory "/var/cache/bind";

   forwarders {
       10.0.0.1;
       10.0.0.10;
   };

   auth-nxdomain no;    # conform to RFC1035
   listen-on-v6 { none; };
};

Этим мы просто форвардим запросы на другие dns-сервера. В данном случае 10.0.0.1 и 10.0.0.10

Рестартуем bind9:

1
invoke-rc.d bind9 restart

Теперь убираем ручные настройки на компьютере, должен присвоиться адрес 192.168.1.1. Теперь можно подключить второй компьютер.

Есть несколько инструкций по настройке wi-fi карты dlink DWA-520, например, Ubuntu 9.04 По команде

1
lspci -v

Выдаёт информацию по карте:

1
2
3
4
5
6
01:06.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
Subsystem: D-Link System Inc Device 3a73
Flags: bus master, medium devsel, latency 168, IRQ 16
Memory at e4000000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [44] Power Management version 2
Kernel driver in use: ath5k

Устанавливаем hostapd

1
aptitude install hostapd

Редактируем файл /etc/hostapd/hostapd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface=wlan0
driver=nl80211
#Названии точки доступа
ssid=Server1
hw_mode=g
channel=2

macaddr_acl=0

auth_algs=1
ignore_broadcast_ssid=0

wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=SuperParol
wpa_pairwise=TKIP
rsn_pairwise=TKIP

Редактируем файл /etc/default/hostapd

1
2
RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Пока без NAT компьютеры не могут выходить в интернет. Читайте в следующей статье. Учтите, ваш сервер доступен из-вне. На него можно законектиься по ssh через интернет – будьте осторожны. Нужно настроить фаервол. В следующей статье мы как раз этим и займёмся.

← Часть 1 | Часть 3 →

Debian. Часть 1: установка

| Комментарии

Есть цель написать статьи по настройке домашнего сервера для различных нужд:

  • шлюз для выхода всех компьютеров в квартире в интернет через vpn (pptp) + wi-fi
  • веб-сервер
  • торрент-качалка + samba
  • эксперименты

Схема сети такая:

Схема сети

Эти статьи будут и как напоминающая инструкция самому себе.

Начну с самого начала: установка системы GNU/Linux.

Лирическое отступление:

Есть довольного много серверных дистрибутивов: Debian, Ubuntu, Gentoo, Arch, Slackware, etch. Можно много холиварить на эти темы. Мой выбор Debian был обусловлен несколькими факторами:

Человек, который мне порекомендовал посмотреть Linux, пользовался Debian и это оставило свой след: я мог спросить о непонятных вещах и получить быстрый толковый ответ. На мой взгляд, ОС должна быть простой и понятной Люблю пакетные дистрибутивы Почему не Ubuntu, спросите вы? Знакомые linux-админы ставили ubuntu LTS: 6.06 и 8.04 на боевые сервера. По их словам 6.06 был отличным, но 8.04 стал очень медленным. Поставленный Debian на тот же сервак летал по сравнению с Ubuntu 8.04. Сам на домашнем компьютере использую Ubuntu, Debian уж слижком чопорный для десктопа. Но в качестве серверного дистрибутива однозначно Debian.

Другие дистрибутивы пробывал, но они жили в моей виртуалке не больше суток. Каждый выбирает свой дистрибутив, но я покажу установку, а в следующих постах и базовую настройку Debian 5.0.5 с апгрейдом до sid. Вопреки стериотипам, Sid (он же unstable) работает довольно стабильно. За всё время его использования не возникало проблем. Плюс в репозитариях присутствуют свежие пакеты программ.

Итак, поехали.

Скачиваем последний дистрибутив Debian. Если у вас 64 битный процессор, то лучше скачать amd64, если 32 битный, то i386. В процессе своей работы столкнулся с такой проблемой: на 32-битной системе функция intval работала только с числами от -2147483648 до 2147483647. Решение данной проблемы было найдено только на 2-ой день на php.net.

The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval(’1000000000000′) will return 2147483647. The maximum signed integer value for 64 bit systems is 92233720368547758007
Ставлю Debian на старый компьютер (Athlon 1700, 512 Mb Ram, 40+160 Gb HDD) В моём случае Debian 5.0.5 i386.

Установка тривиально, в интернете полно статей по этому поводу со скриншотами. Несколько замечаний от меня: ставить только английский язык и устанавливать только базовую систему.

Часть 2 →

Зачем нужен Firewall на веб-проектах

| Комментарии

Не так давно написал статейку на хабре.

Здравствуйте, обычно при создании проектов в интернете при вопросе безопасности большее внимание уделяют веб-приложению, а о защите самого сервера забывают, а именно о firewall’е. Я понимаю, что настройкой сервера, и в том числе firewall’а, должен заниматься специальный человек — сисадмин, но во многих ситуациях получается так, что программист сам себе админ. На настройку firewall’а даже у программиста уйдёт всего лишь около 1 дня — это избавит от потенциальных проблем. От каких? Сейчас расскажу небольшую историю «взлома». В моём городе у провайдера, который занимает лидирующее положение, есть локальный трекер, довольно таки большой (не будем про нелегальность, нас интересует только вопрос безопасности проекта). Т.к. я занимаюсь разработкой другого трекера меня интересуют различные новые возможности, и я периодически захожу на разные трекеры, в том числе и на него. Однажды я увидел ошибку 502 Bad Gateway от nginx, и решил позже зайти прямо на apache. Обычно apache перевешивают на порт 8080. Зашёл — значит firewall не настроен, посмотрел на заголовки ответа — стояла FreeBSD. Я думаю, что те, кто ставит фряху, должен быть довольно опытен в настройке и просто забыл закрыть порт, при установке nginx как фронтэнда, а apache’а как бэкенда. И я решил проверить Nmap проверил, что все порты, которые используют приложения открыты: 21, 22, 25, 80, 3306, 8080 и ещё несколько портов. Т.к. я тоже занимаюсь разработкой, я знал, что этот движок трекера (torrentpier) имеет возможность использования кэширования через memcached. Проверил стандартный порт memcached — порт был открыт. Написал простецкий скрипт соединения к memcached. Изучив исходники torrentpier, я узнал названия ключей, в которых происходит запись кэша. Из них интересными оказались 2 значения: массив настроек трекера и полный html-код главной страницы для незалогиненного пользователя. Из настроек трекера я узнал логин, пароль и адрес smtp сервера, т.е. потенциальный взломщик уже может рассылать спам (smtp же тоже не закрыт). Попробовал пароль от smtp в качестве пароля администратора трекера — получилось, я получил администраторский доступ к трекеру. Я понимаю, что это было «удачное» стечение обстоятельств, но просто закрытие портов уже бы помогло.

Заключение

Кроме безопасности самого веб-приложения (php, python, ruby, etc), но и о безопасности самого сервера (в частности firewall’а) и всех используемых параллельно инструментов. Так же нужно делать разные пароли для всего (почта, БД, ftp) даже на уровне 1 проекта.

P.S.: Делал это я не для того, чтобы что-то сломать, а просто из «спортивного» интереса. Администратор трекера был почти сразу уведомлён о возможности «взлома», в том числе о каждом шаге. %Username%, а у тебя настроен firewall?