ฉันมักจะใช้กฎ iptables เมื่อใดก็ตามที่ฉันเข้าสู่ระบบ จากเทอร์มินัล I พิมพ์;
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 และตั้งค่าให้สามารถเรียกใช้งานได้ (คลิกขวาที่ไฟล์และตรวจสอบตัวเลือก "อนุญาตให้เรียกใช้ไฟล์เป็นโปรแกรม" ในแท็บการอนุญาต)
การรันสคริปต์นี้จากเทอร์มินัลเมื่อรูททำงานได้ดี
หลังจากพิมพ์แล้ว
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