Перейти до

iptables правила для stg


Рекомендованные сообщения

  • 3 weeks later...

Да не так вырозился!

Мои правила:

#!/bin/bash
admin=192.168.100.1

server0=192.168.100.2
server1=XXX.XXX.XXX.XXX

iface_cli=eth0
iface_world=eth1

conf_port=5555
user_port1=5555
user_port2=5554

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

#ICMP
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT

iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT

#DNS
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

#SSH
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 22 -j ACCEPT

#WWW
iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 -d $server0 --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.100.0/24 -s $server0 --sport 80 -j ACCEPT

#Webmin
iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 -d $server0 --dport 10000 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.100.0/24 -s $server0 --sport 10000 -j ACCEPT

#FTP
iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 -d $server0 --dport 20:21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.100.0/24 -s $server0 --sport 20:21 -j ACCEPT

#TCP InetAcces Stargazer
iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.100.0/24 -s $server0 --sport $conf_port -j ACCEPT

#UDP InetAcces Stargazer
iptables -t filter -A INPUT -p udp -s 192.168.100.0/24 --sport 5554:5555 -d $server0 --dport 5554:5555 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.100.0/24 --dport 5554:5555 -s $server0 -j ACCEPT

#TCP Stargazer Congigurator
iptables -t filter -A INPUT -p tcp -s 192.168.100.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.100.0/24 -s $server0 --sport $conf_port -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.100.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX

 

ОнКоннект

#!/bin/bash

# Login
LOGIN=$1

#user IP
echo $2
IP=$2

#cash
CASH=$3

#user ID
ID=$4

iptables -A FORWARD -d $2 -j ACCEPT
iptables -A FORWARD -s $2 -j ACCEPT
iptables -A INPUT -i eth0 -d $2 -j ACCEPT
iptables -A INPUT -i eth0 -s $2 -j ACCEPT
iptables -A OUTPUT -o eth0 -d $2 -j ACCEPT
iptables -A OUTPUT -o eht0 -s $2 -j ACCEPT

echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

Ну и ДисКоннект естественно

#!/bin/bash

# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

iptables -D FORWARD -d $2 -j ACCEPT
iptables -D FORWARD -s $2 -j ACCEPT
iptables -D INPUT -i eth0 -d $2 -j ACCEPT
iptables -D INPUT -i eth0 -s $2 -j ACCEPT
iptables -D OUTPUT -o eth0 -d $2 -j ACCEPT
iptables -D OUTPUT -o eth0 -s $2 -j ACCEPT

echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

 

Да все работает, все почти хорошо....

Но с точки зрения безопасности не все хорошо...

 

В Iptables tutorial есть набор правил rc.firewall.txt который впринцепе устраивает по безопасности, но будет ли он работать вместо FW, может есть возможность заточить его под stg? я к сожалению в iptables чайник...

#!/bin/sh
#
# 1. Configuration options.
#
#
# 1.1 Internet Configuration.
#
INET_IP="194.236.50.155"
INET_IFACE="eth0"
INET_BROADCAST="194.236.50.255"
#
# 1.2 Local Area Network configuration.
#
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP address. the same as netmask 255.255.255.0
#
LAN_IP="192.168.0.2"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth1"
#
# 1.4 Localhost Configuration.
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
# 1.5 IPTables Configuration.
#
IPTABLES="/usr/sbin/iptables"
#
# 1.6 Other Configuration.
#
###########################################################################
#
# 2. Module loading.
#
#
# Needed to initially load modules
#
/sbin/depmod -a
#
# 2.1 Required modules
#
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
#
# 2.2 Non-Required modules
#
#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc
###########################################################################
#
# 3. /proc set up.
#
#
# 3.1 Required proc configuration
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# 3.2 Non-Required proc configuration
#
#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
###########################################################################
#
# 4. rules set up.
#
######
# 4.1 Filter table
#
#
# 4.1.1 Set policies
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# 4.1.2 Create userspecified chains
#
#
# Create chain for bad tcp packets
#
$IPTABLES -N bad_tcp_packets
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
#
# 4.1.3 Create content in userspecified chains
#
#
# bad_tcp_packets chain
#
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset 
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#
# allowed chain
#
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
#
# TCP rules
#
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
#
# UDP ports
#
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT
#
# In Microsoft Networks you will be swamped by broadcasts. These lines 
# will prevent them from showing up in the logs.
#
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \
--destination-port 135:139 -j DROP
#
# If we get DHCP requests from the Outside of our network, our logs will 
# be swamped as well. This rule will block them from getting logged.
#
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \
--destination-port 67:68 -j DROP
#
# ICMP rules
#
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# 4.1.4 INPUT chain
#
# Bad TCP packets we don't want.
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
#
# Special rule for DHCP requests from LAN, which are not caught properly
# otherwise.
#
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
#
# Rules for incoming packets from the internet.
#
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
#
# If you have a Microsoft Network on the outside of your firewall, you may 
# also get flooded by Multicasts. We drop them so we do not get flooded by 
# logs
#
#$IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP
#
# Log weird packets that don't match the above.
#
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "
#
# 4.1.5 FORWARD chain
#
#
# Bad TCP packets we don't want
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# Accept the packets we actually want to forward
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#
# 4.1.6 OUTPUT chain
#
# Bad TCP packets we don't want.
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#
# Special OUTPUT rules to decide which IP's to allow.
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
######
# 4.2 nat table
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

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

