Bejutás a rou terembe

Előre jelzem, egyelőre elhamarkodott ennek a topic-nak az indítása, mert nem használtam ki minden általam ismert lehetőséget, így még csak a pulzusom és a vérnyomásom magasabb a szokásosnál. :)

Van egy TL-WR842N-v3 szappantartóm. OpenWrt/LEDE futkosott rajta eddig, s most is. Ehhez eddig ar71xx architectúra kellett, viszont a közelmúltban migráltak ath79-re, illetve 4.14-es-ről 4.19-es sorozatú kernelre.

A szokásos módon készítettem egy image-et saját csomagválogatással. Grafikus felület nincs, csak ssh, de azt is úgy csináltam meg, hogy a root ssh tiltva van, sima user-ként lehet, majd onnan su paranccsal, ha root shell kell.

Az új image-et sysupgrade-del tettem fel, újraindult a router, vélhetően 4.19.56-os kernellel. Van egy saját scriptem, amelyik színezi a login bannert, ez még lefut. Ezt követően kellene shell promptot kapnom, ami viszont már nem történik meg. Értelemszerűen így root shell-t sem tudok szerezni. A hálózat működik, csak nem férek hozzá a routerhez.

A Midnight Commander shell linkjén keresztül látom a filerendszert sima user-ként, de módosítani nincs jogom, ahhoz root jog kellene, de az le van tiltva ssh-n keresztül.

Most némi aggodalommal nézek a jövőbe. Ugye, a következő frissítéshez be kellene lépnem. Ahhoz is, hogy felcsatoljam a beledugott pendrive filerendszerét. Vagy, ha módosítani szeretném a konfigurációt.

Mivel saját image, az a sanda gyanúm, hogy a factory default visszatöltése is azt eredményezi majd, hogy nem tudok root-ként ssh-zni. De azzal sem megyek semmire, ha tudok, és nem kapok shell promptot.

Sóhaj...

Hozzászólások

Köszönöm, rá fogok pillantani. Szerencsére van hálózatom, csak roppant frusztráló, hogy kizártam magam. Nyilván a pendrive-om is elérhető, ha kihúzom a hub-ból, s bedugom a desktop gép host interface-ébe. Most megpróbálkozom egy kikapcsolás-bekapcsolással, hátha...

Szerk.:

Kikapcs-bekapcs után ugyanaz. Az ssh kapcsolat felépül, van login banner, még színes is, de shell prompt már nincs. Parancsot „vakon” sem fogad.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Azt hiszem, fentebb nem mondtam igazat. Egy su - parancs hatására bekérte a jelszót, beírtam. Prompt nem volt, mondtam neki vélelmezetten root-ként, hogy mc, mire ő:

Cannot get terminal settings: Not a tty (25)

Tehát vélhetően valami terminál definíciós dolgok lehetnek elbökve. Az echo hello-ra nem látok semmit. Eleve nem látom, amit írok. Mintha az stdout menne a /dev/null-ba. Olyannyira, hogy „vakon” beírtam:

echo hello >&2

mire kiírta, hogy hello. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Egyébként én /etc/profile-t nézném meg

Nagyon köszönöm a tippet, ez volt a megoldás! A régi profile-ba beleírtam ezt-azt, de nem ez volt a baj, hanem az, hgy az egész file-t cseréltem, azt a részét is régire, amelyhez nem nyúltam. Most jön az, hogy módosítom ezt az újat... Gondolom, wifi hasonló ok miatt nincs.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Úgy látom, a csinos kis promptomba döglik bele, debugolhatom, hogy miért:

#!/bin/sh

export UID=`id -ur`
export EUID=`id -u`
case $- in
    *i*)
        if [ "${TERM:0:5}" = 'xterm' ]; then
            export PS1='$(RET=$?; COLOR="\[\e[m\]"; [ $EUID = 0 ] && COLOR="\[\e[32;1m\]"; echo -n "${COLOR}["; [ $RET -ne 0 ] && echo -n "\[\e[33;1m\]$RET$COLOR ")\u@\h \w]\$ \[\e[m\]'
        else
            export PS1='\u@\h:\w\$ '
        fi
        alias ll='ls -alF --color=auto'
esac

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Azt csináltam, hogy egyfelől stderr-re küldöm az stdout-ot, ha látni szeretném valaminek az outputját, illetve vakon macera beírni hosszú parancsot hibátlanul, a desktop gépen megszerkesztem, beírom egy egybetűs nevű file-ba, majd mc-vel felmásolom a router /tmp-jébe - ez amúgy RAM disk -, onnan pedig az egybetűs névvel vakon is könnyen végre tudom hajtani. Viszont itt tartok:

Image check 'fwtool_check_image' failed.

A help meg ezt mondja:

-F | --force Flash image even if image checks fail, this is dangerous!

