<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; iptables и OpenVPN юзеры]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=34995&amp;type=atom" />
	<updated>2014-05-26T18:11:32Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=34995</id>
		<entry>
			<title type="html"><![CDATA[iptables и OpenVPN юзеры]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=410368#p410368" />
			<content type="html"><![CDATA[<p>Всех приветствую !</p><p>Имеем на борту linux шлюз с поднятым OpenVPN сервером центральный офис подсеть за шлюзом скажем 192.168.10.0/24<br />Удаленный офис OpenVPN клиент вшит в Mikrotik подсеть за роутером скажем 192.168.1.0/24<br />OpenVPN подсеть 192.168.99.0/24</p><p>Задача чтобы скажем вся подсеть центрального офиса 192.168.10.0/24 могла только пинговать все подсеть филиала 192.168.1.0/24.<br />И только один ПК из центрального офиса с адресом 192.168.10.25 имел доступ на пк удаленного офиса 192.168.1.50 только на порт 55.<br />И все.<br />Т.е. необходима фильтрация по ip адресам за роутером внутри OpenVPN тунеля.</p><p>В данные момент клиенты центрального офиса и удаленного видят друг друга без ограничений.</p><p>Ниже приведен примерный конфиг который используется.</p><div class="codebox"><pre><code>#!/bin/sh
################################################################################################################################################
## opisyvayu interfeis na storone provaidera
INET_IP=&quot;xx.xx.xx.xx&quot;
INET_IFACE=&quot;eth0&quot;
INET_BROADCAST=&quot;yy.yy.yy.yy&quot;
#################################################################################################################################################
## opisyvayu interfeis na storone localnoi seti
LAN_IP=&quot;192.168.10.1&quot;
LAN_IP_RANGE=&quot;192.168.10.0/24&quot;
LAN_IFACE=&quot;eth1&quot;
###################################################################################################################################################
## opisyvayu podset dlya VPN
LAN_VPN_RANGE=&quot;192.168.99.0/24&quot; #delaem podset dlya VPN
###################################################################################################################################################
# Razreshit&#039; zaschitu ot fal&#039;sifikacii IP-adresov. 
# Vklyuchit&#039; proverku ishodnyh adreso 
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do 
echo 1 &gt; $f 
done 
####################################################################################################################################################
# Sbrasyvaem vse pravila
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#####################################################################################################################################################
# Ustanavlivaem politiki po umolchaniyu
# Zapreschaem ves&#039; vhodyaschii trafik:
iptables -P INPUT DROP
# Zapreschaem ishodyaschii trafik:
iptables -P OUTPUT DROP
# Zapreschaem peresylku trafika:
iptables -P FORWARD ACCEPT
##########################
#iptables -P FORWARD DROP
#iptables -A FORWARD -p tcp -i eth0 -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#######################################################################################################################################################
# Простая защита от DoS-атаки
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Защита от спуфинга
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
# Защита от попытки открыть входящее соединение TCP не через SYN
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
# Закрываемся от кри ого icmp
iptables -I INPUT -p icmp -f -j DROP
#######################################################################################################################################################
# Razreshaem vhodyaschii trafik v ramkah ustanovlennyh soedinenii:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
########################################################################################################################################################
# Razreshaem ves&#039; trafik vnutri servera:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
########################################################################################################################################################
# Разрешаю самому инет шлюзу доступ в инет на все порты и все протоколы
iptables -A OUTPUT -o eth0 -j ACCEPT
##########################################################################################################################################################
# ICMP: разрешаем пинговать наш шлюз из интернета
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
##########################################################################################################################################################
#Разрешаем нашему шлюзу пинговать нашу локальную сеть
iptables -A OUTPUT -p icmp -j ACCEPT
###########################################################################################################################################################
#DNS
iptables -A INPUT  -i eth0 -p udp -m udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
#vklyuchayu ip forwarding
echo 1 &gt; /proc/sys/net/ipv4/ip_forward 
modprobe ip_nat_ftp
###########################################################################################################################################################
# imya i mesto nahojdenie utility
IPTABLES=&quot;/usr/sbin/iptables&quot;
#podcluchayu modyl
/sbin/depmod -a #podcluchayu modyl
/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 
/sbin/modprobe ip_nat_ftp
###########################################################################################################################################################
#Разрешаем компъютерам в нашей локальной сети пинговать интернет ресурсы
iptables -t nat -A POSTROUTING -o eth0 -p icmp -j MASQUERADE # Разрешаем пинги
###########################################################################################################################################################
iptables -t nat -A POSTROUTING -o eth0 -d 8.8.8.8 -j MASQUERADE #ДНС сервер от GOOGLE
iptables -t nat -A POSTROUTING -o eth0 -d 8.8.4.4 -j MASQUERADE #ДНС сервер от GOOGLE
iptables -t nat -A POSTROUTING -o eth0 -d ww.ww.ww.ww -j MASQUERADE #ДНС сервер от провайдера
iptables -t nat -A POSTROUTING -o eth0 -d ss.ss.ss.ss -j MASQUERADE #ДНС сервер от провайдера
###########################################################################################################################################################
#Дать доступ определеннопу ПК с адресом 192.168.10.2 
#на все ресурсы в сети интернет без ограничений (комп админа локальный)
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.2 -j SNAT --to-source $INET_IP
###########################################################################################################################################################
#Доступ для ip 192.168.10.11 на инет шлюз на порт 8080 
iptables -A INPUT -p tcp --dport 8080 -s 192.168.10.11 -j ACCEPT
##########################################################################################################################################################
#Доступ для ip 192.168.10.2 на инет шлюз на все порты локальный ПК админа
iptables -A INPUT -s 192.168.10.2 -j ACCEPT
###########################################################################################################################################################
#Дать доступ для всей локальной сети на сам шлюз на порт 80
iptables -A INPUT -p tcp --dport 80 -s 192.168.10.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.10.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
###########################################################################################################################################################
#Дать доступ для всей локальной сети на сам шлюз на порт 3128
iptables -A INPUT -p tcp --dport 3128 -s 192.168.10.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.10.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
###########################################################################################################################################################
#Разрешаем доступ из внутреней сети наружу-интернет для определенных ip адресов опция multiport поддерживает до 15 портов
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.3 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP 
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.4 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.5 -m multiport --dports 110,3128,443,25,80,21,2041,2042,1500 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.6 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.7 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.8 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.9 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.10 -m multiport --dports 110,3128,443,25,80,21,2041,2042 -j SNAT --to-source $INET_IP
############################################################################################################################################################
#Одному из компов локалки с адресом 192.168.10.17 
#открыть только 25 и 110. (на любые pop и smtp адреса 
#независимо на каком внешнем портале находится почта)
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.17 --dport 25 -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.17 --dport 110 -j SNAT --to-source $INET_IP
############################################################################################################################################################
#Одному пк в локалке с адресом 192.168.10.18 дать доступ 
#на 80 порт только на определенный ip допустим в
#по вдресу 62.122.247.50 крутится некий web портал
iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.18 -o eth0 -d rr.rr.rr.rr --dport 80 -j SNAT --to-source $INET_IP
###########################################################################################################################################################
#Дать доступ из вне с определенного IP например 93.179.122.36 адреса на шлюз 
#на все порты (если потребуется админу из дома зайти на шлюз например)
iptables -A INPUT -i eth0 -s zz.1zz.zz.zz -j ACCEPT
iptables -A OUTPUT -o eth0 -d zz.zz.zz.zz -j ACCEPT
###########################################################################################################################################################
#Даем доступ адресу 192.168.99.10 из openvpn подсети доступ на шлюз и на все пк в локалке,  на все порты (ip принадлежит админу :-))
iptables -A INPUT -i tun0 -s 192.168.99.10 -j ACCEPT
iptables -A OUTPUT -o tun0 -d 192.168.99.10 -j ACCEPT
############################################################################################################################################################
#Даем доступ адресу 192.168.99.2 из openvpn подсети доступ на шлюз и на все пк в локалке, на порт 80
iptables -A INPUT -i tun0 -s 192.168.99.8 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o tun0 -d 192.168.99.8 -p tcp --dport 80 -j ACCEPT
############################################################################################################################################################
#Разрешаю доступ с определенного ip адреса на конкретный порт т.е. ssh т.е. 22 порт по протоколу tcp на наш инет шлюз
iptables -A INPUT -s 149.255.30.6 -d $INET_IP -p tcp --dport 22 -j ACCEPT
############################################################################################################################################################
#Дать досту из вне с любого IP адреса на порт 1194 и 25 OPENVPN и почта
iptables -A INPUT -i $INET_IFACE -p tcp -s 0/0 --sport 513:65535 -d $INET_IP -m multiport --dports 1194,25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $INET_IFACE -p tcp -s $INET_IP -d 0/0 --dport 513:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT
##########################################################################################################################################################</code></pre></div>]]></content>
			<author>
				<name><![CDATA[leksstav]]></name>
				<uri>https://linuxforum.ru/profile.php?id=2270</uri>
			</author>
			<updated>2014-05-26T18:11:32Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=410368#p410368</id>
		</entry>
</feed>
