Portál AbcLinuxu, 10. května 2025 04:47
echo "Starting firewall ..." echo 1 > /proc/sys/net/ipv4/ip_forward #Delete all rules iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #Default policy = DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ROP #---- INPUT ----# #lo & eth0 = secure, should be accepted iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT #eth1 = port 8022 is SSH -> accept iptables -A INPUT -i eth1 -p tcp --dport 8022 -j ACCEPT #eth1,lo,eth0 ESTABLISHED,RELATED packets should be acceted iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT #---- OUTPUT ----# #lo to eth1 -> OK iptables -A OUTPUT -o eth1 -i lo -j ACCEPT #lo to eth0 -> OK iptables -A OUTPUT -o eth0 -i lo -j ACCEPT #---- FORWARD ----# #Forward existing conns from eth1 to eth0 & lo iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth1 -o lo -m state --state ESTABLISHED,RELATED -j ACCEPT #Forward eth0 to eth1 iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT #---- PREROUTING ----# #Adds masquerade iptables -A PREROUTING -t nat -i eth0 -j MASQUERADEPoznamka: Pisu si k tomu poznamky anglicky, protoze jsou prehlednejsi nez cestina, ktera ma, nebo spis nema, tolik presnych vyrazu. Petr
iptables -A PREROUTING -t nat -o _inet_if -j MASQUERADEto je prvni vec co me padla do woka :) a prilis se me to dal cist nexe (jsem linej :))
melo by tam byt POSTROUTINGTakže by ten poslední příkaz měl chcípnout s
Invalid argument
, imho. Tudíž je možná chyba už někde dřív, která to ssh spojení utne. Ale na hledání chyb v cizích skriptech už jsem moc unavený sh -x ./skriptPoslední příkaz, který to přes ssh zobrazí, bude nejspíš blbě.
2. U politiky pro řetězec FORWARD máte překlep.
3. Pokud povolíte v řetězci INPUT všechny pakety přicházející na lo nebo eth0, nemá smysl později řešit nějakou jejich podmnožinu.
4. SSH na portu 8022 má nějaký hlubší smysl, nebo je to jen security by obscurity?
5. Nenapadá mne, jak by mohl vypadat paket, který by se objevil v řetězci FORWARD a měl jako výstupní rozhraní lokální smyčku.
6. Testování vstupního rozhraní v řetězci OUTPUT postrádá smysl. Ono je většinou otázkou, zda má vůbec smysl něco filtrovat v řetězci OUTPUT.
7. Source NAT, a tedy i maškaráda, se zásadně provádí až na konci, tedy v řetězci POSTROUTING.
echo "Starting firewall ..." echo "1" > /proc/sys/net/ipv4/ip_forward #Default policy = DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ROP #CLEAR all rules iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #---- INPUT ----# #lo & eth0 = secure, should be accepted iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT #eth1,lo,eth0 ESTABLISHED,RELATED packets should be acceted iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT #eth1 = port 8022 is SSH -> accept iptables -A INPUT -i eth1 -p tcp --dport 8022 -j ACCEPT #---- OUTPUT ----# iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -o eth0 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT #---- FORWARD ----# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #---- PREROUTING ----# #Adds masquerade iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
2. Doporučoval bych maškarádovat jen pakety, u kterých to má smysl. Netfilter je pravděpodobně inteligentní a pokud zjistí, že paket už má správnou zdrojovou adresu, maškarádovat ho nebude, ale i tak bude lépe ho nezkoušet. Takže bych přidal něco na způsob '-s $INT_RANGE
'
3. Osvědčilo se mi nepsat věci, které jsou konfigurovatelné (vnitřní rozhraní, vnější rozhraní, adresy, rozsahy apod.) všude po skriptu, ale dát si je na začátek do proměnných. Až budete muset prohodit vnitřní a vnější interface, pochopíte proč.
4. Vaše víra v to, že ve vnitřní síti žijí jen ti hodní je obdivuhodná, ale z bezpečnostního hlediska krajně nerozumná. Zvláště v dnešní době pravidelných epidemií červů a další havěti. Doporučoval bych v řetězci INPUT povolit i z vnitřního rozhraní jen to, co je skutečně potřeba.
5. Trvá moje pochybnost o SSH na portu 8022 a překlep v politice řetězce FORWARD (viz body 4 a 2 v příspěvku z 21:58).
2. A jste schopen odpřisáhnout, že absolutně nikdy nedojde k tomu, že někdo z uživatelů spustí nějaký kód neznáméno původu, který se k němu dostane e-mailem, z webové stránky nebo jakýmkoli jiným způsobem?
iptables -P OUTPUT ACCEPT
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.