Я зазвичай запускаю свої правила iptables, коли я входжу в систему. Від терміналу я набираю;
sudo sh firewall.sh
Налаштувавши комп’ютер сестри, я хочу надати їй основний захист між брандмауером. Вона не буде входити в систему як адміністратор, просто стандартний обліковий запис. Як я можу змусити сценарій брандмауера виконувати кожного разу, коли вона входить, не вводячи жодного пароля?
Сценарій, який я написав для комп’ютера своєї сестри, містить;
#!/bin/sh
modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP
iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Я помістив її в її домашню папку як firewall.sh і встановив її виконуваною (клацніть правою кнопкою миші на файл та перевірте опцію "дозволити виконання файлу як програми" на вкладці дозволів).
Запуск цього сценарію з терміналу, оскільки root працює нормально.
Після набору тексту;
sudo sh firewall.sh
Я набрав у термінал
sudo iptables -L -v
і я отримую
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP tcp -- any any anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN
0 0 DROP udp -- any any anywhere anywhere
0 0 DROP icmp -- any any anywhere anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 DROP icmp -- any any anywhere anywhere
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:https
0 0 ACCEPT udp -- any any anywhere anywhere udp spts:32768:61000 dpt:domain
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:http
0 0 ACCEPT all -- any lo anywhere anywhere
Як я можу змусити цей скрипт автоматично запускатися під час входу або, можливо, зберегти ці правила назавжди для мого сестра? Надайте, будь ласка, докладний код, оскільки мої перші спроби методу rc.local та iptables-save не були дуже успішними. При кожному перезавантаженні всі ланцюги INPUT, OUTPUT та FORWARD скидаються на ACCEPT, не вказуючи жодних політик під час введенняsudo iptables -L -v
ip6tables
правила, якщо ви один день отримуєте підключення v6, оскільки IPv6 обробляється,ip6tables
а ніiptables
.