ASUS: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
Řádek 1: Řádek 1:
 
== Skriptiky/Watchdogy ==
 
== Skriptiky/Watchdogy ==
  
'''Watchdog pro klienta'''
+
=== 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

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í.