03-03-2009, 11:43 PM
пытаюсь настроить iptables для Ubuntu Server 8.10 что бы закрыть все порты кроме тех что нужны серверу и сайта для доступа к бд. почитал разных мануалов по созданию и попытался написать скрипт для iptables.
В одном мануальчике нашел еще и какую то защиту=)
оч прошу тех кто разбирается помочь в создании (исправить ошибки в моем, или этот совсем не правильный)
в общем вот:
и вот еще коды, стоит ли их впихивать в основной
заранее всем спасибо, кто поможет=)
В одном мануальчике нашел еще и какую то защиту=)
оч прошу тех кто разбирается помочь в создании (исправить ошибки в моем, или этот совсем не правильный)
в общем вот:
Код:
#!/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
и вот еще коды, стоит ли их впихивать в основной
Код:
#--------------------------------------------------------------------------------------------------------
#может ли что из этого понадобится для игрового серва 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
заранее всем спасибо, кто поможет=)