Már most is félig kizártam magam, nem húznék 19-re lapot. Lehet, hogy sikerülne, de az is lehet, hogy végleg tégla lenne belőle.

Amit tudni lehet: eddig a sysupgrade file-lal próbálkoztam. Utóbbi esetben a factory-val, gondoltam, a full init jót tesz majd neki. Hát, nem jött be. :(

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Hivatalosan ovális, de a jelenlegi lakója úccse beszél bagettül, úgyhogy nem fog neki feltűnni, még a typo sem. Valszeg felhívod a titkárnőjét, kérsz egy időpontot, átesel egy nemzetbiztonsági átvilágításon, aztán már be is jutottál.

Bocs, muszáj volt.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Nagyobb baj, hogy amikor a desktop gépemen ma root jogot kértem, ez fogadott:

Last failed login: Sun Jul 7 01:32:28 CEST 2019 from 194.61.26.4 on ssh:notty
There were 3 failed login attempts since the last successful login.

Az egészen biztos, hogy nem én voltam. Gyanítom, a 22-es port lehet most kintről nyitva, amíg nincs rendben a routerem konfigja. Tehát háromszor bepróbálkoztak. Amúgy használom a PermitRootLogin no opciót az sshd konfigjában.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE


grep -F 'Invalid user' secure | sed 's/^.*]: //'
Invalid user admin from 194.61.26.4 port 44253
Invalid user alain from 194.61.26.4 port 52793
Invalid user ubnt from 194.61.26.4 port 54037
Invalid user pi from 194.61.26.4 port 24431
Invalid user onelink from 194.61.26.4 port 41121
Invalid user suporte from 194.61.26.4 port 42359
Invalid user train from 194.61.26.4 port 16306
Invalid user pi from 194.61.26.4 port 59731
Invalid user admin from 194.61.26.4 port 56202
Invalid user butter from 194.61.26.4 port 58412
Invalid user fuckyou from 194.61.26.4 port 13444
Invalid user erika from 194.61.26.4 port 23242
Invalid user andrea from 194.61.26.4 port 31131
Invalid user paul from 194.61.26.4 port 9559
Invalid user new from 194.61.26.4 port 43742
Invalid user admin1 from 194.61.26.4 port 22194
Invalid user ubnt from 194.61.26.4 port 12701
Invalid user sales from 194.61.26.4 port 22677
Invalid user natalia from 194.61.26.4 port 46795
Invalid user access from 194.61.26.4 port 27770
Invalid user ubnt from 194.61.26.4 port 51367
Invalid user newsletter from 194.61.26.4 port 27818
Invalid user updates from 194.61.26.4 port 57660
Invalid user user from 194.61.26.4 port 57776
Invalid user support from 194.61.26.4 port 16690
Invalid user ubnt from 194.61.26.4 port 42594
Invalid user anonymous from 194.61.26.4 port 40815
Invalid user julia from 194.61.26.4 port 39622
Invalid user boss from 194.61.26.4 port 13804
Invalid user ftpuser from 194.61.26.4 port 22818
Invalid user temp123 from 194.61.26.4 port 7099
Invalid user user from 194.61.26.4 port 18402
Invalid user system from 194.61.26.4 port 2812
Invalid user research from 194.61.26.4 port 7315
Invalid user default from 194.61.26.4 port 11408
Invalid user webmaster from 194.61.26.4 port 44034
Invalid user test1 from 194.61.26.4 port 17222
Invalid user biotop from 194.61.26.4 port 33781
Invalid user user from 194.61.26.4 port 45993
Invalid user reverse from 194.61.26.4 port 42953
Invalid user user1 from 194.61.26.4 port 3890
Invalid user peggy from 194.61.26.4 port 33884
Invalid user ubnt from 194.61.26.4 port 21846
Invalid user ftpuser from 194.61.26.4 port 37287
Invalid user hscroot from 194.61.26.4 port 20471
Invalid user ubnt from 194.61.26.4 port 52348
Invalid user user1 from 194.61.26.4 port 41963

Remek. :-/

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Én a VPS-emen fail2ban-t használok mindenre. Mióta portscanra is van szabály, azóta magas portra rakott SSH-n nincs próbálkozás egyáltalán.
"Status for the jail: portscan
|- filter
| |- File list: /var/log/messages
| |- Currently failed: 23
| `- Total failed: 377757
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 203"
"Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 0
| `- Total failed: 0
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 0"

Semmi különös. Kb. ennyi a lényeg:

# /etc/fail2ban/jail.conf

bantime = 28800
findtime = 600
maxretry = 3

[ssh]
enabled = true
port = 26555
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

[portscan]
enabled = true
filter = portscan
action = iptables[name=portscan]
logpath = /var/log/messages
maxretry = 50

És ekkor el kell olvasni ezt is és követni: https://github.com/sikevux/fail2ban/blob/master/portscan.conf
# Looks for attempts on ports not open in your firewall. Expects the
# iptables logging utility to be used. Add the following to your iptables
# config, as the last item before you DROP or REJECT:
# -A -j LOG --log-prefix "PORT DENIED: " --log-level 5 --log-ip-options --log-tcp-options --log-tcp-sequence
# This will place a notice in /var/log/messages about any attempt on a port that isn't open.

Ja és logrotate-ot ne felejtsd! :)

