Во-первых, мне жаль мой английский, а не мой родной язык.
Мне было интересно узнать об IPtables. Я прочитал много статей и постов об этом, и подумал, что понял хотя бы немного.
Я часами пробовал каждую комбинацию правил ... Как ты думаешь? Это хорошая конфигурация, «безопасная»?
Заранее спасибо!
#!/bin/bash
#iptables-restore < /etc/iptables.test.rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Autorise les connexions déjà établies et localhost
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
TOR
iptables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT
# ICMP (Ping)
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j DROP
# DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
# Mail SMTP
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
#Transmission
iptables -A INPUT -p udp --dport 51413 -j
ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -j ACCEPT
# NTP (horloge du serveur)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
# On log les paquets en entrée.
iptables -A INPUT -j LOG
# On log les paquets en sortie.
iptables -A OUTPUT -j LOG
# On log les paquets forward.
iptables -A FORWARD -j LOG
exit 0
Прежде всего я хотел бы отметить, что настройка брандмауэра на вашем локальном компьютере не является обязательной. Если вы не подключены напрямую к общедоступному Интернету (не делайте этого), ваш домашний маршрутизатор / межсетевой экран обеспечивают базовый уровень безопасности. Я не имею в виду, что то, что вы пытаетесь сделать, совершенно бессмысленно. Я только говорю, не уходите далеко, если вы не до конца понимаете, что делаете.
Тогда для правил IPtable. Мой совет - начинать с малого и добавлять правила шаг за шагом. Начните, например, с:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
#Allow servers to respond to the packets that are send by this device
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Проверьте правила, перейдя на google.com. Если это работает, добавьте остальные правила, шаг за шагом. Это будет легче, чем метод проб и ошибок по множеству правил.
Я не понимаю идею всех правил, которые вы используете. Некоторые из них кажутся очень странными. Правила, основанные на tcp-флагах, являются вещами высокого уровня. Для этого вам нужно знать, как работает tcp / udp. Так что оставьте их пока и сосредоточьтесь на других.
Также, когда вы используете политику DROP по умолчанию, нет необходимости добавлять дополнительные правила DROP, как вы делаете для SSH. Чем меньше правил вы используете, тем легче будет понять.
Еще один совет, это может быть полезно для Wireshark вашего трафика, чтобы вы могли видеть, что происходит. Просто помните, что в зависимости от того, куда смотрит Wireshark, это повлияет на трафик, который вы увидите. Я просто не могу сказать вам точно, где Wireshark будет захватывать трафик. Может кто еще может?
Я надеюсь, что это поможет в дальнейшем. В противном случае не стесняйтесь спрашивать.