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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-04-14 21:58:09

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Czołem ;)

Po raz pierwszy od przejścia na testinga skompilowałem sobie jajko z grseciem, 3.13.9.

Wszystko fajnie pięknie, wszystko doprowadzone do działania w kwadrans (paxctl <3), poza dwoma kwestiami.

Kod:

# cat /boot/config-3.13.9-yui-grsec | grep GRKERNSEC_PROC_GID 
CONFIG_GRKERNSEC_PROC_GID=2001
# id enether
uid=1000(enether) gid=1000(enether) grupy=1000(enether),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),103(fuse),105(scanner),108(lpadmin),110(bluetooth),112(netdev),113(kvm),124(debian-tor),126(clamav),69(wheel),134(wireshark),2001(grsecex)

grsec wydaje się mieć wybitnie gdzieś fakt, że znajduję się w grupie której nie powinien obejmować restrykcjami /proc ;) (głównie zależy mi na tym by działały htop i dostęp do /proc/net/dev)
Jakieś pomysły dlaczego?

Druga kwestia:

Mam ci ja w /etc/sysctl.conf

Kod:

kernel.grsecurity.dmesg = 0

Wyłącza to ograniczenie dostępu do dmesg'a dla nie-roota. Problem: nie jest to wczytywane przy bootowaniu. Nic z /etc/sysctl.conf nie jest wczytywane.
Jeżeli zrobię sysctl -p wszystko ładnie rusza.

Ostatnio edytowany przez enether (2014-04-14 22:03:34)

Offline

 

#2  2014-04-14 22:09:12

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Po dodaniu do grupy trzeba się wylogować, i zalogować ponownie, żeby zaskoczyło.

Poza tym SOA#1


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2014-04-14 22:10:34

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Tego mi musisz nie mówić, to zrobiłem od razu ;) Problem w tym że ani reboot ani dopisanie do argumentów gruba grsec_proc_gid=2001 i reboot nic nie dały ;)

Offline

 

#4  2014-04-14 22:19:07

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

A to masz?
GRKERNSEC_PROC_USERGROUP=y
GRKERNSEC_PROC_USER=n

Ja mam tak ustawione i działa:
CONFIG_GRKERNSEC_PROC_GID=999
CONFIG_GRKERNSEC_PROC=y
# CONFIG_GRKERNSEC_PROC_USER is not set
CONFIG_GRKERNSEC_PROC_USERGROUP=y
CONFIG_GRKERNSEC_PROC_ADD=y
CONFIG_GRKERNSEC_PROC_IPADDR=y


[url=http://mhroczny.net][b]strona domowa[/b][/url] || [url=http://dug.net.pl][b]polski portal debiana[/b][/url]

Offline

 

#5  2014-04-14 22:20:52

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

[s]Pokaż konfig grseca z kernela, czyli:[/s]
[s]

Kod:

egrep -i 'grker|pax' /boot/config-$(uname -r)

[/s]
[s]Parametry ustawione w jaju podpatrzysz:[/s]
[s]

Kod:

sysctl -a | grep grsec

[/s]
Coś mi się zdaje, że mamy tą samą łatkę, tylko że u mnie chodzi bez problemu, a u Ciebie jest jakiś błąd w sztuce.


EDIT:
Jeśli rusza po [b]sysctl -p[/b], to znaczy, ze z jakiegoś powodu nie wczytuje parametrów na starcie, co jest o tyle dziwne, że łatka jest w jaju.
Może sysctl w ogóle nie dotarło do usług startowych?
Pokaż te wpisy w [b]/etc/sysctl.conf[/b].

Debian testing?
Może systemd coś miesza?

Ostatnio edytowany przez Jacekalex (2014-05-06 12:00:50)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2014-04-14 22:28:14

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

@milyges - cały config na pastebinie :)
@Jacekalex
1. http://pastebin.com/Eng7xPNJ
2.

Kod:

kernel.grsecurity.chroot_caps = 1                                                                                                                                                  
kernel.grsecurity.chroot_deny_chmod = 1                                                                                                                                            
kernel.grsecurity.chroot_deny_chroot = 1                                                                                                                                           
kernel.grsecurity.chroot_deny_fchdir = 1                                                                                                                                           
kernel.grsecurity.chroot_deny_mknod = 1                                                                                                                                            
kernel.grsecurity.chroot_deny_mount = 1                                                                                                                                            
kernel.grsecurity.chroot_deny_pivot = 1                                                                                                                                            
kernel.grsecurity.chroot_deny_shmat = 1                                                                                                                                            
kernel.grsecurity.chroot_deny_sysctl = 1                                                                                                                                           
kernel.grsecurity.chroot_deny_unix = 1                                                                                                                                             
kernel.grsecurity.chroot_enforce_chdir = 1                                                                                                                                         
kernel.grsecurity.chroot_findtask = 1                                                                                                                                              
kernel.grsecurity.chroot_restrict_nice = 1                                                                                                                                         
kernel.grsecurity.consistent_setxid = 1                                                                                                                                            
kernel.grsecurity.deny_new_usb = 0                                                                                                                                                 
kernel.grsecurity.deter_bruteforce = 1                                                                                                                                             
kernel.grsecurity.dmesg = 0                                                                                                                                                        
kernel.grsecurity.fifo_restrictions = 1                                                                                                                                            
kernel.grsecurity.grsec_lock = 0                                                                                                                                                   
kernel.grsecurity.harden_ipc = 1                                                                                                                                                   
kernel.grsecurity.harden_ptrace = 1                                                                                                                                                
kernel.grsecurity.ip_blackhole = 1                                                                                                                                                 
kernel.grsecurity.lastack_retries = 4                                                                                                                                              
kernel.grsecurity.linking_restrictions = 1                                                                                                                                         
kernel.grsecurity.ptrace_readexec = 1                                                                                                                                              
kernel.grsecurity.resource_logging = 1                                                                                                                                             
kernel.grsecurity.rwxmap_logging = 1                                                                                                                                               
kernel.grsecurity.signal_logging = 1                                                                                                                                               
kernel.grsecurity.timechange_logging = 1                                                                                                                                           
kernel.osrelease = 3.13.9-yui-grsec

Sam sysctl.conf to nic okazałego.
http://pastebin.com/ha6Zfcss


Testing testing, jako init używam sysvinit ;)

Najciekawsze jest to że w logach absolutna pustka.

Ostatnio edytowany przez enether (2014-04-14 22:31:59)

Offline

 

#7  2014-04-14 22:44:48

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Kod:

# CONFIG_PAX_SOFTMODE is not set

To się może bardzo przydać w razie czego.

Kod:

CONFIG_PAX_EI_PAX=y
CONFIG_PAX_PT_PAX_FLAGS=y
CONFIG_PAX_XATTR_PAX_FLAGS=y

Tu spaprałeś, wybiera się jeden sposób markowania.


Kod:

CONFIG_GRKERNSEC_PROC_USER=y

domyślnie pacjent ma prawo zajrzeć tylko do swoich procesów, do przestawienia przez sysctl tak to idzie.

Kod:

CONFIG_GRKERNSEC_PROC_GID=2001

niby prawidłowo, ale póki nie wyłączysz 

Kod:

CONFIG_GRKERNSEC_PROC_USER=y

to nie ruszy tak, jak zamierzasz.

Ostatnio edytowany przez Jacekalex (2014-04-14 22:45:14)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2014-04-14 22:55:38

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Nie chciało mi się bawić, pozwoliłem mu automatycznie skonfigurować się pod desktop z naciskiem na security po czym tylko przejrzałem config i poprawiłem GID. I widać coś spaprałem niechcący.

Przekompiluję je sobie jutro z uwzględnieniem Twoich rad, zobaczymy czy pomoże. I softmode uwzględnię ;)

Dzięki zatem i do jutra ;)

Offline

 

#9  2014-04-14 23:43:10

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

U mnie Grsec tak wygląda:

Kod:

