2013-11-04 12 views
6

Próbuję utworzyć reguły iptable, które będą zezwalały na przychodzące i wychodzące połączenia ssh, a następnie zezwalają na połączenia wychodzące do określonych portów, a następnie usuwają wszystko, co nie pasuje.Zezwalaj na przychodzące/wychodzące ssh i blokuj wszystkie wychodzące poza określonymi portami.

Oto zasady, z którymi się zetknąłem, zasady SSH działają, ale kiedy wkraczam tunel do skrzynki, nie mogę uzyskać dostępu do http (port 80), mimo że na to pozwoliłem. Czy ktoś może zauważyć błąd?

#!/bin/bash 
#clear iptables 
iptables -F 
iptables -X 

#set default policy to drop 
iptables -P INPUT DROP 
iptables -P OUTPUT DROP 
iptables -P FORWARD DROP 

#accept everything no matter port on localhost 
iptables -A INPUT -i lo -j ACCEPT 

#allow established connections 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

#allow input on port 22, (established connections auto accepted) 
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

#allow traffic going to specific outbound ports 
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT 
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT 
iptables -A OUTPUT -p tcp --dport 6667 -j ACCEPT 
iptables -A OUTPUT -p tcp --dport 6697 -j ACCEPT 
#... 

#drop anything that doesnt match the rules above 
iptables -A INPUT -j DROP 
iptables -A OUTPUT -j DROP 

Dzięki za poświęcony czas.

Odpowiedz

7

Możliwe, że chcesz dodać porty DNS, w przeciwnym razie możesz nie być w stanie rozwiązać żadnych nazw hostów.

Użycie wyjścia OUTPUT dla portu TCP i UDP 53 powinno pomóc.

+1

Dziękuję, ja nie sądzę o portach DNS. Już działa. –

0

Musisz otworzyć portu 80 na wejściu i wyjściu z reguły tak:

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 
Powiązane problemy