ASUS: Porovnání verzí
Řádek 1: | Řádek 1: | ||
== Skriptiky/Watchdogy == | == Skriptiky/Watchdogy == | ||
− | + | === Watchdog pro klienta === | |
#!/bin/sh | #!/bin/sh | ||
Řádek 9: | Řádek 9: | ||
fi | fi | ||
Je potřeba ho pravidelně spouštět. Kontroluje jestli je ASUS jako klient správně asociován na AP. | Je potřeba ho pravidelně spouštět. Kontroluje jestli je ASUS jako klient správně asociován na AP. | ||
+ | |||
+ | === Maškaráda === | ||
+ | Pár skriptů, které usnadní maškarádování některých IP do internetu - správce může snadno dočasně povolit internet některému připojenci. | ||
+ | |||
+ | * /usr/local/sbin/acc_enable | ||
+ | #!/bin/sh | ||
+ | if [ "$1" != "" ]; then | ||
+ | iptables -t nat -A POSTROUTING -o eth2 -d 10.107.4.100 -s $1 -j MASQUERADE | ||
+ | iptables -t nat -A POSTROUTING -o eth2 -d ! 10.107.0.0/16 -s $1 -j MASQUERADE | ||
+ | echo $1 byl povolen přístup do internetu. | ||
+ | else | ||
+ | echo "Použití: enable IP.AD.RE.SA" | ||
+ | fi | ||
+ | |||
+ | * /usr/local/sbin/acc_disable | ||
+ | #!/bin/sh | ||
+ | if [ "$1" != "" ]; then | ||
+ | iptables -t nat -D POSTROUTING -o eth2 -d ! 10.107.0.0/16 -s $1 -j MASQUERADE | ||
+ | iptables -t nat -D POSTROUTING -o eth2 -d 10.107.4.100 -s $1 -j MASQUERADE | ||
+ | echo $1 byl zakázán přístup do internetu. | ||
+ | else | ||
+ | echo "Použití: disable IP.AD.RE.SA" | ||
+ | fi | ||
+ | |||
+ | * /usr/local/sbin/acc_list | ||
+ | #!/bin/sh | ||
+ | iptables -t nat -L POSTROUTING | ||
+ | |||
+ | === Databáze === | ||
+ | Možná je tento nadpis trochu nadnesený, ale v podstatě jde o jede soubor, ve kterém je shromaždiště všech potřebných údajů pro generování konfiguráků. Vychází z ní několik mých skriptů. | ||
+ | |||
+ | databáze je soubor uložený v /usr/local/root/db | ||
+ | má následující formát: | ||
+ | xx:xx:xx:xx:xx:xx 10.107.3.66 0 013 Lada Pecho \ | ||
+ | xx:xx:xx:xx:xx:xx 10.107.3.67 0 013 TOM Pecho \ | ||
+ | atd... | ||
+ | MAC adresa, IP adresa, maškarádovat, ID, DNS, pravé jméno, lomítko | ||
+ | |||
+ | můžeme vytvořit konfiguráky pro DHCP server, DNS server, rychlé dočasné puštění internetu trubkou správce, změna MAC adres... | ||
+ | |||
+ | ==== dbparse ==== | ||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | db=/usr/local/root/db | ||
+ | tmp=/tmp/tmp | ||
+ | accscript=/usr/local/sbin/acc_script | ||
+ | hosts=/etc/hosts | ||
+ | ethers=/etc/ethers | ||
+ | # OpenWRT | ||
+ | hostsprev=/etc/hosts_tmp | ||
+ | ethersprev=/etc/ethers_tmp | ||
+ | |||
+ | # Oleguv | ||
+ | #hostsprev=/usr/local/etc/hosts_tmp | ||
+ | #ethersprev=/usr/local/etc/ethers_tmp | ||
+ | #hosts2=/usr/local/etc/hosts | ||
+ | #ethers2=/usr/local/etc/ethers | ||
+ | # | ||
+ | |||
+ | echo "#!/bin/sh" > $accscript | ||
+ | echo "iptables -t nat -F POSTROUTING" >> $accscript | ||
+ | |||
+ | chmod +x $accscript | ||
+ | rm $hosts > /dev/null | ||
+ | rm $ethers > /dev/null | ||
+ | cp $hostsprev $hosts > /dev/null | ||
+ | cp $ethersprev $ethers > /dev/null | ||
+ | |||
+ | read db < $db | ||
+ | echo $db > $tmp | ||
+ | |||
+ | while read MAC IP ACC ID DNS NAME rest < $tmp && [ "$MAC" != "" ]; do | ||
+ | echo $MAC $IP >> $ethers | ||
+ | echo $IP $DNS.JNet.hkfree.org >> $hosts | ||
+ | if [ "$ACC" -eq "1" ]; then | ||
+ | echo "/usr/local/sbin/acc_enable $IP" >> $accscript | ||
+ | fi | ||
+ | echo $rest > $tmp; | ||
+ | done | ||
+ | rm $tmp | ||
+ | # Oleguv | ||
+ | # cp $ethers $ethers2 | ||
+ | # cp $hosts $hosts2 | ||
+ | /usr/local/sbin/acc_script | ||
+ | killall -HUP dnsmasq | ||
+ | Vygeneruje konfiguráky pro dnsmasq. Pro Olegův firmware odstraňte komentáře. Aby se v Olegově firmwaru změny projevily i po rebootu, je potřeba do post-boot přidat: | ||
+ | # backup the original content of /etc | ||
+ | mkdir /etc/bak | ||
+ | cp /etc/* /etc/bak | ||
+ | |||
+ | # copy customized /etc and parse db | ||
+ | cp /usr/local/etc/* /etc | ||
+ | # /usr/local/sbin/dbparse boot | ||
+ | |||
+ | # restart DHCP & DNS | ||
+ | killall dnsmasq | ||
+ | /usr/sbin/dnsmasq -l /etc/linuxigd/dnsmasq.log | ||
+ | V OpenWRT není třeba dělat nic! | ||
+ | |||
+ | Aby se zaplo i maškarádování, tak dejte do | ||
+ | post-firewall pro Oleguv firmware, nebo | ||
+ | |||
+ | /etc/init.d/S44post-firewall | ||
+ | # process masquerading script | ||
+ | /usr/local/sbin/acc_script | ||
+ | ==== cgi-bin/mac ==== | ||
+ | Tento skript umožní uživatelům si změnit svou MAC adresu. Je důležité, aby s cizí MAC dostali IP, ze které mohou kontaktovat web server a spustit skript. Ten zkontroluje, jestli je jejich MAC neznámá a jestli mají název počítače nastaven tak, jak mají - to je hlavní identifikátor. tenhle skript neřeší moc bezpečnost, ale spíše pohodlí uživatelů. | ||
+ | |||
+ | |||
+ | Uložte ho do složky cgi-bin, kde máte web server. V ASUSu ho nahodíte příkazem httpd nebo busybox_httpd. | ||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | maclog=/tmp/mac.log | ||
+ | tmp=/tmp/tmpmac | ||
+ | # OpenWRT | ||
+ | log=/tmp/dnsmasq.leases | ||
+ | # Oleg | ||
+ | #log=/etc/linuxigd/dnsmasq.log | ||
+ | db=/usr/local/root/db | ||
+ | ethers=/etc/ethers | ||
+ | dbbak=/tmp/dbbak | ||
+ | |||
+ | echo "Content-type: text/plain" | ||
+ | echo "" | ||
+ | |||
+ | if [ "$REMOTE_ADDR" = "" ]; then | ||
+ | echo Spoustej POUZE pres www rozhrani !!!! | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | grep $REMOTE_ADDR $log > $tmp | ||
+ | read TIME MAC IP DNS BADMAC < $tmp | ||
+ | rm $tmp | ||
+ | |||
+ | if [ "$MAC" = "" ]; then | ||
+ | echo "Vasi aktualni MAC se nepodarilo zjistit, pouzijte DHCP server!" | ||
+ | echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR unknown MAC >> $maclog | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | if [ "$DNS" = "*" ]; then | ||
+ | SEARCH=$MAC | ||
+ | else | ||
+ | SEARCH=$DNS | ||
+ | fi | ||
+ | |||
+ | grep -i $SEARCH $db > $tmp | ||
+ | read DBMAC DBIP ACC ID DBDNS DBNAME < $tmp | ||
+ | rm $tmp | ||
+ | |||
+ | if [ "$MAC" = "$DBMAC" ]; then | ||
+ | echo "Vase MAC adresa $DBMAC je jiz v systemu zanesena." | ||
+ | echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS already in db >> $maclog | ||
+ | exit | ||
+ | else | ||
+ | # echo "Vase MAC byla zjistena..." | ||
+ | NOMAC=1 | ||
+ | fi | ||
+ | |||
+ | if [ "$DNS" = "$DBDNS" ]; then | ||
+ | # echo "Vase PC bylo identifikovano podle jmena." | ||
+ | IDOK=1 | ||
+ | else | ||
+ | echo "Vas pocitac nelze identifikovat! (Mate spravne nastaveny nazev pocitace?)" | ||
+ | echo "Nastaveni najdete v sekci \"Pro nove uzivatele\" -> \"Nastaveni pocitace\"" | ||
+ | echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS name unknown >> $maclog | ||
+ | fi | ||
+ | |||
+ | if [ "$NOMAC" = "1" ] && [ "$IDOK" = "1" ]; then | ||
+ | sed "s/$DBMAC $DBIP/$MAC $DBIP/" $db > $tmp | ||
+ | mkdir -p $dbbak | ||
+ | cp $db $dbbak/$(date +%y.%m.%d_%H:%M:%S) | ||
+ | cp $tmp $db | ||
+ | rm $tmp | ||
+ | |||
+ | sed "s/$DBMAC $DBIP/$MAC $DBIP/" $ethers > $tmp | ||
+ | cp $tmp $ethers | ||
+ | rm $tmp | ||
+ | |||
+ | killall -HUP dnsmasq | ||
+ | echo "Vase MAC adresa sitove karty byla uspesne zanesena do databaze." | ||
+ | echo "$DBMAC -> $MAC" | ||
+ | echo "Zmena se projevi do 20 minut." | ||
+ | echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS success, old mac was $DBMAC >> $maclog | ||
+ | |||
+ | fi | ||
== Oleguv firmware == | == Oleguv firmware == |
Verze z 11. 12. 2004, 14:14
Obsah
Skriptiky/Watchdogy
Watchdog pro klienta
#!/bin/sh if ! $(wl bssid > /dev/null 2>&1); then wl ssid $(nvram get wl0_ssid) fi
Je potřeba ho pravidelně spouštět. Kontroluje jestli je ASUS jako klient správně asociován na AP.
Maškaráda
Pár skriptů, které usnadní maškarádování některých IP do internetu - správce může snadno dočasně povolit internet některému připojenci.
- /usr/local/sbin/acc_enable
#!/bin/sh if [ "$1" != "" ]; then iptables -t nat -A POSTROUTING -o eth2 -d 10.107.4.100 -s $1 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth2 -d ! 10.107.0.0/16 -s $1 -j MASQUERADE echo $1 byl povolen přístup do internetu. else echo "Použití: enable IP.AD.RE.SA" fi
- /usr/local/sbin/acc_disable
#!/bin/sh if [ "$1" != "" ]; then iptables -t nat -D POSTROUTING -o eth2 -d ! 10.107.0.0/16 -s $1 -j MASQUERADE iptables -t nat -D POSTROUTING -o eth2 -d 10.107.4.100 -s $1 -j MASQUERADE echo $1 byl zakázán přístup do internetu. else echo "Použití: disable IP.AD.RE.SA" fi
- /usr/local/sbin/acc_list
#!/bin/sh iptables -t nat -L POSTROUTING
Databáze
Možná je tento nadpis trochu nadnesený, ale v podstatě jde o jede soubor, ve kterém je shromaždiště všech potřebných údajů pro generování konfiguráků. Vychází z ní několik mých skriptů.
databáze je soubor uložený v /usr/local/root/db má následující formát:
xx:xx:xx:xx:xx:xx 10.107.3.66 0 013 Lada Pecho \ xx:xx:xx:xx:xx:xx 10.107.3.67 0 013 TOM Pecho \ atd...
MAC adresa, IP adresa, maškarádovat, ID, DNS, pravé jméno, lomítko
můžeme vytvořit konfiguráky pro DHCP server, DNS server, rychlé dočasné puštění internetu trubkou správce, změna MAC adres...
dbparse
#!/bin/sh db=/usr/local/root/db tmp=/tmp/tmp accscript=/usr/local/sbin/acc_script hosts=/etc/hosts ethers=/etc/ethers # OpenWRT hostsprev=/etc/hosts_tmp ethersprev=/etc/ethers_tmp # Oleguv #hostsprev=/usr/local/etc/hosts_tmp #ethersprev=/usr/local/etc/ethers_tmp #hosts2=/usr/local/etc/hosts #ethers2=/usr/local/etc/ethers # echo "#!/bin/sh" > $accscript echo "iptables -t nat -F POSTROUTING" >> $accscript chmod +x $accscript rm $hosts > /dev/null rm $ethers > /dev/null cp $hostsprev $hosts > /dev/null cp $ethersprev $ethers > /dev/null read db < $db echo $db > $tmp while read MAC IP ACC ID DNS NAME rest < $tmp && [ "$MAC" != "" ]; do echo $MAC $IP >> $ethers echo $IP $DNS.JNet.hkfree.org >> $hosts if [ "$ACC" -eq "1" ]; then echo "/usr/local/sbin/acc_enable $IP" >> $accscript fi echo $rest > $tmp; done rm $tmp # Oleguv # cp $ethers $ethers2 # cp $hosts $hosts2 /usr/local/sbin/acc_script killall -HUP dnsmasq
Vygeneruje konfiguráky pro dnsmasq. Pro Olegův firmware odstraňte komentáře. Aby se v Olegově firmwaru změny projevily i po rebootu, je potřeba do post-boot přidat:
# backup the original content of /etc mkdir /etc/bak cp /etc/* /etc/bak # copy customized /etc and parse db cp /usr/local/etc/* /etc # /usr/local/sbin/dbparse boot # restart DHCP & DNS killall dnsmasq /usr/sbin/dnsmasq -l /etc/linuxigd/dnsmasq.log
V OpenWRT není třeba dělat nic!
Aby se zaplo i maškarádování, tak dejte do post-firewall pro Oleguv firmware, nebo
/etc/init.d/S44post-firewall
# process masquerading script /usr/local/sbin/acc_script
cgi-bin/mac
Tento skript umožní uživatelům si změnit svou MAC adresu. Je důležité, aby s cizí MAC dostali IP, ze které mohou kontaktovat web server a spustit skript. Ten zkontroluje, jestli je jejich MAC neznámá a jestli mají název počítače nastaven tak, jak mají - to je hlavní identifikátor. tenhle skript neřeší moc bezpečnost, ale spíše pohodlí uživatelů.
Uložte ho do složky cgi-bin, kde máte web server. V ASUSu ho nahodíte příkazem httpd nebo busybox_httpd.
#!/bin/sh maclog=/tmp/mac.log tmp=/tmp/tmpmac # OpenWRT log=/tmp/dnsmasq.leases # Oleg #log=/etc/linuxigd/dnsmasq.log db=/usr/local/root/db ethers=/etc/ethers dbbak=/tmp/dbbak echo "Content-type: text/plain" echo "" if [ "$REMOTE_ADDR" = "" ]; then echo Spoustej POUZE pres www rozhrani !!!! exit fi grep $REMOTE_ADDR $log > $tmp read TIME MAC IP DNS BADMAC < $tmp rm $tmp if [ "$MAC" = "" ]; then echo "Vasi aktualni MAC se nepodarilo zjistit, pouzijte DHCP server!" echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR unknown MAC >> $maclog exit fi if [ "$DNS" = "*" ]; then SEARCH=$MAC else SEARCH=$DNS fi grep -i $SEARCH $db > $tmp read DBMAC DBIP ACC ID DBDNS DBNAME < $tmp rm $tmp if [ "$MAC" = "$DBMAC" ]; then echo "Vase MAC adresa $DBMAC je jiz v systemu zanesena." echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS already in db >> $maclog exit else # echo "Vase MAC byla zjistena..." NOMAC=1 fi if [ "$DNS" = "$DBDNS" ]; then # echo "Vase PC bylo identifikovano podle jmena." IDOK=1 else echo "Vas pocitac nelze identifikovat! (Mate spravne nastaveny nazev pocitace?)" echo "Nastaveni najdete v sekci \"Pro nove uzivatele\" -> \"Nastaveni pocitace\"" echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS name unknown >> $maclog fi if [ "$NOMAC" = "1" ] && [ "$IDOK" = "1" ]; then sed "s/$DBMAC $DBIP/$MAC $DBIP/" $db > $tmp mkdir -p $dbbak cp $db $dbbak/$(date +%y.%m.%d_%H:%M:%S) cp $tmp $db rm $tmp sed "s/$DBMAC $DBIP/$MAC $DBIP/" $ethers > $tmp cp $tmp $ethers rm $tmp killall -HUP dnsmasq echo "Vase MAC adresa sitove karty byla uspesne zanesena do databaze." echo "$DBMAC -> $MAC" echo "Zmena se projevi do 20 minut." echo $(date "+%d.%m.%y %H:%M:%S") $REMOTE_ADDR $MAC $DNS success, old mac was $DBMAC >> $maclog fi
Oleguv firmware
Pro základní nastavení použít web rozhraní.
Kam přidat vlastní nastavení:
/usr/local/sbin/post-boot /usr/local/sbin/post-firewall (inicializace iptables)
(u FW starších než 1.8.x.x je místo sbin init)
Pro pravidelné provádění skriptů, stačí do post-boot přidat
watch -n 60 /usr/local/sbin/skript
kde 60 je 60 sekund
OpenWrt
Pro základní nastavení použít telnet a příkaz setup. Heslo se mění příkazem passwd.
Kam přidat vlastní nastavení:
/etc/init.d/ vlastní skripty pojmenovat jako SXXNazev kde XX je cislo
Pro pravidelné spouštění skriptů slouží crontab
crontab -e
spustí vi editor, řadky mají tento formát:
* * * * * příkaz
kde místo hvězdiček mohou být i čísla oddělené čarkami, nebo rozsah čísel v pomlčkách. Pořadí čísel je minuta (0-59), hodina (0-23), den v měsíci (1-31), měsíc (1-12), den v týdnu (1-7)
Pozor! Čas je v OpenWRT posunutý o hodinu dozadu.
Samba
K čemu? Bude se chovat jako browse master a obsluhovat procházení sítí. Nikdy se pak nestane, že člověk s nahozeným firewallem shodí síť Microsoft.
V Olegově firmwaru stačí nadefinovat hostname, upravit správně konfigurační soubor /etc/smb.conf
Já používám tento:
[global] netbios name = nameserver workgroup = JNET guest account = nobody security = share browseable = yes guest ok = yes guest only = yes #log level = 1 max log size = 100 encrypt passwords = no dns proxy = no #wins support = yes #wins proxy = yes domain master = yes os level = 99 preferred master = yes
"netbios name" musí být stejné jako hostname. Pracovní skupinu si nastavte podle své situace.
V /etc/hosts musíte mít řádek
IP.AD.RE.SA nameserver
A pak stačí spustit nmbd. smbd je zbytečné, ale pokud tam je, může se použít.
nmbd -D -d 3 smbd -D
parametr -d 3 zapne vypisování logů do
/var/log/
Pro OpenWRT je nastavení obdobné, ale je potřeba sambu zkompilovat.
Pomoc!!! Napište sem jak se to zkompiluje pod OpenWRT. Vhodná malá verze samby je 1.9.17.p5 ale myslím, že i tak bude velká aby se vešla na jjfs systém. Každopádně je možné binárku uložit přes wget do RAM v /tmp/ a odtuč ji spouštět, nebo nahrát na USB flashku.
Pokud se to povede zkompilovat, může být binárka třeba na charonu a napíšu skript, který ji po rebootu ASUSe stáhne a spustí.