AllInfo
Main: Info Blog Temp Mail


unix 2012-01-04 21-38-16

Домашний firewall/router через iptables

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

Эти скрипты настраивались для работы с модемом ppp диал-ап, так все 3G юзеры могут скрипты не настраивать.

У нас скрипты установлены в /etc/rc.d/rc.ip_forward

Пожалуйста измените интерфейс ppp0 в этих скриптах на интерфейс, который подключен к интернет.

только для роутера
Измените интерфейс eth0 в этих скриптах на интерфейс, который подключен к вашей локальной сети.

Скрипт для обычной машины

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

# Нолик записывается для того, чтобы убедиться, что ваша машина НЕ является шлюзом. Обычная машина, подключенная к сети НЕ должна быть ни для кого шлюзом, иначе кто-то друго сможет использовать ваш трафик и/или маскироваться под ваш IP!!!
echo 0 > /proc/sys/net/ipv4/ip_forward

# Раскомментируйте строку ниже, если хотите, чтоб даже пинги не проходили в ваш компьютер. Иногда это не удобно, поэтому оставляю закомментироваными.
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Все остальное пусть так и будет - очень долго все описывать
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Сначала удалим все правила кем-либо созданные.
/usr/sbin/iptables -F INPUT
/usr/sbin/iptables -F FORWARD
/usr/sbin/iptables -F OUTPUT
/usr/sbin/iptables -F -t nat

# На входе в компьютер запретим все, что явно не разрешено.
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
# А вот все пакеты которые выходят из компьютера - мы разрешим по умолчанию, т.е. на выход разрешим все то, что явно не запрещено.
/usr/sbin/iptables -P OUTPUT ACCEPT

# Разрешим нас пинговать - у нас пипл.нет валится, если не может нас пинговать :(
/usr/sbin/iptables -A INPUT -i ppp0 -p icmp -m icmp -j ACCEPT
# Разрешим на входе все пакеты, для которых соединение установлено ранее (соединение установили вышедшие пакеты)
/usr/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Не забудем разрешить кольцевой буфер, иначе иксы и многие другие программы начнуть ругаться и не запустятся ;)
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT

Скрипт для шлюза

Скопируйте, настройте как описано выше и установите этот скрипт если ваша машина напрямую подключена к сети и/или раздает интернет всей локальной сети.

# Разрешим форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Раскомментируйте строку ниже, если хотите, чтоб даже пинги не проходили в ваш компьютер. Иногда это не удобно, поэтому оставляю закомментироваными.
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Все остальное пусть так и будет - очень долго все описывать
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Сначала удалим все правила кем-либо созданные.
/usr/sbin/iptables -F INPUT
/usr/sbin/iptables -F FORWARD
/usr/sbin/iptables -F OUTPUT
/usr/sbin/iptables -F -t nat

# На входе в компьютер запретим все, что явно не разрешено.
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
# А вот все пакеты которые выходят из компьютера - мы разрешим по умолчанию, т.е. на выход разрешим все то, что явно не запрещено.
/usr/sbin/iptables -P OUTPUT ACCEPT

# Разрешим форвард пакетов пришедших из локальной сети и просятся в интернет.
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
# Разрешим форвард пакетов пришедших из интернета и просятся в локальную сеть. Но только для тех компьютеров и портов, соединение с которыми было ранее установленным (пакетами ушедшими в интернет из локальной сети)
/usr/sbin/iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешим нас пинговать - у нас пипл.нет валится, если не может нас пинговать :(
/usr/sbin/iptables -A INPUT -i ppp0 -p icmp -m icmp -j ACCEPT
# Разрешим на входе все пакеты, для которых соединение установлено ранее (соединение установили вышедшие пакеты)
/usr/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешим все, что приходит из локальной сети на роутер (ну там самба или телнет)
/usr/sbin/iptables -A INPUT -i eth0 -j ACCEPT

# Не забудем разрешить кольцевой буфер, иначе иксы и многие другие программы начнуть ругаться и не запустятся ;)
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
Домашний firewall/router через iptables

18.224.45.82 / 2024-12-22_21-00-57 UTC.