Возможно я не прав....

Какие правила нужно разместить в ОнДисконнект и ОнДисконнект и что выкинуть из rc.firewall.txt?

Ссылка на сообщение
Поделиться на других сайтах

>В Iptables tutorial есть набор правил rc.firewall.txt который впринцепе устраивает по безопасности, но будет ли он работать вместо FW...

 

А чем неустраивает FW?

 

Сначала разберись чем они отличаются а потом решая чего тебе надо. В туториальном примере в отличии от fw добавлены проверки на нехорошие пакеты которые заруливают в логи а так все тоже самое. Общий принцип и там и там все закрыть и открыть только то что, нужно.

Ссылка на сообщение
Поделиться на других сайтах

Хотелось бы что б юзвреня не имели без авторизации не DNS ни ICMP.

FW тем и отличаеться что не имеет проверок на ликвидность пакетов, это естественно, таким образом фальсифицируя пакеты можно иметь доступ из интернета к узлам моей сети и впринцепе к маршрутизатору на котором и стоит stg. Нет желания платить за лишний трафик...

 

Maclaud если считаешь что я не прав, дай пояснения чайнику...

Ссылка на сообщение
Поделиться на других сайтах
  • 3 months later...

У меня тоже проблема с начальніми настройками.

Сначала сделал все по ка написано на сайте

#!/bin/bash
#Машина администратора
admin=192.168.0.10

#Адреса роутера
server0=192.168.0.1
server1=193.84.хх.хх

# Интерфейс смотрящий на клиентов
iface_cli=eth1

# Интерфейс смотрящий во внешний мир
iface_world=eth0


#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555

# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых - запрещен
# Если мы подстрахуемся, хуже не бкдет
#echo "1" > /proc/sys/net/ipv4/ip_forward

# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Разрешаем пингам ходить всюду и всегда
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# Разрешаем всё на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT

# Разрешить серверу общаться со внешним миром
iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT


# DNS. Замечу, ДНС работает и по TCP и по UDP
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

# SSH
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 22 -j ACCEPT

# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.0.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.0.0/24 -s $server0 --sport $conf_port -j ACCEPT

# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.0.0/24 -d $server0 --dport $user_port1 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.0.0/24 --dport $user_port1 -s $server0 -j ACCEPT

#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE

 

Все работает но есть проблема с безопасносю

 

# Разрешить серверу общаться со внешним миром
iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT

Хотелось бы что бы общение с внешним миром было только на определенных портах

 

Сделал так

#!/bin/bash
#Машина администратора
admin=192.168.0.10

#Адреса роутера
server0=192.168.0.1
server1=193.84.хх.хх


# Интерфейс смотрящий на клиентов
iface_cli=eth1

# Интерфейс смотрящий во внешний мир
iface_world=eth0

#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555

# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых - запрещен
# Если мы подстрахуемся, хуже не бкдет
#echo "1" > /proc/sys/net/ipv4/ip_forward

# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Разрешаем пингам ходить всюду и всегда
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# Разрешаем всё на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT

# Разрешить серверу общаться со внешним миром

## 80 порт
iptables -A OUTPUT -o $iface_world -p TCP --sport 80 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 80 -j ACCEPT
## 21
iptables -A OUTPUT -o $iface_world -p TCP --sport 21 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 21 -j ACCEPT
## 5190
iptables -A OUTPUT -o $iface_world -p TCP --sport 5190 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 5190 -j ACCEPT
## 110
iptables -A OUTPUT -o $iface_world -p TCP --sport 110 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 110 -j ACCEPT
## 25
iptables -A OUTPUT -o $iface_world -p TCP --sport 25 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 25 -j ACCEPT
## 22
iptables -A OUTPUT -o $iface_world -p TCP --sport 22 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 22 -j ACCEPT
## 5555 порт
iptables -A OUTPUT -o $iface_world -p TCP --sport 5555 -j ACCEPT
iptables -A INPUT -i $iface_world -p TCP --dport 5555 -j ACCEPT


# DNS. Замечу, ДНС работает и по TCP и по UDP
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

# SSH
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 22 -j ACCEPT

# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.0.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.0.0/24 -s $server0 --sport $conf_port -j ACCEPT

# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.0.0/24 -d $server0 --dport $user_port1 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.0.0/24 --dport $user_port1 -s $server0 -j ACCEPT

#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE

 

В результате пинги ходят а интернета нету

ДНС пашет

Может кто подскажет в чем дело

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...