Mondjuk azt azért ne felejtsük el, hogy a dobozon alapból mindig elérhető az authentikáció nélküli root login RS232-ről.

Egyrészt azt, hogy mind az általad forgatott image tartalmazza "alapból", mind az openwrt oldaláról letöltött image-ben benne van.

Ha nem akarod, persze biztos ki lehet belőle vakarni, de a menuconfigban nem láttam erre vonatkozó opciót.

Másrészt:
https://openwrt.org/toh/tp-link/tl-wr842nd#serial
persze ehhez kell egy usb-RS232 átalakító, vagy soros port a gépen.

> kell egy usb-RS232 átalakító, vagy soros port a gépen

A routerben nincsenek RS232 jelszintek, vagyis inkább egy ilyesmi kell a feladathoz:

https://i.ebayimg.com/images/g/a00AAOSwmFxcRofk/s-l1600.jpg

2db ilyenből kevesebb mint 500Ft:
https://www.ebay.com/itm/2pcs-Durable-Serial-Module-3-3-5V-USB-To-TTL-A…

No, igen, én is filóztam azon, hogy a "serial port" fogalmát milyen mélységben kellene kifejteni, de ha már itt tartunk, az általad linkelt átalakítóhoz is tartozik egy fontos kitétel: Az 5V (TTL) oldalát illik elfelejteni.
Ezek a processzorok 3.3V-ról futnak, így ha ráköti az 5V-os TTL ágát, ugyanúgy kijön belőle a füst, mintha a +/-17V-os RS232-t kötné rá.

Igaz, bár vannak "5 V tolerant" I/O-val rendelkező eszközök, amikből így nem fog kijönni a füst, de valóban az a helyes, ha 3,3 V-tal tápláljuk a cuccot, amennyiben a "túloldal" is olyan tápfeszről jár.
Van olyan átalakítóm, amin választható a tápfesz (5V/3,3V):
https://www.aliexpress.com/item/32827321415.html?spm=a2g0s.9042311.0.0…

Szerk.: közben megnéztem, hogy az is rendben van, amit először linkeltem. Ilyenem is van, GND-hez képest ezeket mértem a lábakon:
VCC +5V: 5,05 V
CH340G-VCC: 3,672 V
VCC +3.3V: 3,100 V
CH340G-TxD: 3,669 V
CH340G-RxD: 3,468 V

Szerk2:
Mértem egy ilyent is:
https://www.ebay.com/itm/CP2102-USB-2-0-to-TTL-UART-Module-6Pin-Serial-…
DTR: 3,342 V
RxD: 3,019 V
TxD: 3,343 V
+5V: 5,05 V
3V3: 3,343V

Úgy néz ki, az 1.31.0-ás SzivárványosDoboz ash-jába sikeresen belefejlesztettek egy bugot. Régen minden jobb volt, de már elmúlt.

Ez volt a régi promptom:

export PS1='$(RET=$?; COLOR="\[\e[m\]"; [ $EUID = 0 ] && COLOR="\[\e[32;1m\]"; echo -n "${COLOR}["; [ $RET -ne 0 ] && echo -n "\[\e[33;1m\]$RET$COLOR ")\u@\h \w]\$ \[\e[m\]'

A jelenlegi kód ezzel szemben, ami nem rejti el a promptban a 0-s exit code-ot:

if [ $EUID = 0 ]; then
    export PS1='\[\e[32;1m\][\[\e[33;1m\]$?\[\e[32;1m\] \u@\h \w]\$ \[\e[m\]'
else
    export PS1='\[\e[m\][\[\e[33;1m\]$?\[\e[m\] \u@\h \w]\$ '
fi

Lehet, hogy nem túl áttekinthető, de elmondom a lényeget. Régen a prompt deklarálásában el lehetett helyezni futtatható shell scriptet $(...) helyettesítéssel. Most ettől szétesik az egész. Ugye, előre nem tudom kiszámítani az értékeket és behelyettesíteni a PS1 deklarálásakor, mert épp az a lényeg, hogy mindig akkor kell futnia a kódnak, amikor megjelenik a prompt. Így az exit kódból dinamikusan kerül előállításra a kiírandó tartalom. Most csak a visszatérési értéket helyettesítem, de például a nullát nem tudom eltüntetni.

Miért nyúlnak hozzá olyasmihez, ami egyszer már működött?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE