Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Postawilem sobie lxc z grsec, nastepnie stworzylem kontener na ktorego sie zalogowalem, ale po wydaniu apt-get update dostaje w dmesg'u na hoscie komunikat
grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:24358] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:24356] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:24394] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:24392] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:24443] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/var/lib/dpkg/info/upstart.postinst[upstart.postins:24442] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:24457] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:24455] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:25681] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:25679] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:25811] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:25809] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:26686] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/var/lib/dpkg/info/openssh-server.postinst[openssh-server.:26642] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:26699] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:26697] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:26862] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:26860] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl[initctl:27119] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/var/lib/dpkg/info/libselinux1:amd64.postinst[libselinux1:amd:27118] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl[initctl:27386] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:27384] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl[initctl:28328] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:28326] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/lib/lxc/shells/rootfs/sbin/initctl[initctl:28511] uid/euid:0/0 gid/egid:0/0, parent /var/lib/lxc/shells/rootfs/var/lib/dpkg/info/openssh-server.postinst[openssh-server.:28473] uid/euid:0/0 gid/egid:0/0 grsec: From 87.206.27.122: denied connect() to abstract AF_UNIX socket outside of chroot by /var/lib/lxc/shells/rootfs/sbin/initctl[initctl:28529] uid/euid:0/0 gid/egid:0/0, parent /var/lib/lxc/shells/rootfs/usr/sbin/invoke-rc.d[invoke-rc.d:28527] uid/euid:0/0 gid/egid:0/0
Nie mam zielonego pojecia, ktora opcja odpowiada za to blokowanie. W sysctl.conf mam dodane wedle wymogow opcje:
kernel.grsecurity.chroot_caps = 0
kernel.grsecurity.chroot_deny_chmod = 0
kernel.grsecurity.chroot_deny_pivot = 0
kernel.grsecurity.chroot_deny_chroot = 0
kernel.grsecurity.chroot_deny_mount = 0[/quote]
apt-get update w kontenerze:Kod:
Err http://archive.ubuntu.com trusty InRelease Err http://archive.ubuntu.com trusty-updates InRelease Err http://security.ubuntu.com trusty-security InRelease Err http://archive.ubuntu.com trusty Release.gpg Could not resolve 'archive.ubuntu.com' Err http://archive.ubuntu.com trusty-updates Release.gpg Could not resolve 'archive.ubuntu.com' Err http://security.ubuntu.com trusty-security Release.gpg Could not resolve 'security.ubuntu.com' Reading package lists... Done W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/InRelease W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg Could not resolve 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg Could not resolve 'archive.ubuntu.com' W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg Could not resolve 'security.ubuntu.com' W: Some index files failed to download. They have been ignored, or old ones used instead.Dodam, ze na czystym kernelu dziala bez problemu. W czym moze byc problem ?
Pozdrawiam,
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]
Offline
W przypadku:
grsec: ...denied connect() to abstract AF_UNIX socket outside of chroot by /var/cache/lxc/trusty/partial-amd64/sbin/initctl.REAL[initctl.REAL:25681] uid/euid:0/0 gid/egid:0/0, parent /var/cache/lxc/trusty/partial-amd64/usr/sbin/invoke-rc.d[invoke-rc.d:25679] uid/euid:0/0 gid/egid:0/0
Chodzi zapewne o to:
http://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Deny_access_to_abstract_AF_UNIX_sockets_out_of_chroot
Lepiej przyjrzyj się wszystkim opcjom ochrony chroota w jaju albo dokumentacji, bo najwyraźniej, nie ogarniasz ich na razie. ;)
http://en.wikibooks.org/wiki/Grsecurity/Appendix/Sysctl_Options
Skrypcio do szybkiego wyłączania restrykcji chroota:
http://jacekalex.sh.dug.net.pl/grsec/groot.txt
Działa to na Debianie Jessie bez problemu:
Przykład:
debroot Debian Jessie czw cze 05 08:35:50 localhost : / root ~> ping dns ping: icmp open socket: Operation not permitted
Przy wyłączonych restrykcjach:
Debian Jessie czw cze 05 08:35:56 localhost : / root ~> ping dns -c1 PING dns (208.67.220.220) 56(84) bytes of data. 64 bytes from dns (208.67.220.220): icmp_seq=1 ttl=59 time=23.0 ms --- dns ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 23.058/23.058/23.058/0.000 ms
Przy okazji, Grsec z chroota robi taką klatkę, że porównywalnej ochrony nie zapewnia ani OpenVZ ani LXC.
Może jedynie Jail z OpenBSD (nie FreeBSD czy innego) można z tym jakoś próbować porównać. ;)
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2014-06-05 09:08:16)
Offline
[quote=Jacekalex]Może jedynie Jail z OpenBSD (nie FreeBSD czy innego) można z tym jakoś próbować porównać. ;)
To by było na tyle
;-)[/quote]
Blagam Cie, nie pisz takich bzdur bo na temat FreeBSD to duzo nie wiesz. Po drugie OpenBSD nie posiada jaila. Kieyds byl jedynie projekt sysjail dla OpenBSD. Po trzecie wszystko to na co grsec pozwala mozesz zrobic za pomoca MAC w jailu FreeBSD. Mozesz nalozyc na wybrany jail securelevel nie nakladajac na hosta.
root@ns3306115:/home/bryn1u # sysctl -a | grep securelevel
kern.securelevel: -1
security.jail.param.securelevel: 0
root@ns3306115:/home/bryn1u # jls
JID IP Address Hostname Path
1 192.168.0.1 Oksymoron.edu.pl /jails/Oksymoron
root@ns3306115:/home/bryn1u # jexec 1 sysctl -a | grep securelevel
kern.securelevel: 3
http://savagedlight.me/2010/11/06/freebsd-kern-securelevel/ (sec level)[/quote]
Wszystko to jest czescia systemu a nie hacki na jajo typu grsec....
kern.features.security_capability_mode: 1
kern.features.security_capabilities: 1
kern.stackprot: 7
kern.features.stack: 1
kern.kstack_pages: 4
kern.elf64.nxstack: 1
kern.elf32.nxstack: 1
vm.kstack_cache_size: 128
vm.kstacks: 327
security.jail.jailed: 0
security.jail.vnet: 0
security.jail.jail_max_af_ips: 255
security.jail.set_hostname_allowed: 1
security.jail.socket_unixiproute_only: 1
security.jail.sysvipc_allowed: 0
security.jail.allow_raw_sockets: 0
security.jail.chflags_allowed: 0
security.jail.mount_allowed: 0
security.jail.mount_devfs_allowed: 0
security.jail.mount_nullfs_allowed: 0
security.jail.mount_procfs_allowed: 0
security.jail.mount_tmpfs_allowed: 0
security.jail.mount_zfs_allowed: 0
security.jail.enforce_statfs: 2
security.jail.devfs_ruleset: 0
security.jail.param.jid: 0
security.jail.param.parent: 0
security.jail.param.name: 256
security.jail.param.path: 1024
security.jail.param.securelevel: 0
security.jail.param.enforce_statfs: 0
security.jail.param.devfs_ruleset: 0
security.jail.param.persist: 0
security.jail.param.dying: 0
security.jail.param.children.cur: 0
security.jail.param.children.max: 0
security.jail.param.host.: 0
security.jail.param.host.hostname: 256
security.jail.param.host.domainname: 256
security.jail.param.host.hostuuid: 64
security.jail.param.host.hostid: 0
security.jail.param.cpuset.id: 0
security.jail.param.ip4.: 0
security.jail.param.ip4.saddrsel: 0
security.jail.param.ip6.: 0
security.jail.param.ip6.saddrsel: 0
security.jail.param.allow.set_hostname: 0
security.jail.param.allow.sysvipc: 0
security.jail.param.allow.raw_sockets: 0
security.jail.param.allow.chflags: 0
security.jail.param.allow.quotas: 0
security.jail.param.allow.socket_af: 0
security.jail.param.allow.mount.: 0
security.jail.param.allow.mount.devfs: 0
security.jail.param.allow.mount.nullfs: 0
security.jail.param.allow.mount.procfs: 0
security.jail.param.allow.mount.tmpfs: 0
security.jail.param.allow.mount.zfs: 0[/quote]
Do tego dochodzi PAX/ASLR.root@ns3306115:/home/bryn1u # sysctl -a | grep pax
security.pax.aslr.status: 2
security.pax.aslr.debug: 0
security.pax.aslr.mmap_len: 21
security.pax.aslr.stack_len: 16
security.pax.aslr.exec_len: 21
security.pax.aslr.compat.status: 2
security.pax.aslr.compat.mmap_len: 8
security.pax.aslr.compat.stack_len: 6
security.pax.aslr.compat.exec_len: 6
security.pax.log.log: 0
security.pax.log.ulog: 0
security.pax.segvguard.status: 1
security.pax.segvguard.debug: 0
security.pax.segvguard.expiry_timeout: 120
security.pax.segvguard.suspend_timeout: 600
security.pax.segvguard.max_crashes: 5[/quote]
I w przeciwienstwie do PAX'a z linux'a. Mozesz ustawic sobie za pomoca ugidfw na kazdego wybranego jaila, na kazda binarke, grupe, usera ASLR/PAX i wiele wiecej. Nie chce mi sie dalej rozpisywac. FreeBSD jest bardzo spojnym, stabilnym i bezpiecznym systeme. Jail sam w sobie jest bezpieczny i nalozone sa restrykcje i to tez jest integralna czescia systemu. Za to montowanie procesow do chroota w przypadku linuxa nie jest bezpieczne nawet z grsec z tego co czytalem. Dobrze, ze wspomagany jest RBAC'kiem bo roznie moglo by byc.Ostatnio edytowany przez bryn1u (2014-06-05 12:43:27)
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]Offline
A jak tam z grsec?
Działa?
Offline
Niestety blad jest ten sam :(
dodalem ostatni wpis do sysctl.conf, ale nie pomoglo
root@ns4004894:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
kernel.grsecurity.chroot_deny_chmod = 0
kernel.grsecurity.chroot_deny_pivot = 0
kernel.grsecurity.chroot_deny_chroot = 0
kernel.grsecurity.chroot_deny_mount = 0
kernel.grsecurity.chroot_deny_unix = 0[/quote]
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]
Offline
To kombinuj dalej, może jakiś binarki Ubuntu się gryzą z paxem, może cośtam obrywa z powodu bitu SUID/SGID, trzeba by głębiej zajrzeć w ten system i popróbować kilkoma różnymi programami, czy potrafią pobierać z sieci.
Spróbuj wyłączyć literalnie wszystkie opcje ochrony chroota.
Tak masz wyżej skrypta, który to robi automatycznie, zajrzyj do niego.
W logach grsec/paxa możesz też poszukać dokładniej.
Albo po prostu olej LXC, postaw KVM, i będziesz miał osobny podsystem sieciowy, osobne jajo, a wielkiej różnicy w obciążeniu raczej nie będzie, LXC też święte nie jest pod tym względem.
PS.
Pisząc o jailu w OpenBSD faktycznie się pomyliłem, tam jest zwykły chroot.
Jednak jak nie interesują mnie nie setki opcji konfiguracyjnych, którym FreeBSD jest obwieszone jak choinka, ale twarde fundamenty systemu na poziomie kompilatora i binarek, to OpenBSD ma tu taki poziom wykonania, że FBSD przy nim wymięka.
Osobiście jakbym miał stawiać serwer na BSD, to zdecydowania brałbym OpenBSD, i mogę się założyć, że nic by mu się nie stało w czasie działania w necie.
Podobnie, jak pancernemu Gentusiowi-hardened, w którym, żeby odpalić LXC, trzeba zdjąć prawie połowę zabezpieczeń.
Podejrzewam, ze z podobnego powodu OpenBSD nie dorobił się jaili
portowanych z FreeBSD, że też trzeba by przerabiać politykę bezpieczeństwa, która w Openie jest wyjątkowo skuteczna i starannie zaprojektowana.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-06-05 14:14:01)
Offline
Teraz troszke sie poprawilo, dmesg nie pokazuje mi wczesniejszych bledow, ale dalej w lxc dostaje ten sam blad:
grsec: time set by /sbin/hwclock[hwclock:1924] uid/euid:0/0 gid/egid:0/0, parent /sbin/init[init:1] uid/euid:0/0 gid/egid:0/0
systemd-udevd[2055]: starting version 204
e1000e 0000:00:19.0: irq 43 for MSI/MSI-X
e1000e 0000:00:19.0: irq 43 for MSI/MSI-X
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
init: udev-fallback-graphics main process (3425) terminated with status 1
Adding 4094972k swap on /dev/sda3. Priority:-1 extents:1 across:4094972k
EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: None
e1000e 0000:00:19.0 eth0: 10/100 speed: disabling TSO
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
init: failsafe main process (3592) killed by TERM signal
init: plymouth-upstart-bridge main process ended, respawning
device veth59RRIF entered promiscuous mode
IPv6: ADDRCONF(NETDEV_UP): veth59RRIF: link is not ready
lxcbr0: port 1(veth59RRIF) entered forwarding state
lxcbr0: port 1(veth59RRIF) entered forwarding state
lxcbr0: port 1(veth59RRIF) entered disabled state
ip_set: protocol 6
IPv6: ADDRCONF(NETDEV_CHANGE): veth59RRIF: link becomes ready
lxcbr0: port 1(veth59RRIF) entered forwarding state
lxcbr0: port 1(veth59RRIF) entered forwarding state
lxcbr0: port 1(veth59RRIF) entered forwarding state[/quote]
LXC:root@ns4004894:/usr/src/linux# lxc-console -n Oksymoron
Connected to tty 1
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
root@Oksymoron:/home/ubuntu# apt-get update
Err http://security.ubuntu.com trusty-security InRelease
Err http://archive.ubuntu.com trusty InRelease
Err http://archive.ubuntu.com trusty-updates InRelease
Err http://security.ubuntu.com trusty-security Release.gpg
Could not resolve 'security.ubuntu.com'
Err http://archive.ubuntu.com trusty Release.gpg
Could not resolve 'archive.ubuntu.com'
Err http://archive.ubuntu.com trusty-updates Release.gpg
Could not resolve 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg Could not resolve 'security.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg Could not resolve 'archive.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
root@Oksymoron:/home/ubuntu#[/quote]
Hmm, jakis pomysl ?
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]Offline
Ale jaja, wlasnie wyczytalem podobny temat. Wystarczylo zmienic DNS
nameserver 8.8.8.8
nameserver 8.8.4.4[/quote]
Tylko zmylilo mnie to, na kernelu ubuntowskim/debianowskim dziala bez problemu. Po skompilowaniu jajka 3.14.5 z grsec nagle przestaje dzialac, wiec problemu szukam pod katem grsec. Jak narazie dziala !
E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]
Offline
Time (s) | Query |
---|---|
0.00022 | SET CHARSET latin2 |
0.00012 | SET NAMES latin2 |
0.00123 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.137.190.6' WHERE u.id=1 |
0.00071 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.137.190.6', 1732833345) |
0.00055 | SELECT * FROM punbb_online WHERE logged<1732833045 |
0.00078 | DELETE FROM punbb_online WHERE ident='3.149.235.171' |
0.00095 | SELECT topic_id FROM punbb_posts WHERE id=269220 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=25935 ORDER BY posted |
0.00062 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25935 AND t.moved_to IS NULL |
0.00007 | SELECT search_for, replace_with FROM punbb_censoring |
0.00313 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25935 ORDER BY p.id LIMIT 0,25 |
0.00068 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25935 |
Total query time: 0.00912 s |