2007.04.28. szombat 11:29
SPétör
Na, szóval, elkövettem az egyik alapvető hibát, amit egy linuxos (persze más is) elkövethet:
ELGÉPELTEM!Köszönet
mavo -nak, hogy éles szemmel észrevette!
A probléma:

Kijavítottam és újra futtattam a szkriptet. Most már nem is panaszkodott semmire. Utána természetesen iptables -L, csak hogy lássam, mit sikerült művelni:
root:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:bootpc
ACCEPT udp -- anywhere anywhere udp spt:bootpc
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP all -- 192.168.0.0/16 anywhere
DROP all -- 172.16.0.0/12 anywhere
DROP all -- 10.0.0.0/8 anywhere
DROP all -- 255.0.0.0/8 anywhere
DROP all -- 0.0.0.0/8 anywhere
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning prefix `INPUT_probe'
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,bootps,http,pop3,
https,smtps,pop3s,msnp,36013
ACCEPT udp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,bootps,https
ACCEPT icmp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning prefix `OUTPUT_probe'
(Remélem a log sorok is jó helyen vannak...)
A jelenlegi szkript tehát így néz ki:
my_firewall_04(Beláttam, hogy már kissé áttekinthetelen a blog a hosszú szkriptektől, a jövőben tehát feltöltöm és belinkelem őket. Ehhez persze rá kellett jönnöm a fortélyára.)

Egyébként még nem vagyok elégedett. Ellenőriztem a Shields-Up-pal, és ezt kaptam:

Nem szeretem én ezt...

Ezek a nyitott portok:
profile profile emfis-data emfis-data snpp snpp
| 136/tcp 136/udp 140/tcp 140/udp 444/tcp 444/udp | PROFILE Naming System PROFILE Naming System EMFIS Data Service EMFIS Data Service Simple Network Paging Protocol Simple Network Paging Protocol |
Stealth portot! Vagy felesleges?
Nyitottat viszont látni sem akarok!
Még egy kis kiegészítés.
A
Linuxfórum -on hívták fel a figyelmemet a DHCP szükségességére. Hát ezt nem értem, mert enélkül is ment az internet. Az igaz, hogy amikor kivettem a 67, 68 portokat és így futtattam a szkriptet terminal-ból, akkor ezt kaptam:
root:~# /usr/sbin/my_firewall
root:~# DCOPServer : slotSuicide() -> exit.
Na, akkor irány a fórum, hátha tud valaki segíteni.
(Azért mál alakul, nem...?)
SP
2007.04.27. péntek 23:55
SPétör
Új elemmel bővült az oldalsáv.

Elolvastam egy blog bejegyzést, miután a címlap felhívta a figyelmemet rá (ha érdekel, klikk rá):

...elolvastam és úgy döntöttem, hogy ezt a "szabályozást" én is alkalmazom.
Hogy miért?
Mert én így gondolom...
Egyébként egy ideje már gondolkodom a dolgon és persze már tudtam is erről, de az ismereteim kissé hiányosak voltak.
Most tehát egy kissé bővebb ismeretekre tettem szert:
A Creative Commons egy a szerző által a mű mellé adott jognyilatkozat (licenc), melyben a szerző meghatározhatja, hogy mások (a mű felhasználói) mit tehetnek szabadon a művel, és milyen felhasználások esetében kell a szerzőhöz fordulni külön engedélyért.
De hogy ne kerüljem ki az előzőekben megfogalmazott (miért?) kérdést ezzel a beképzelt "Mert én így gondolom"-mal, röviden megpróbálom összefoglalni, hogy mit gondolok erről:
Annyira nem vagyok nagyképű, hogy ne tudjam azt, hogy amit itt összeállítottam, az nem kizárólag (sőt!) az én tudásom terméke (nem az én művem, ahogy a licensz fogalmaz). Pontosan ezért szeretném, hogy ha már nekem megengedték, hogy itt felhasználhassam ezeket az anyagokat, hát ugyanúgy, ahogy én (és nem máshogy) használhassa más. Attól viszont teljes mértékben elzárkózom, hogy az itt (is) található anyagokat valaki üzleti céllal használja fel. Így tehát ellátogattam a javasolt oldalra és elkészítettem a saját CC licenszemet, amit a továbbiakban ezen blog üzemeltetése során alkalmazni fogok:

Ezzel nem akartam senkit elriasztani! Olvasgasson mindenki bátran, másoljon be a saját oldalára bármit, tegye hozzá a saját tudományát, ossza meg másokkal, csak egyet ne tegyen: Ne üzleteljen vele! Mert az itt található "tudás" nem a mi tulajdonunk. Az ugyebár KÖZÖS tulajdon!
További jó böngészést kívánok mindenkinek!
Tisztelettel:
SP
2007.04.26. csütörtök 21:05
SPétör
Itt a jelenlegi változat (ami még mindig nem enged ki a netre):
#!/bin/sh
# Home standalone gép.
# A lánc kiürítése.
iptables -F
###############
# Alap policy #
###############
# Mindent tiltunk, amit külön nem engedélyezünk.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
# FORWARD most nem kell, de lehetőségként itt hagyjuk.
#iptables -P FORWARD DROP
###################
# INPUT szabályok #
###################
# loopback engedélyezése
iptables -A INPUT -i lo -j ACCEPT
# Engedélyezzük befelé, ami tőlünk származik.
iptables -A INPUT -i eth0 -m state --state ESTABLISHED, RELATED -j ACCEPT
# Invalid sync bites csomagok kiszórása.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# ssh engedélyezése - majd ha kell. Most még nem kell.
#iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# A hamis IP címeket kiszűrjük.
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
# Kiegészítés paranoidoknak (by mavo)
iptables -A INPUT -i eth0 -s 255.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP
# Pingelés tiltása.
iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
####################
# OUTPUT szabályok #
####################
# A loopback-en engedélyezzük a forgalmat.
iptables -A OUTPUT -o lo -j ACCEPT
# Egy kis magyarázat a következő sorokhoz, hogy tudjam, melyik port mi.
# 20 port - FTP
# 21 port - FTP
# 22 port - SSH
# 25 port - SMTP
# 53 port - DNS
# 80 port - HTTP
# 110 port - POP
# 443 port - HTTPS
# 465 port - SMTPS (Gmail)
# 995 port - POPS (Gmail)
# 1863 port - GAIM (az MSN-hez)
# 36013 port - SKYPE
iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 20,21,22,25,53,80,110,443,465,995,1863,36013 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m multiport --dports 20,21,22,25,53,443 -j ACCEPT
# A kifelé menő ping-re szükség lehet.
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
A szkript indítása:
root:~# /usr/sbin/my_firewall
iptables v1.3.5: Bad state `'
Try `iptables -h' or 'iptables --help' for more information.
Az iptables lista:
root:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP all -- 192.168.0.0/16 anywhere
DROP all -- 172.16.0.0/12 anywhere
DROP all -- 10.0.0.0/8 anywhere
DROP all -- 255.0.0.0/8 anywhere
DROP all -- 0.0.0.0/8 anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,http,pop3,https,
smtps,pop3s,msnp,36013 state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,https state NEW,ESTABLISHED
A ping-re meg ezt mondja:
root:~# ping -c 1 217.20.131.2
PING 217.20.131.2 (217.20.131.2) 56(84) bytes of data.
--- 217.20.131.2 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
SP
2007.04.26. csütörtök 16:12
SPétör
Nem akarom az eredeti
bejegyzést Kínáig írni, ezért itt egy új, az eddig megtudottakkal:
Először is idézet az iptables man-ból:
Interfész meghatározása
Az "-i" (vagy "--in-interface") és az "-o" (vagy "--out-interface") kapcsolók egy interfész nevével való egyezést határoznak meg. Az interfész a fizikai eszköz, melyen keresztül a csomag bejön ("-i") vagy kimegy ("-o"). "Fent" levő interfész megtekintésére az ifconfig parancs használható ("fent" levőnek a pillanatnyilag működő interfészt tekintjük).
Az INPUT láncra érkező csomagoknak nincs kimeneti interfészük ("-o"), ezért az INPUT láncon ilyen szabály semmilyen csomagra nem fog illeszkedni. És hasonlóképp, az OUTPUT láncon kimenő csomagok bemeneti interfésszel nem rendelkeznek ("-i"), ezért ezen a láncon az "-i" kapcsolókkal meghatározott szabályokra nem fog illeszkedni csomag.
Tehát az INPUT láncban -i eth0, az OUTPUT láncban -o eth0 a helyes!
Volt két gépelési hiba (vesszők rossz helyen), ezeket javítottam.
A javított firewall szkriptet bemásoltam, futtathatóvá tettem... stb.
Utána gondoltam kitörlöm az előző cuccokat:
root:~# iptables -X
root:~# iptables -Z
root:~# iptables -F
Újra futtattam a szkriptet terminalból:
root:~# /usr/sbin/my_firewall
iptables v1.3.5: Bad state `'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ESTABLISHED,RELATED'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `NEW,ESTABLISHED,RELATED'
Try `iptables -h' or 'iptables --help' for more information.
Szóval valami nem tetszik neki a NEW,ESTABLISHED,RELATED argumentummal, de mi?
Megnéztem, hogy mit listáz ki az iptables -L:
root:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP all -- 192.168.0.0/16 anywhere
DROP all -- 172.16.0.0/12 anywhere
DROP all -- 10.0.0.0/8 anywhere
DROP all -- 255.0.0.0/8 anywhere
DROP all -- 0.0.0.0/8 anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,http,pop3,https,
smtps,pop3s,msnp,36013 state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere multiport dports ftp-data,ftp,ssh,smtp,domain,https state NEW,ESTABLISHED
És persze nem enged ki a netre.

Valami ezzel az ESTABLISHED... stb résszel nem stimmel, szóval most irány arra.
Kezd tetszeni ez a "csata". Majd a végén eldől, hogy ki nyer! --> ÉN
SP
2007.04.26. csütörtök 14:40
SPétör
A feladat látszólag egyszerű. Simán írjuk be a menü tetszőleges (nekem az utolsó) sorába, hogy shutdown.
Gondoltam én...

Persze, hogy nem ment. Ezért aztán megnéztem terminálban, mit mond a shutdown parancsra.
Azt modta, hogy root-nak kell lennem, hogy ezt végrehajtsa.
Pont ezt akartam elkerülni, vagyis user-ként akartam leállítani a gépet (mint, ahogy azt pl. Gnome alatt teszi).
Gondoltam egy nagyot és root-ként beállítottam az /sbin/shutdown-ra a SUID-t.
Én ezt jó Windows-os módszerrel a Krusader (root-ként) jobb egér megoldással csináltam.
Újra terminál:
speter:~$ shutdown
Usage: shutdown [-akrhHPfnc] [-t secs] time [warning message]
-a: use /etc/shutdown.allow
-k: don't really shutdown, only warn.
-r: reboot after shutdown.
-h: halt after shutdown.
-P: halt action is to turn off power.
-H: halt action is to just halt.
-f: do a 'fast' reboot (skip fsck).
-F: Force fsck on reboot.
-n: do not go through "init" but go down real fast.
-c: cancel a running shutdown.
-t secs: delay between warning and kill signal.
** the "time" argument is mandatory! (try "now") **
...akkor tegyük hozzá, ami kell:
speter:~$ shutdown -h
vagy újraindításhoz ezt:
speter:~$ shutdown -r
Működik.Akkor ezt most beírjuk a Fluxbox menübe (~/.fluxbox/menu):
[exec] (Újraindítás) {shutdown -r}
[exec] (Kikapcsolás) {shutdown -h}
Jó is lenne, de...!
Nem tetszik ez a leállítás. Mintha kihúznám a dugót, vagy reset-elnék (majdnem). Nem látom, hogy szépen kifűzne minden futó folyamatot, ahogy egyébként a GDM-ből leállítva teszi.
Valami más kell nekem, de mi?
SP
2007. április 26. 22.40
Kiegészítés a témához:
[exec] (Újraindítás) {/sbin/init 6}
[exec] (Kikapcsolás) {/sbin/init 0}
Persze itt is kell a SUID az init-re.
(Egy dolgot továbbra sem látok... azt a szép kikapcsolási folyamatot, amolyan igazi linux módra.)
SP
Utolsó kommentek