CONFIG_PAX_KERNEXEC_PLUGIN=y
CONFIG_PAX_PER_CPU_PGD=y
CONFIG_PAX_USERCOPY_SLABS=y
CONFIG_GRKERNSEC=y
CONFIG_GRKERNSEC_CONFIG_AUTO=y
# CONFIG_GRKERNSEC_CONFIG_CUSTOM is not set
# CONFIG_GRKERNSEC_CONFIG_SERVER is not set
CONFIG_GRKERNSEC_CONFIG_DESKTOP=y
# CONFIG_GRKERNSEC_CONFIG_VIRT_NONE is not set
# CONFIG_GRKERNSEC_CONFIG_VIRT_GUEST is not set
CONFIG_GRKERNSEC_CONFIG_VIRT_HOST=y
# CONFIG_GRKERNSEC_CONFIG_VIRT_EPT is not set
CONFIG_GRKERNSEC_CONFIG_VIRT_SOFT=y
# CONFIG_GRKERNSEC_CONFIG_VIRT_XEN is not set
# CONFIG_GRKERNSEC_CONFIG_VIRT_VMWARE is not set
# CONFIG_GRKERNSEC_CONFIG_VIRT_KVM is not set
CONFIG_GRKERNSEC_CONFIG_VIRT_VIRTUALBOX=y
# CONFIG_GRKERNSEC_CONFIG_PRIORITY_PERF is not set
CONFIG_GRKERNSEC_CONFIG_PRIORITY_SECURITY=y
CONFIG_GRKERNSEC_PROC_GID=397
CONFIG_GRKERNSEC_TPE_TRUSTED_GID=900
CONFIG_GRKERNSEC_SYMLINKOWN_GID=397
# PaX
CONFIG_PAX=y
# PaX Control
CONFIG_PAX_SOFTMODE=y
# CONFIG_PAX_EI_PAX is not set
# CONFIG_PAX_PT_PAX_FLAGS is not set
CONFIG_PAX_XATTR_PAX_FLAGS=y
CONFIG_PAX_NO_ACL_FLAGS=y
# CONFIG_PAX_HAVE_ACL_FLAGS is not set
# CONFIG_PAX_HOOK_ACL_FLAGS is not set
CONFIG_PAX_NOEXEC=y
CONFIG_PAX_PAGEEXEC=y
CONFIG_PAX_EMUTRAMP=y
CONFIG_PAX_MPROTECT=y
CONFIG_PAX_MPROTECT_COMPAT=y
CONFIG_PAX_ELFRELOCS=y
CONFIG_PAX_KERNEXEC=y
CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS=y
# CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR is not set
CONFIG_PAX_KERNEXEC_PLUGIN_METHOD="bts"
CONFIG_PAX_ASLR=y
CONFIG_PAX_RANDKSTACK=y
CONFIG_PAX_RANDUSTACK=y
CONFIG_PAX_RANDMMAP=y
CONFIG_PAX_MEMORY_SANITIZE=y
CONFIG_PAX_MEMORY_STACKLEAK=y
CONFIG_PAX_MEMORY_STRUCTLEAK=y
# CONFIG_PAX_MEMORY_UDEREF is not set
CONFIG_PAX_REFCOUNT=y
CONFIG_PAX_CONSTIFY_PLUGIN=y
CONFIG_PAX_USERCOPY=y
# CONFIG_PAX_USERCOPY_DEBUG is not set
CONFIG_PAX_SIZE_OVERFLOW=y
CONFIG_PAX_LATENT_ENTROPY=y
CONFIG_GRKERNSEC_KMEM=y
# CONFIG_GRKERNSEC_IO is not set
CONFIG_GRKERNSEC_PERF_HARDEN=y
CONFIG_GRKERNSEC_RAND_THREADSTACK=y
CONFIG_GRKERNSEC_PROC_MEMMAP=y
CONFIG_GRKERNSEC_BRUTE=y
CONFIG_GRKERNSEC_MODHARDEN=y
CONFIG_GRKERNSEC_HIDESYM=y
CONFIG_GRKERNSEC_RANDSTRUCT=y
CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
# CONFIG_GRKERNSEC_KERN_LOCKOUT is not set
# CONFIG_GRKERNSEC_NO_RBAC is not set
CONFIG_GRKERNSEC_ACL_HIDEKERN=y
CONFIG_GRKERNSEC_ACL_MAXTRIES=3
CONFIG_GRKERNSEC_ACL_TIMEOUT=90
CONFIG_GRKERNSEC_PROC=y
# CONFIG_GRKERNSEC_PROC_USER is not set
CONFIG_GRKERNSEC_PROC_USERGROUP=y
CONFIG_GRKERNSEC_PROC_ADD=y
CONFIG_GRKERNSEC_LINK=y
CONFIG_GRKERNSEC_SYMLINKOWN=y
CONFIG_GRKERNSEC_FIFO=y
# CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set
CONFIG_GRKERNSEC_ROFS=y
CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y
CONFIG_GRKERNSEC_CHROOT=y
CONFIG_GRKERNSEC_CHROOT_MOUNT=y
CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
CONFIG_GRKERNSEC_CHROOT_PIVOT=y
CONFIG_GRKERNSEC_CHROOT_CHDIR=y
CONFIG_GRKERNSEC_CHROOT_CHMOD=y
CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
CONFIG_GRKERNSEC_CHROOT_MKNOD=y
CONFIG_GRKERNSEC_CHROOT_SHMAT=y
CONFIG_GRKERNSEC_CHROOT_UNIX=y
CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
CONFIG_GRKERNSEC_CHROOT_NICE=y
CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
CONFIG_GRKERNSEC_CHROOT_CAPS=y
# CONFIG_GRKERNSEC_CHROOT_INITRD is not set
CONFIG_GRKERNSEC_AUDIT_GROUP=y
CONFIG_GRKERNSEC_AUDIT_GID=397
CONFIG_GRKERNSEC_EXECLOG=y
CONFIG_GRKERNSEC_RESLOG=y
CONFIG_GRKERNSEC_CHROOT_EXECLOG=y
CONFIG_GRKERNSEC_AUDIT_PTRACE=y
CONFIG_GRKERNSEC_AUDIT_CHDIR=y
CONFIG_GRKERNSEC_AUDIT_MOUNT=y
CONFIG_GRKERNSEC_SIGNAL=y
CONFIG_GRKERNSEC_FORKFAIL=y
CONFIG_GRKERNSEC_TIME=y
CONFIG_GRKERNSEC_PROC_IPADDR=y
CONFIG_GRKERNSEC_RWXMAP_LOG=y
CONFIG_GRKERNSEC_DMESG=y
CONFIG_GRKERNSEC_HARDEN_PTRACE=y
CONFIG_GRKERNSEC_PTRACE_READEXEC=y
CONFIG_GRKERNSEC_SETXID=y
CONFIG_GRKERNSEC_HARDEN_IPC=y
CONFIG_GRKERNSEC_TPE=y
CONFIG_GRKERNSEC_TPE_ALL=y
CONFIG_GRKERNSEC_TPE_INVERT=y
CONFIG_GRKERNSEC_TPE_GID=900
CONFIG_GRKERNSEC_RANDNET=y
CONFIG_GRKERNSEC_BLACKHOLE=y
CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
CONFIG_GRKERNSEC_SOCKET=y
CONFIG_GRKERNSEC_SOCKET_ALL=y
CONFIG_GRKERNSEC_SOCKET_ALL_GID=901
CONFIG_GRKERNSEC_SOCKET_CLIENT=y
CONFIG_GRKERNSEC_SOCKET_CLIENT_GID=903
CONFIG_GRKERNSEC_SOCKET_SERVER=y
CONFIG_GRKERNSEC_SOCKET_SERVER_GID=905
CONFIG_GRKERNSEC_DENYUSB=y
# CONFIG_GRKERNSEC_DENYUSB_FORCE is not set
CONFIG_GRKERNSEC_SYSCTL=y
CONFIG_GRKERNSEC_SYSCTL_ON=y
CONFIG_GRKERNSEC_FLOODTIME=10
CONFIG_GRKERNSEC_FLOODBURST=6

Chodzi tak od około 4 latek  na Gentusiu, na Debianie nie próbowałem takiego konfigu. ;)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#10  2014-04-15 00:18:12

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Jako że jest już jutro melduję, iż zasugerowana zmiana pomogła ;) Wszystko lata jak powinno.


Poza sysctl. Nie lata, nie wiem dlaczego.
Póki co temporary hack z rc.local, będę się użerał później. ;)

Offline

 

#11  2014-04-15 02:04:10

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Co do tego sysctl, to mi tam parę rzeczy też nie chce ustawiać przy boocie i to widać jest jakiś problem z debianem, ja sobie to rozwiązałem przez dopisanie do rc.local:

Kod:

sysctl -p >/dev/null 2>&1

Offline

 

#12  2014-04-15 13:38:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Ten błąd z sysctl w Jessie chyba robi się sławny:
https://forums.grsecurity.net/viewtopic.php?t=3945&p=13963#p13963
:D

Ostatnio edytowany przez Jacekalex (2014-04-15 13:41:12)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2014-04-15 14:53:08

  enether - wiecznie niewyspany

enether
wiecznie niewyspany
Zarejestrowany: 2012-05-01

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

To akurat ja ten wątek założyłem :P
Postanowiłem szukać pomocy u źródła ;)

Zwalę winę na jessie :P

BTW: Wyszła łatka na 3.13.10 ;) już skompilowana i śmiga

Offline

 

#14  2014-04-15 19:04:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Ja poczekam na łatkę na 3.14.1, nie chce mi się co chwila jajka kompilować.
Jak tak będziesz ścigał kolejne łatki, to czeka Cię kompilacja 2 - 3 razy w tygodniu. ;)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15  2014-04-15 22:14:22

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: grsec olewa GRKERNSEC_PROC_GID oraz sysctl.conf

Odnośnie /etc/sysctl.conf: [bug]732920[/bug].


[img]http://svn.debianart.org/themes/generic/spinner/spinner48px-moreblue.png[/img]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.011 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00067 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.149.29.98' WHERE u.id=1
0.00092 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.149.29.98', 1732680613)
0.00058 SELECT * FROM punbb_online WHERE logged<1732680313
0.00065 DELETE FROM punbb_online WHERE ident='18.225.95.229'
0.00066 SELECT topic_id FROM punbb_posts WHERE id=263356
0.00025 SELECT id FROM punbb_posts WHERE topic_id=25614 ORDER BY posted
0.00044 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=25614 AND t.moved_to IS NULL
0.00018 SELECT search_for, replace_with FROM punbb_censoring
0.00328 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=25614 ORDER BY p.id LIMIT 0,25
0.00107 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25614
Total query time: 0.00884 s