Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Защита JAVA серверов/Iptables
Search

Iptables

5 replies276 viewsCurrently viewing: 1
Vasya
Vasya

User

Бывалый

Posts: 147

На форуме с: 03/09/2008

Репутация: +54

Рейтинг: 0

· 03/03/2009, 05:38 PM
с линуксом до этого был знаком, но на уровне пользователя и то не очень...
но тут решил попробовать заняться сервером и для этого выбрал Ubuntu Server 8.10 pogranichnik.gif
почитал тут мануальчики, вроде разобрался, потыкался, всё норм to_become_senile.gif
но дошло дело до защиты и на этом счастье кончилось =)))
почитал несколько статей, но больше понравилась (_http://posix.ru/network/iptables/_)
руководствуясь ей написал что то похожее, но в том что написал не совсем уверен, по этому прошу помочь с написанием скрипта для защиты сервера l2 (скажем арендованного и по договоренности с установленной ОС Ubuntu Server 8.10), сайт на отдельном хостинге.

вот что получилось, в коде есть несколько вопросов=)

<script type='text/javascript'>
mytagid = Math.floor( Math.random() * 100 );
document.write("
» Нажмите, чтобы показать текст - нажмите опять, чтобы скрыть... «
Код
#!/bin/sh

#переменные:
# Переменная, задающая путь к файлу запуска iptables.
IPT="/sbin/iptables"

#сетевой интерфейс. Это нужно, чтобы не писать в правилах одно и тоже.
INET_IFACE="ppp0"

# Номера непривилегированных портов #что это не понял=)
UNPRIPORTS="1024:65535"            #для серва можно ли сделать так UNPRIPORTS="2106,3106,7777"?

start_fw()
{
    # Включить перенаправление пакетов через ядро.#кто может объясните что дает это=)
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Сбросить правила и удалить цепочки.
    $IPT -F
    $IPT -X
    
    # Политики по умолчанию.
    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT DROP


    # Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах:
    # мб стоит здесь вписать порт по которому коннектятся друг с другом ГС и ЛС?
    # $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports №порта



    # Открываем некоторые порты:
    
    # L2server LS
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 2106 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 2106 -j ACCEPT ! --syn
    # L2server GS
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 7777 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 7777 -j ACCEPT ! --syn
    # MySQL (для сайта)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 3106 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 3106 -j ACCEPT ! --syn
    # VNC (удаленное управление ) учился вот по этому мануальчику (_http://www.debianadmin.com/remote-desktop-sharing-in-ubuntu.html)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 0 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 0 -j ACCEPT ! --syn

#если на сайте будет управление сервером  то здесь надо будет вписать  еще и порт на котором Telnet?

}

case "$1" in
start)    echo -n "Starting firewall: iptables"
    start_fw
        echo "."
;;
stop)    echo -n "Stopping firewall: iptables"
    iptables -F
    iptables -X
        echo "."
       ;;
save)    echo -n "Saving firewall: iptables"
    iptables-save > /etc/rules-save
    echo "."
;;    
restart) echo -n "Restarting firewall: iptables"
    iptables -F
    iptables -X
    cat /etc/rules-save | iptables-restore
        echo "."
       ;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
        echo "."
       ;;
*)    echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
        exit 1
       ;;
esac
exit 0

скрыть
");
document.close();



