Portál AbcLinuxu, 17. července 2025 13:45
Bad argument `icmp_packets'
) je na radku s:
iptables -A INPUT -p ICMP -i $LAN_INTERFACE_1 -j icmp_packets
....
a celej kod pro firewall je tady:
#!/bin/sh EXTERNAL_INTERFACE="ra0" LOOPBACK_INTERFACE="lo" LAN_BCAST_ADDRESS="192.168.2.255" # Adjust LAN_BCAST_ADDRESS to suit your network # Get the IP Addresses for the network cards IPADDR=`/sbin/ifconfig $EXTERNAL_INTERFACE | grep -i "addr:" | cut -f2 -d: | cut -f1 -d " "` LOCALHOST_IP="127.0.0.1/32" ########## echo "Starting Firewalling... " iptables --flush iptables --delete-chain iptables --zero ########## Set default policies iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT iptables -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT ########## Create Seperate Chains for ICMP, TCP and UDP to traverse echo "Create Seperate Chains for ICMP, TCP and UDP to traverse..." iptables --new icmp_packets iptables --new tcp_packets iptables --new udpincoming_packets ########## The Allowed Chain for TCP connections echo "The Allowed Chain for TCP connections " iptables -N allowed iptables -A allowed -p TCP --syn -j ACCEPT iptables -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A allowed -p TCP -j DROP ########## ICMP rules (Internet Control Message Protocol) echo "ICMP rules (Internet Control Message Protocol) " iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT ########## TCP rules (Transmission Control Protocol) echo "TCP rules (Transmission Control Protocol) " ### FTP port #iptables -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed ### SSH port iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed ### SMTP Mail Server port #iptables -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed ### HTTP port iptables -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed ### POP3 port #iptables -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed ### IRC port #iptables -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed ### IMAP port #iptables -A tcp_packets -p TCP -s 0/0 --dport 143 -j allowed ### No-ip DNS services port #iptables -A tcp_packets -p TCP -s 0/0 --dport 8245 -j allowed ########## UDP ports (User Datagram Protocol) echo "UDP ports (User Datagram Protocol) " iptables -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT iptables -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT iptables -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT iptables -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT iptables -A udpincoming_packets -p UDP -s 0/0 --source-port 143 -j ACCEPT ########## INPUT chain # Establish the basic Input chain ########## and filter the packets onto the correct chains. echo "INPUT chain # Establish the basic Input chain " iptables -A INPUT -p ICMP -i $LAN_INTERFACE_1 -j icmp_packets iptables -A INPUT -p TCP -i $LAN_INTERFACE_1 -j tcp_packets iptables -A INPUT -p UDP -i $LAN_INTERFACE_1 -j udpincoming_packets iptables -A INPUT -p ALL -i $LAN_INTERFACE_1 -d $LAN_BCAST_ADDRESS -j ACCEPT iptables -A INPUT -p ALL -d $LOCALHOST_IP -j ACCEPT iptables -A INPUT -p ALL -d $LAN_IPADDR -j ACCEPT iptables -A INPUT -p ALL -d $IPADDR -m state --state ESTABLISHED,RELATED -j ACCEPT ########## ENABLE TO LOG ERRORS echo "ENABLE TO LOG ERRORS " iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: " ########## OUTPUT chain # Establish the basic Output chain ########## and filter them onto the correct chain iptables -A OUTPUT -p ALL -s $LOCALHOST_IP -j ACCEPT iptables -A OUTPUT -p ALL -s $LAN_IPADDR -j ACCEPT iptables -A OUTPUT -p ALL -s $IPADDR -j ACCEPT ########## ENABLE TO LOG ERRORS iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died:dekuji moc, za kazdej napad :)
iptables --new …
, podle manuálových stránek to má být iptables --new-chain …
nebo iptables -N …
. Ale pokud nevíte, co ten skript dělá, je vám k ničemu – firewall se nedá nastavovat tak, že si okopírujete nějaká „správné řešení“, firewall je potřeba nastavit vždycky podle toho, co a jak potřebujete na daném počítači chránit.
iptables --helptak tam je napsano:
--new -N chain Create a new user-defined chaintakze to by melo byti spravne. Jinak jsem ze sebe mozna udelal vetsi lamu nez jsem. Ja vim co ten skript dela. A docela mi vyhovuje a chci si ho pak jeste doupravit podle sebe (takova dobra kostra pro zacatek), ale musi fungovat. Ale nevim co je tam spatne, syntaxe? Nee, to se mi nezda.
--new
byl špatný parametr, ten příkaz by neprošel, navíc v dalších příkazech se do toho řetězce přidávají pravidla, což by už vůbec neprošlo, to jsem přehlédl.
Nevidím ale nikde definovánu proměnnou $LAN_INTERFACE_1
, řádek iptables -A INPUT -p ICMP -i $LAN_INTERFACE_1 -j icmp_packets
se pak asi expanduje na iptables -A INPUT -p ICMP -i -j icmp_packets
, takže -j
je chápáno jako hodnota parametru -i
a icmp_packets
jako další (neznámý) parametr.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.