iptables, cron и все, все, все

Здравствуйте снова. :)

После настройки iptables зашел на сайт https://www.grc.com/x/ne.dll?bh0bkyd2
Проверка показала, что у меня

Цитата:
----------------------------------------------------------------------

GRC Port Authority Report created on UTC: 2007-08-11 at 08:20:12

Results from scan of ports: 0, 21-23, 25, 79, 80, 110, 113,
119, 135, 139, 143, 389, 443, 445,
1002, 1024-1030, 1720, 5000

0 Ports Open
1 Ports Closed
25 Ports Stealth
---------------------
26 Ports Tested

NO PORTS were found to be OPEN.

The port found to be CLOSED was: 113

Other than what is listed above, all ports are STEALTH.

TruStealth: FAILED - NOT all tested ports were STEALTH,
- NO unsolicited packets were received,
- NO Ping reply (ICMP Echo) was received.

Насколько я понял, я настроил все верно, несмотря на то, что ихний сканер ругается на мой фаервол и говорит помимо вышеприведенного, что

Цитата:
Solicited TCP Packets: RECEIVED (FAILED) — As detailed in the port report below, one or more of your system's ports actively responded to our deliberate attempts to establish a connection. It is generally possible to increase your system's security by hiding it from the probes of potentially hostile hackers. Please see the details presented by the specific port links below, as well as the various resources on this site, and in our extremely helpful and active user community.

Unsolicited Packets: PASSED — No Internet packets of any sort were received from your system as a side-effect of our attempts to elicit some response from any of the ports listed above. Some questionable personal security systems expose their users by attempting to "counter-probe the prober", thus revealing themselves. But your system remained wisely silent. (Except for the fact that not all of its ports are completely stealthed as shown below.)

Ping Echo: PASSED — Your system ignored and refused to reply to repeated Pings (ICMP Echo Requests) from our server.

Прав ли я?

Далее, поскольку я использую в качестве провайдера stream, а он каждые 24 часа перезапускает сессию и мне выдается новый ip, я в папку /etc/cron.daily/ добавил файл iptables, в котором прописал

#! /bin/sh

sh /home/initmy.sh

/etc/init.d/iptables save
/etc/init.d/iptables restart

Соответственно, каждые 24 часа после включения компьютера будет выполняться все, что здесь написано, так? (в initmy.sh выполняется инициализация правил для iptables) Но будет ли выполняться этот скрипт сразу, после включения компьютера? Тестирование показало, что нет, но ведь если я загружаю машину, то после подключения через pppoe у нее будет новый ip, значит, надо выполнить вышеприведенный скрипт сразу после загрузки один раз. Где у cron или в другом месте можно заставить делать то, что я хочу?

/etc/conf.d/local.start

/etc/conf.d/local.start

Спасибо. То, что

Спасибо. То, что надо.

Теперь возникла новая проблема. Запускаю Word of Warcraft. При запуске пишет "Unable to establish a connection to socket: The attempt to connect was forcefully rejected." На сайте Близов нашел, что

Цитата:
What do I need to know about ports?

Anytime your computer receives incoming data, it is sent to a "port". Your computer has many ports that can receive data, and different activities will utilize different ports.

World of Warcraft and Burning Crusade use the TCP protocol on port 3724.

The Blizzard Downloader, which downloads patches, also uses TCP ports 6112 and the range 6881-6999. For walkthroughs on router and firewall configuration you can use the Networking Help for the Blizzard Downloader page.

Открыл соответствующие порты, но ничто не помогло. В логах REJECT пишет что

Цитата:
Aug 11 14:35:29 localhost REJECT1:IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=61809 DF PROTO=TCP SPT=38792 DPT=40041 WINDOW=32792 RES=0x00 SYN URGP=0
Aug 11 14:35:32 localhost REJECT1:IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=61810 DF PROTO=TCP SPT=38792 DPT=40041 WINDOW=32792 RES=0x00 SYN URGP=0

но непонятно, как это толковать. По кольцу пускает? Сам скрипт, которым настраиваю фаерволл:

#!/bin/sh
#
#### Внешний интерфейс ####
EXTIF="ppp0"

#### Внутренний интерфейс ####
#INTIF="eth1"

#Loop device / localhost
LPDIF="lo"
LPDIP="127.0.0.1"
LPDMSK="255.0.0.0"
LPDNET="$LPDIP/$LPDMSK"

#Необходимые утилиты
IPT="/sbin/iptables"
IFC="/sbin/ifconfig"
G="/bin/grep"
SED="/bin/sed"
AWK="/usr/bin/awk"
ECHO="/bin/echo"

### deny вместо accept предотвращает открытие дыр ###
### в то время как закрываем порты ###

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

### Сброс всех существующих и очистка персональных цепочек ###

CHAINS=`cat /proc/net/ip_tables_names 2>/dev/null`

for i in $CHAINS
do
$IPT -t $i -F
done

for i in $CHAINS
do
$IPT -t $i -X
done
$ECHO "1 > /proc/sys/net/ipv4/tcp_syncookies"
$ECHO "1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts"

