Hacking WL-500gP Part 1
Ну, вот я и добрался до своего ненаглядного рутера WL500gP. За последние пару дней на плечи ему свалилось немало:
- SSH
- 4 Gb Flash
- Установка пакетов
- syslog-ng
- Создание пользователей
- VSFTPD
- Samba 3
- Cron
- Firewall
Все это поверх прошивки от Олега. Рекомендую глянуть на инструкцию по установке. Итак, по порядку.
Подготовка
Возможность управлять загрузкой рутера по-сути одна - файлы /usr/local/sbin/post-*
, которые выполняются
в таком порядке:
- post-firewall
Выполняется сразу после инициализации сетевых устройств. Скрипту система передает параметры - WAN-интерфейс, WAN-адрес, Bridge-интерфейс, Bridge-адрес:
/usr/local/sbin/post-firewall vlan1 wan.ip.ad.dr br0 lan.ip.ad.dr
- post-boot
Параметрами не интересовался.
- pre-mount
Параметрами не интересовался. Выполняется только, если есть что монтировать.
- post-mount
Параметрами не интересовался. Выполняется только, если есть что монтировать.
- pre-shutdown (при перегрузке рутера)
Параметрами не интересовался.
Я создал файл /usr/local/sbin/post-include
с полезными переменными такого содержания:
#!/bin/sh self=`basename $0` log="/usr/bin/logger -t $self"
Изначально каждый файл /usr/local/sbin/post-*
у меня выглядит так:
#!/bin/sh . "`dirname $0`/post-include" $log 'Begin' # initialization here $log 'End'
А /usr/local/sbin/pre-shutdown
так:
#!/bin/sh . "`dirname $0`/post-include" [ -x /opt/bin/logger ] && log="/opt/bin/logger -p Syslog.Alert" $log 'Shutting down system.' # BEGIN services termination if [ `pidof vsftpd` -ne "" ]; then $log 'Terminating vsftpd' /bin/kill `pidof vsftpd` fi if [ `pidof smbd` -ne "" ]; then $log 'Terminating smbd' /bin/kill `pidof smbd` fi if [ `pidof nmbd` -ne "" ]; then $log 'Terminating nmbd' /bin/kill `pidof nmbd` fi if [ -f /var/run/lighttpd.pid ]; then $log 'Terminating lighhttpd' /bin/kill `cat /var/run/lighttpd.pid` fi if [ -f /opt/var/run/cron.pid ]; then $log 'Terminating cron' /bin/kill `cat /opt/var/run/cron.pid` fi if [ -f /var/run/syslog-ng.pid ]; then $log 'Terminating syslog-ng' /bin/kill `cat /var/run/syslog-ng.pid` fi if [ -f /var/run/dropbear.pid ]; then $log 'Terminating dropbear' /bin/kill `cat /var/run/dropbear.pid` fi # END services termination if [ -d /tmp/harddisk/opt ]; then $log 'Unmounting FlashFS' /bin/umount /tmp/harddisk /bin/umount /opt fi
pre-shutdown
аккуранто останавливает все службы и в конце размонтирует файловую
систему.
Для сохранения файлов не с флешки в ПЗУ устройства необходимо выполнить следующую команду:
flashfs save && flashfs commit && flashfs enable
. Я постоянно забывал сохраняться и после
перегрузки набивал изменения снова. Для сохранения файлов в других каталогах необходимо добавить пути в файл
/usr/local/.files
.
Исполняемым файлам не забывать делать chmod +x file
.
SSH
Выполнить:
mkdir -p /usr/local/etc/dropbear dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
Для автоматического запуска SSH сервера (dropbear) нужно добавить в файл /usr/local/sbin/post-boot
следующие строчки:
$log 'Starting dropbear SSH server' /usr/sbin/dropbear 1>/dev/null 2>&1
В конце:
flashfs save && flashfs commit && flashfs enable
Также необходимо добавить парочку правил в файрвол. Для этого правим /usr/local/sbin/post-firewall
:
$log 'SSH rules' iptables -I INPUT 5 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "SSH Brute force attack: " --log-level 6 iptables -I INPUT 6 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j ACCEPT iptables -I INPUT 7 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -j DROP
4 Gb Flash
Флешка нужна для установки дополнительного софта, ну, и для хранения файлов, конечно. Также устройство может загружаться с флешки! Но мне это пока не нужно.
Для пробы имелась 512 Mb флешка, на которую ядро сильно ругалось. Пришлось ставить 4 Gb Pretec. Поскольку из самого устройства разбить на разделы не получилось, я использовал Acronis Disk Director 10. Получилось два раздела - Linux swap на 100 с копейками мегабайт и Linux ext3 - остальное.
Через веб морду я отключил встроенный FTP и Samba. В результате не загружались необходимые модули ядра - scsi_mod,
sd_mod, usb-storage (как последствие - не выполнялись скрипты pre-mount
и post-mount
). Их
нужно загрузить самостоятельно в /usr/local/sbin/post-boot
:
/sbin/insmod scsi_mod /sbin/insmod sd_mod /sbin/insmod usb-storage
Что в результате:
- Ядро пишет:
/dev/scsi/host0/bus0/target0/lun0: p2 < p5 p6 >
p5 (
/dev/discs/disc0/part5
) - swap, p6 (/dev/discs/disc0/part6
) - ext3 /dev/discs/disc0/part6
смонтирован как/tmp/harddisk
- На ext3 создана простейшая структура Unix-каталогов
Установка пакетов
В системе имеется простенький менеджер пакетов - ipkg. По умолчанию весь софт ставится в /opt
, поэтому
нужно, чтобы в /opt
был смонтирован корень ext3. Для этого изменяем
/usr/local/sbin/post-mount
(вставляем в самое начало после $log 'Begin'
) :
[ -d /tmp/harddisk/opt ] && $log 'Mounting /opt' && /bin/mount -o bind,sync,noatime,rw /tmp/harddisk /opt
Выполнить (все это описано здесь):
ipkg.sh update ipkg.sh install ipkg-opt ipkg update echo "/etc/ipkg.conf" >> /usr/local/.files flashfs save && flashfs commit && flashfs enable
Ставим необходимый софт:
ipkg install adduser ipkg install bash ipkg install coreutils ipkg install findutils ipkg install grep ipkg install less ipkg install mc ipkg install screen ipkg install util-linux ipkg install vim ipkg install which ipkg install wget-ssl
syslog-ng
syslogd я сразу меняю на syslog-ng. Ставим:
ipkg install syslog-ng cd /opt/etc ln -s syslog-ng/syslog-ng.conf syslog-ng.conf
Добавляем в /usr/local/sbin/post-mount
:
if [ -x /opt/sbin/syslog-ng ]; then $log 'Replacing syslogd' [ -x /opt/bin/unlink ] && /opt/bin/unlink /tmp/syslog.log && /opt/bin/ln -s /opt/var/log/all.log /tmp/syslog.log kill `/bin/pidof syslogd` fi
Это, естественно, должно выполнятся до запуска syslog-ng.
\
Не забываем также про остановку системы, файл /usr/local/sbin/pre-shutdown
(как можно позже, но перед
размонтированием):
if [ -f /var/run/syslog-ng.pid ]; then $log 'Terminating syslog-ng' /bin/kill `cat /var/run/syslog-ng.pid` fi
rc.unslung и init.d
Многие пакеты закидывают скрипт запуска службы в /opt/etc/init.d/
с названием SXYService
.
Нужен механизм, который будет выполнять их в правильном порядке. Создаем исполняемый файл
/opt/etc/init.d/rc.unslung
с таким содержимым:
#!/bin/sh # Start all init scripts in /opt/etc/init.d # executing them in numerical order. # for i in /opt/etc/init.d/S??* ;do [ ! -f "$i" ] && continue [ ! -x "$i" ] && continue case "$i" in *.sh) # Source shell script for speed. ( trap - INT QUIT TSTP set start . $i ) ;; *) # No sh extension, so fork subprocess. $i start ;; esac done
Добавляем вызов /opt/etc/init.d/rc.unslung
в конец /usr/local/sbin/post-mount
:
[ -x /opt/etc/init.d/rc.unslung ] && $log 'Running rc.unslung' && /opt/etc/init.d/rc.unslung | $log
Запуск syslog-ng из init.d
Теперь происходит автоматически благодаря /opt/etc/init.d/S01syslog-ng
.
Настройка syslog-ng
Мой syslog-ng помимо файлов логирует еще и на рабочую машину, где стоит Kiwi Syslog в качестве приемника. Просто
привожу конфиг /opt/etc/syslog-ng.conf
:
# # Syslog-ng example configuration for for NSLU2 Unslung 3.x # # Copyright (c) 1999 anonymous # Copyright (c) 1999 Balazs Scheidler # $Id: syslog-ng.conf 5159 2007-01-12 20:37:44Z fcarolo $ # # Syslog-ng configuration file, compatible with default Debian syslogd # installation. # options { long_hostnames(off); sync(0); stats(0); create_dirs(yes); time_reopen(10); log_fifo_size(2000); }; source src { pipe("/proc/kmsg" log_prefix("kernel: ") ); unix-stream("/dev/log"); internal(); }; #source net { udp(); }; destination authlog { file("/opt/var/log/auth.log"); }; destination syslog { file("/opt/var/log/syslog"); }; destination cron { file("/opt/var/log/cron.log"); }; destination daemon { file("/opt/var/log/daemon.log"); }; destination kern { file("/opt/var/log/kern.log"); }; destination lpr { file("/opt/var/log/lpr.log"); }; destination user { file("/opt/var/log/user.log"); }; destination uucp { file("/opt/var/log/uucp.log"); }; destination ppp { file("/opt/var/log/ppp.log"); }; destination mail { file("/opt/var/log/mail.log"); }; destination mailinfo { file("/opt/var/log/mail.info"); }; destination mailwarn { file("/opt/var/log/mail.warn"); }; destination mailerr { file("/opt/var/log/mail.err"); }; destination newscrit { file("/opt/var/log/news/news.crit"); }; destination newserr { file("/opt/var/log/news/news.err"); }; destination newsnotice { file("/opt/var/log/news/news.notice"); }; destination debug { file("/opt/var/log/debug"); }; destination messages { file("/opt/var/log/messages"); }; destination udp_machinename { udp( your.ip.add.rr port(514) template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); }; destination alllog { file("/opt/var/log/all_$R_YEAR-$R_MONTH-$R_DAY.log" template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); }; filter f_auth { facility(auth); }; filter f_authpriv { facility(auth, authpriv); }; filter f_syslog { not facility(authpriv, mail); }; filter f_cron { facility(cron); }; filter f_daemon { facility(daemon); }; filter f_kern { facility(kern); }; filter f_lpr { facility(lpr); }; filter f_mail { facility(mail); }; filter f_user { facility(user); }; filter f_uucp { facility(cron); }; filter f_ppp { facility(local2); }; filter f_news { facility(news); }; filter f_debug { not facility(auth, authpriv, news, mail); }; filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news); }; filter f_emergency { level(emerg); }; filter f_info { level(info); }; filter f_notice { level(notice); }; filter f_warn { level(warn); }; filter f_crit { level(crit); }; filter f_err { level(err); }; log { source(src); filter(f_authpriv); destination(authlog); }; log { source(src); filter(f_syslog); destination(syslog); }; log { source(src); filter(f_cron); destination(cron); }; log { source(src); filter(f_daemon); destination(daemon); }; log { source(src); filter(f_kern); destination(kern); }; log { source(src); filter(f_lpr); destination(lpr); }; log { source(src); filter(f_mail); destination(mail); }; log { source(src); filter(f_user); destination(user); }; log { source(src); filter(f_uucp); destination(uucp); }; log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); }; log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); }; log { source(src); filter(f_mail); filter(f_err); destination(mailerr); }; log { source(src); filter(f_news); filter(f_crit); destination(newscrit); }; log { source(src); filter(f_news); filter(f_err); destination(newserr); }; log { source(src); filter(f_news); filter(f_notice); destination(newsnotice); }; log { source(src); filter(f_debug); destination(debug); }; log { source(src); filter(f_messages); destination(messages); }; log { source(src); filter(f_ppp); destination(ppp); }; log { source(src); destination(udp_machinename); }; log { source(src); destination(alllog); };
Создание пользователей
Добавляю командой adduser
(можно и напрямую править /etc/passwd
и
/etc/group
). Не забываю сделать
echo "/etc/passwd" >> /usr/local/.files echo "/etc/group" >> /usr/local/.files flashfs save && flashfs commit && flashfs enable
Домашние папки создаю в /opt/home
.
16 коммент.:
А можно ли к установленым уже пакетам добавить пакет из другого репозитария.
Дело в том, что пробовал ipkg install http://flyrouter.net/downloads/software/flyrouter/packages/sredird_2.2.2-1_mipsel.ipk
железяка меня послала.
В родном репозитарии sredird просто не существует. Как быть ?
Нужно сначала его wget, а потом ipkg install file.ipk
А каким образом можно сделать boot scripts на родной асусной прошивке? Вариант с переходом на олеговскую не предолагать :)
Я прошуршал nvram, там нет опции что бы указать скрипт файл что бы запускать какие нить скрипты во время загрузки.
Также, в /tmp/ есть конфиг файлы, но там для фаервола только и для NAT ...
Just want to say your article is as astounding.
The clarity for your put up is simply excellent and that i could think you are a professional on this subject.
Fine with your permission let me to grab your feed to stay up to date with impending post.
Thanks one million and please continue the enjoyable work.
Also visit my homepage : GFI Norte
Тhanκs for sharing yοuг thoughts.
I tгuly apρreсіate your efforts аnԁ I ωill
be waіting for your nеxt pοst thаnκѕ oncе again.
my wеblog: www.Anna455.it
Dеfinіtelу believе that whiсh
you ѕtated. Your favorite reaѕon appeагed tο be
on the internet the еasіеѕt thing tο bе awаге of.
Ι say to you, Ι definitelу get annοyеd while ρeoρlе consiԁer ωorrіes
thаt they just ԁo not knοω about.
Υou manаged tο hit thе nail
upon the tоp аnd also ԁefined οut the whole thing ωithοut haνing sіde-effects , people cοuld take a
ѕignal. Wіll ρrobably be back to get more.
Thаnkѕ
My ωeb site - free cccam
When someοne writeѕ an аrticle he/she retains thе
idea of a useг in hiѕ/her mind that how а user can be aware
of it. Thus that's why this paragraph is perfect. Thanks!
Also visit my homepage ... Www.bu.ufsc.br
my page > free card sharing server cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing|
Great aгtiсle! We аre linking to this great аrticlе on our webѕite.
Keep uρ the good writing.
Check out my wеb page cccam server cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing|
Heyа і'm for the first time here. I came across this board and I find It really useful & it helped me out a lot. I hope to give something back and aid others like you helped me.
Feel free to surf to my website cccam for test
WOW јuѕt ωhаt І was searching for.
Came here bу ѕearсhing foг ԁreаmbox 800 ѕе ссcam servеr
Cheсk out mу websіte :: dreambox 7025
Hеya! I rеalize this is sort of off-toρiс hοweѵer
І had to aѕk. Does builԁing a well-eѕtаblished websіte like yours require a large amount οf
work? ӏ am brand new to writing a blog however I do
wгite in my journal eνerу day.
I'd like to start a blog so I can share my own experience and views online. Please let me know if you have any recommendations or tips for brand new aspiring blog owners. Appreciate it!
Feel free to surf to my page ... test line cccam cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing|
Hellο everуonе, іt's my first visit at this web page, and article is in fact fruitful designed for me, keep up posting these types of content.
Feel free to visit my web site - cardsharing canalsat cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing| cccam server|server cardsharing|skybox f3 cardsharing|cccam|cardsharing anbieter|cccam pay server|cccam server premium|dreambox|server dreambox|buy cardsharing|cardsharing|cardsharing server|dreambox 800|free card sharing server|satellite cardsharing kings|test line cccam|card sharing|card sharing servers|cardsharing canalsat|cccam line|cccam test line|free cccam server|sat keys|satellite cardsharing|
Do you hаve аny vіdeο of that?
I'd want to find out more details.
Feel free to visit my weblog: http://www.Changhongshaiwang.Com/Shownews.asp?id=177
Any Fascinating Society of 3 dimensional Movies
My web page http://www.10projectors.com/
Hey very interesting blog!
my website: adult video games ()
Things Cautious Aware Regarding In Deciding upon And Getting Projector Light sources
Have a look at my web page; eurocasino
Отправить комментарий