и вот еще, надо ли что из этого?
<script type='text/javascript'>
mytagid = Math.floor( Math.random() * 100 );
document.write("
» Нажмите, чтобы показать текст - нажмите опять, чтобы скрыть... «
Код
#--------------------------------------------------------------------------------------------------------
#может ли что из этого понадобится для игрового серва l2?
#-------------------------------------------------------------------------------------------------------
#    # Эти правила предохраняют от некоторых типов атак:
#    # SYN наводнение.
#    # Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
#    $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
#    $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
#    
#    # UDP наводнение
#    # Службы использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя.
#    $IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP
#    $IPT -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT
#    $IPT -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT  
#    $IPT -A INPUT -p UDP -j RETURN
#    $IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT
#    
#    # ICMP - перенаправление
#    # ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
#    # пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
#    $IPT -A INPUT --fragment -p ICMP -j DROP
#    $IPT -A OUTPUT --fragment -p ICMP -j DROP
#    
#    # Разрешаем  ICMP соединение. Значительная часть ICMP используется для передачи сообщений о
#    # том, что происходит с тем или иным UDP или TCP соединением.
#    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
#    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT
#    
#    # Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
#    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
#    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT
#
#    # Разрешаем передачу пакета - некорректный параметр - используется, если в заголовке пакета содержится недопустимая запись,
#    # или если контрольная сумма заголовка не соответствует контрольной сумме, указанной передающим узлом.
#    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type parameter-problem -j ACCEPT
#    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type parameter-problem -j ACCEPT
#
#    # Запрещаем подключение к X серверу через сетевые интерфейсы.
#    #думаю что закрыл все порты или я ошибаюсь?
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1:65535 -j DROP --syn
#
#--------------------------------------------------------------------------------------------------------

# Разрешаем finger, whois, gorper, wais. Traceroute - разрешаем себе, к нам не проломятся - запрещено. Telnet
#   # запретил, чтобы соблазна не было передавать пароли прямым текстом.
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 20 -j ACCEPT
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 20 --sport $UNPRIPORTS -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 23 --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 79 -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 43 -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 70 --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 70 -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 210 --sport $UNPRIPORTS -j ACCEPT
#    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 210 -j ACCEPT ! --syn
#    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 33434:33523 --sport 32769:65535 -j ACCEPT

скрыть
");
document.close();


я понимаю что тут много с того сайта где я читал, но я посчитал нужным то что в первой части, и не знаю надо ли что из того что во второй, плз посоветуйте, исправьте меня или предложите что нибудь другое, буду благодарен за помошь.
0
Vasya
Vasya

User

Бывалый

Posts: 147

На форуме с: 03/09/2008

Репутация: +54

Рейтинг: 0

· 03/04/2009, 06:08 PM

в силах кто нибудь помочь?:)

//вроде бы не нарушил правил этим сообщением :)

0
H
Hayes

User

Участник

Posts: 47

На форуме с: 12/14/2007

Репутация: +58

Рейтинг: 0

· 03/07/2009, 12:13 PM

для начала утя patch-o-mathic стоит? чтобы начать пакеты рапознавать и дропать?

0
U
ufovl

User

Участник

Posts: 79

На форуме с: 12/29/2008

Репутация: +12

Рейтинг: 0

· 03/13/2009, 07:50 AM

некорректный фаер у тебя.
тут хорошая документация:
_http://www.opennet.ru/docs/RUS/iptables/

могу набросать простенький фаервол, если нужно...

0
M
Meraklin

User

Ветеран

Posts: 555

На форуме с: 05/21/2008

Репутация: +302

Рейтинг: 0

· 03/13/2009, 09:43 AM

Пройдемся по коду с начала...

1. Я не думаю, что твой арендованный сервер в интернет лезет через диал-лап... Так что мило меняем PPP0 на eth0 или как там у тебя называется интерфейс.

2. Да можно... Но лучше оставь непривелигерованные порты закрытыми ...

3. $IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
Это не нужно... Так как на инпат рулы полностью будут блокировать трафик к тебе... И можно манипулировать с ними .. А на форвард зачем? На Ла2 сервере... Он что роутер в сети?

4. Если сайт на одной машине с сервером, то рулы для сайта не нужны... И надо 80 порт открыть 2 рулами выше... Если на другой, то не надо 3306 на весь трафик открывать просто -d $IP_сайта и все, путь 3306 будет виден только для сайта.

5. На сайте не может быть управление сервером через .. что кнопка рестарта ??? :))

6. Остальное не нужно... От син атак просто можно поставить... на фаерволе рулл ип/син... то есть например: 10 син запросов с ИП на единицу времени... Остальное дропаться будет... Плохо то, что если будет интернет клуб, то оттуда будет возможно играть только нескольким компам... Или придется для них отдельно рулы писать...
7. фигер хуиз... И все остальное можно будет работать с дефаулт плиси аксепт на оутгоиг... И не надо им писать что-то другое...
8. Если сайт на пхп... И на одной машине... Лучше апач компилить с пхп, причем апач как воркер... пхп с подержкой мультитрида... (пробовал, работает лучше) и апач с врубленым дефаултным модулем от ддоса выдержит атаку ботнета под 3000 машин .. (тестировалось на железе квард кор проц, 8гб озу).

0
Topic is closed for replies