### Проверка адреса источника ###

for f in /proc/sys/net/ipv4/conf/*/rp_filter;
do
$ECHO "1 > $f"
done

### Отключаем роутинг источника IP и ICMP-редиректы ###

for f in /proc/sys/net/ipv4/conf/*/accept_source_route;
do
$ECHO "0 > $f"
done

for f in /proc/sys/net/ipv4/conf/*/accept_redirects;
do
$ECHO "0 > $f"
done
$ECHO "1 > /proc/sys/net/ipv4/ip_forward"

#### Установка переменных окружения внешнего интерфейса ####

EXTIP="`$IFC $EXTIF | $AWK /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
EXTBC="255.255.255.255"
#EXTMSK="`$IFC $EXTIF | $G Mask:|$SED 's/.*Mask:\([^ ]*\)/\1/'`"
EXTMSK="`$IFC $EXTIF | $AWK /$EXTIF/'{next}//{split($0,a,":");split(a[4],a," ");print a[1];exit}'`"
EXTNET="$EXTIP/$EXTMSK"
$ECHO "EXTIP=$EXTIP EXTBC=$EXTBC EXTMSK=$EXTMSK EXTNET=$EXTNET"

#### Установка переменных окружения внутреннего интерфейса ####

#INTIP="`$IFC $INTIF | $AWK /$INTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
#INTBC="`$IFC $INTIF | $AWK /$INTIF/'{next}//{split($0,a,":");split(a[3],a," ");print a[1];exit}'`"
#INTMSK="`$IFC $INTIF | $AWK /$INTIF/'{next}//{split($0,a,":");split(a[4],a," ");print a[1];exit}'`"
#INTNET="$INTIP/$INTMSK"
#$ECHO "INTIP=$INTIP INTBC=$INTBC INTMSK=$INTMSK INTNET=$INTNET"

### Журналирование событий. Идет лог отброшенных пакетов и отброс пакетов
### затем лог отказов и сами отказы

$IPT -N DROP1 2> /dev/null
$IPT -A DROP1 -j LOG --log-prefix 'DROP1:'
$IPT -A DROP1 -j DROP

$IPT -N REJECT1 2> /dev/null
$IPT -A REJECT1 -j LOG --log-prefix 'REJECT1:'
$IPT -A REJECT1 -j REJECT

### Весь трафик от loopback принимается если IP совпадает с нашими интерфейсами

$IPT -A INPUT -i $LPDIF -s $LPDIP -j ACCEPT
$IPT -A INPUT -i $LPDIF -s $EXTIP -j ACCEPT
#$IPT -A INPUT -i $LPDIF -s $INTIP -j ACCEPT

### Блокируем широковещательные пакеты ###

$IPT -A INPUT -i $EXTIF -d $EXTBC -j DROP1
#$IPT -A INPUT -i $INTIF -d $INTBC -j DROP1
$IPT -A OUTPUT -o $EXTIF -d $EXTBC -j DROP1
#$IPT -A OUTPUT -o $INTIF -d $INTBC -j DROP1
$IPT -A FORWARD -o $EXTIF -d $EXTBC -j DROP1
#$IPT -A FORWARD -o $INTIF -d $INTBC -j DROP1

### Блокировка доступа к внутренней сети извне

$IPT -A INPUT -i $EXTIF -d ! $EXTIP -j DROP1

### Блокировка внутренних адресов, кроме тех, что относятся к внутреннему интерфейсу
### если к этим сетевым картам подключается комп, то надо убедиться, что они имеют именно эти IP или надо добавить соответствующие адреса

#$IPT -A INPUT -i $INTIF -s ! $INTNET -j DROP1
#$IPT -A OUTPUT -o $INTIF -d ! $INTNET -j DROP1
#$IPT -A FORWARD -i $INTIF -s ! $INTNET -j DROP1
#$IPT -A FORWARD -o $INTIF -d ! $INTNET -j DROP1

### Дополнительная Ergess-проверка ###

$IPT -A OUTPUT -o $EXTIF -s ! $EXTNET -j DROP1

### Блокируем исходящие icmp за исключением ping ###

$IPT -A OUTPUT -o $EXTIF -p icmp --icmp-type ! 8 -j DROP1
$IPT -A FORWARD -o $EXTIF -p icmp --icmp-type ! 8 -j DROP1

### Порты для блокирования ###
#0 - tcpmux - у SGI есть уязвимость, через которую можно атаковать
#13 - daytime
#98 - Linuxconf
#111 - sunrpc (portmap)
#137:139, 445 - Microsoft
#SNMP: 161,2
#Squid: 3128,8000,8008,8080
#1214 - Morpheus, KaZaA
#2049 - NFS
#3049 - троян для линукса, путают с NFS
#часто атакуемые: 1999, 4329, 6346
#частые трояны 12345б 65535

COMBLOCK="0:1 13 98 111 137:139 161:162 445 1214 1999 2049 3049 4329 6346 3128 8000 8008 8080 12345 65535"

### Порты TCP ###
#98 - Linuxconf
#512..515 - rexec, rlogin, rsh, printer (lpd)
# очень серьезные уязвимости. ежедневно атакуются
# 1080 - proxy Socks
# 6000 -X (Х через SSH безопасен и работает на порту TCP 22)
# 6112 (CDE у Sun and HP)

TCPBLOCK="$COMBLOCK 98 512:515 1080 6000:6009"

### Порты UDP ###
#161:162 - SNMP
#520 - RIP
#9000 - Sangoma
#517:518 - talk и ntalk (самые надоедливые)

UDPBLOCK="$COMBLOCK 161:162 520 123 517:518 1427 9000"

echo "FW: Blocking attacks to TCP port"
for i in $TCPBLOCK;
do
echo "$i"
$IPT -A INPUT -p tcp --dport $i -j DROP1
$IPT -A OUTPUT -p tcp --dport $i -j DROP1
$IPT -A FORWARD -p tcp --dport $i -j DROP1
done
$ECHO ""

$ECHO "FW: Blocking attacks to UDP port"
for i in $UDPBLOCK;
do
$ECHO "$i"
$IPT -A INPUT -p udp --dport $i -j DROP1
$IPT -A OUTPUT -p udp --dport $i -j DROP1
$IPT -A FORWARD -p udp --dport $i -j DROP1
done
$ECHO ""

### Открываем слежение по ftp ###

MODULES="ip_nat_ftp ip_conntrack_ftp"
for i in $MODULES;
do
$ECHO "Inserting module $i"
modprobe $i
done

### Защищаем некоторые чат-клиенты (ненужное закомментировать) ###

#IRC='ircd'
#MSN=1863
ICQ=5190
#NFS='sunrpc'

### Для WOW ###
#World of Warcraft and Burning Crusade use the TCP protocol on port 3724.
WOWTCP="3724"
#The Blizzard Downloader, which downloads patches, also uses TCP ports 6112 and the range 6881-6999
WOWDLRANGE="6112 6881:6999"

### Для синхронизации данных ###
PORTAGE='rsync'
OpenPGP_HTTP_Keyserver=11371

### Порты сервисов читаются из /etc/services ###

TCPSERV="domain ssh http https ftp ftp-data mail pop3 pop3s imap3 imaps imap2 time $PORTAGE $ICQ $OpenPGP_HTTP_Keyserver $WOWTCP $WOWDLRANGE"
UDPSERV="domain time"

$ECHO "FW: Allowing inside systems to use service:"
for i in $TCPSERV;
do
$ECHO "$i"
$IPT -A OUTPUT -o $EXTIF -p tcp -s $EXTIP --dport $i --syn -m state --state NEW -j ACCEPT
#$IPT -A FORWARD -i $INTIF -p tcp -s $INTNET --dport $i --syn -m state --state NEW -j ACCEPT
done
$ECHO ""

$ECHO "FW: Allowing inside systems to use service:"
for i in $UDPSERV;
do
$ECHO "$i"
$IPT -A OUTPUT -o $EXTIF -p udp -s $EXTIP --dport $i -m state --state NEW -j ACCEPT
#$IPT -A FORWARD -i $INTIF -p udp -s $INTNET --dport $i -m state --state NEW -j ACCEPT
done
$ECHO ""

### Разрешаем пинг наружу ###

$IPT -A OUTPUT -o $EXTIF -p icmp -s $EXTIP --icmp-type 8 -m state --state NEW -j ACCEPT
#$IPT -A FORWARD -o $INTIF -p icmp -s $INTNET --icmp-type 8 -m state --state NEW -j ACCEPT

### Фаерволлу разрешается пинг внутренних сетей ###

#$IPT -A OUTPUT -o $INTIF -p icmp -s $INTNET --icmp-type 8 -m state --state NEW -j ACCEPT

### NAT, SSH открытие доступа ###

#$IPT -A INPUT -i $INTIF -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT

#$IPT -t nat -A PREROUTING -j ACCEPT
#$IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET -j MASQUERADE
#$IPT -t nat -A POSTROUTING -j ACCEPT
#$IPT -t nat -A OUTPUT -j ACCEPT
$IPT -A INPUT -p tcp --dport auth --syn -m state --state NEW -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

### Блокировка и протоколирование всего, что забыли ###

$IPT -A INPUT -j DROP1
$IPT -A OUTPUT -j REJECT1
$IPT -A FORWARD -j DROP1

Поскольку у меня дома машина подключена к интернету напрямую, то необходимости в NAT и настройке внутреннего интерфейса нет. Доступ в интернет посредством браузеров и прочего работает на ура.

Дальнейшая

Дальнейшая проверка показала, что если на время запуска игры остановить фаерволл, а затем, когда она загрузится и покажет окно ввода логина-пароля - включить, то все работает замечательно. Получается, что ВоВ еще во время загрузки куда-то тыкается. Вот куда только?... Как это определить?

нада видимо

нада видимо wireshark поставить или tcpdump

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".