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-07-10 09:42:04

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Kiedy tylko chroot a kiedy aż LXC?

Witam,
jakie macie zdanie na temat izolacji serwerów dns, httpd, mysql. Kiedy wystarczy zamknąć dany serwer w klatce chroot, a kiedy należy do tego zaprzęgnąć LXC?

Offline

 

#2  2014-07-10 10:11:47

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

To zależy od konkretnej maszyny, na pojedynczym serwerze spokojnie wystarczy ACL jak np Apparmor albo Selinux, względnie Grsec ACL.
Jak ktoś koniecznie chce chrooty, to też ma kilka opcji, jest standardowy chroot, który już dawno wyczerpał większość swoich zalet, i praktycznie nie wykracza poza to, co można osiągnąć Apparmorem czy SElinuxem, jest Chroot wzmocniony funkcjami Grsec:

Kod:

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_CHROOT_EXECLOG=y

które z niego robią klatkę twardszą, niż LXC, i wreszcie jest wirtualizacja.

Ja osobiście zazwyczaj używam Grsec/Apparmor, i jeszcze problemów z tymi modułami nie miałem, powyżej tego brałbym od razu wirtualizację KVM, zamiast zawracać sobie głowę chrootami na sterydach w typie LXC.

Pozdro
;-)


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

Offline

 

#3  2014-07-10 10:29:17

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Istnieje spora szansa, że potencjalnemu włamywaczowi, który dostanie się do kontenera LXC, uda się wejść na główny system?

Offline

 

#4  2014-07-10 10:40:55

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Kiedy tylko chroot a kiedy aż LXC?

A ja mam pytanie: po co?
Jeśli ma się trochę lepszą maszynę, to czy nie lepiej wykorzystać pełną wirtualizację, np qemu?

Offline

 

#5  2014-07-10 10:43:22

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

Troszkę trudniej, niż chroot, trochę łatwiej, niż chroot+grsec.

przy czym to zależny od konkretnych dziur i podatności w systemie,
nawet w wirtualizacji XEN i KVM pojawiały się dziury, pozwalające się wbić na roota gospodarza z poziomu systemu gościa.

Jak naprawdę chcesz bezpieczny serwer, to tylko grsec, który z systemem ACL RBAC działa powyżej konta root, ograniczając również uprawnienia roota.
SElinuxa czy Apparmora zazwyczaj można wyłączyć z poziomu konta root.
Co prawda w Selinuxie da się obciąć konto root do poziomu zbliżonego  do Grsec RBAC, ale gimnastyki w SElinxie z tym jest tyle, ze już wolałbym się prawą piętą za lewym uchem podrapać.

Natomiast moda na LXC czy wirtualizację wzięła się z tego, że w systemie "cukierkowej ochrony" serwery nieraz obrywały, chroot problemu nie rozwiązywał,  i LXC czy OpenVZ też do końca sprawy nie rozwiązuje, choć poprawia bezpieczeństwo względem standardowego systemu.
Przy wirtualizacji czy kontenerach masz nie jeden "cukierkowy system" tylko dwa, gospodarza i gościa.

Roboty z tym 3 razy więcej niż z grseciem, a rezultat w mojej opinii mniejszy niż z Grsec z sensownym Grsec- ACL+Apparmor (profile dla "krytycznych usług")+cgroup (zasoby systemowe).

Wtedy globalna polityka bezpieczeństwa, której nie można zmienić z konta root bez uzyskania roli admin w RBAC, jest realizowana przez grsec, bardziej szczegółowe profile ze śliaśnymi zmiennymi i regexami można dla poszczególnych programów robić w Apparmorze, a pamięć, procek, dysk - to już Cgroup.

Ostatnio edytowany przez Jacekalex (2014-07-10 10:58:07)


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

Offline

 

#6  2014-07-10 10:49:05

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

[quote=Pavlo950]A ja mam pytanie: po co?
Jeśli ma się trochę lepszą maszynę, to czy nie lepiej wykorzystać pełną wirtualizację, np qemu?[/quote]
Myślę, że lepiej i to w firmie stosujemy. Jednak mam braki w kwestii lxc, grsec itd., bo nigdy nie miałem potrzeby tego stosować, teraz też nie -od tak, robię testy na kebabie od ovh.
A gdy na jednym serwerze pracuje wiele aplikacji (np. nginx+phpfpm, mysql)+do tego logują się na niego zwykli użytkownicy, aby przesyłać pliki do stron; czy zastosowanie chroot+grsec dla każdej z aplikacji z osobna oraz dodatkowy chroot+grsec dla samych użytkowników oraz całkowite porzucenie lxc wydaje się dobrym rozwiązaniem?

Ostatnio edytowany przez HaPe (2014-07-10 10:55:50)

Offline

 

#7  2014-07-10 11:11:03

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

Chroot? to przeniesienie roota do innego katalogu głównego.
Jak koniecznie chcesz, to owszem, można, robiąc globalny system ACL osiągasz podobny efekt, przy odpowiedniej szczegółowości polityki.
Chroot z grseciem obcina tonę różnych możliwości eskalacji uprawnień.

Skąd się wzięła taka straszna moda na wirtualizacje czy LXC?
Z systemu plików /proc i /sys, gdzie można się dostać do różnych ustawień systemowych i procesów roota.
Grseciem da się to obciąć nawet skuteczniej, niż przy LXC/OpenVZ,
i to nawet bez RBAC/ACL.

Chroot chroniony przez grsec:

Kod:

Debian Jessie   czw lip 10 11:03:36  localhost : / 
root ~> whoami
root

Debian Jessie   czw lip 10 11:03:41  localhost : / 
root ~> ping dns
ping: icmp open socket: Operation not permitted

Debian Jessie   czw lip 10 11:03:59  localhost : / 
root ~> ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     25573  0.0  0.0  19712  3628 ?        S    11:03   0:00 /bin/bash -i
root     25777  0.0  0.0  19080  2640 ?        R+   11:05   0:00 ps aux

Debian Jessie   czw lip 10 11:05:13  localhost : / 
root ~> touch test

Debian Jessie   czw lip 10 11:05:56  localhost : / 
root ~> chattr +i test
chattr: Operacja niedozwolona podczas ustawiania flag test

root ~> chmod 4755 test
chmod: nie można zmienić uprawnień do „test”: Brak dostępu

Wyłączone - chattr, ustawianie bitów suid i sgid, socketów icmp, zakaz montowania z poziomu chroota, i kilka innych przyjemności.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-07-10 11:11:29)


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

Offline

 

#8  2014-07-10 19:17:55

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Robiąc odrębnego chroota na aplikacje web (nginx, php) lepiej skopiować tylko potrzebne liby, binarki czy lepiej postawić przez debootstrap debiana w debianie i na nim z paczek zainstalować odpowiednią aplikację? Stosując debootstrap w pewnym stopniu ułatwiam sobie pracę w systemie, ponieważ nie ma potrzeby kopiowania plików, co jest dobre w przypadku wykonania ewentualnych aktualizacji.

Offline

 

#9  2014-07-10 20:03:56

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

Jak chcesz, możesz kopiować liby -jailkit tutaj sprawdza się grzecznie, możesz skopiować system, i aktualizować go bezpośrednio w chroocie.
Wtedy masz cięższe te chrooty, i większe ryzyko, bo w całym systemie jest więcej softu, niż w systemie typu absolutne minimum, a miej softu, to też mniej dróg ataku.

Możliwości masz setki, różnych skryptów automatyzujących też.

Serwer jest tylko tak bezpieczny i stabilny, jak jego Administrator kumaty,
całość zależy od tego, jak wszystko zaprojektujesz i skonfigurujesz.


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

Offline

 

#10  2014-07-10 23:47:45

  bryn1u - Użytkownik

bryn1u
Użytkownik
Zarejestrowany: 2009-04-17

Re: Kiedy tylko chroot a kiedy aż LXC?

HaPe - ubuntu bardzo dobrze wspiera LXC. Z chrootem bedziesz mial duzooo roboty. LXC bardzo dobrze sie sprawdza z grsec, rbackiem i apparmorem, ktory nadzoruje prace programow za pomoca LXC, ktory pokaze ci to wklepujac aa-status, dlatego bralbym ubuntu bo maja wlasne templatki pod LXC. Jezeli nie bedziesz nikomu dawal roota w lxc to nie bedziesz mial zadnych problemow. Niestety do nie dawna z LXC mozna bylo wyjsc do hosta tym ktorzy mieli roota w lxc. Ja bym szedl w ta strone tym bardziej, ze projekt zapowiada sie interesujaco, napewno bedzie wsparcie ze strony devow Grsecurity dla LXC co zreszta wspominali cos tam na Twiterze, wiec chyba nie ma sie nad czym zastanawiac. Nastepnie instalowany jest minimalistyczny system, w ktorym nie ma nawet nano, wiec burdelu tam nie uswiadczysz. Mozesz robisz snapshoty i je powielac, nie ma co sie pier... z chrootem, ktorego przeznaczenie nie sluzylo do separacji z dostepem do shella jak to autor napisal. Dodam, ze instalacja pod ubuntu jest trywialna, poradzisz sobie bez problemu.

P.S
Jest jeszcze vserver-grsecurity :D

Ostatnio edytowany przez bryn1u (2014-07-10 23:55:12)


E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]

Offline

 

#11  2014-07-10 23:51:54

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Dzięki za wsparcie, testy jutro :)

PS Twoim zdaniem, robiąc zwykły shell dla znajomych, aplikacje różnego typu zamykam w kontenerach lxc dla bezpieczeństwa, zaś dla samych użytkowników logujących się do serwera zastosować jaila czy odrębny lxc?
Co będzie bardziej praktyczne: folder ze stronami www w kontenerze lxc z nginx, a użytkownikom w ich katalogach domowych porobię dowiązania czy pliki stron w katalogach domowych, a do kontenera lxc dowiążę odpowiednio foldery z stronami z /home?

Do zarządzania vhostami napisałem sobie coś w stylu satana z rootnode. User jest w stanie samemu je dodawać.

Ostatnio edytowany przez HaPe (2014-07-11 00:06:12)

Offline

 

#12  2014-07-11 00:47:42

  uzytkownikubunt - Zbanowany

uzytkownikubunt
Zbanowany
Zarejestrowany: 2012-04-25

Re: Kiedy tylko chroot a kiedy aż LXC?

884

Ostatnio edytowany przez uzytkownikubunt (2016-12-01 00:54:41)

Offline

 

#13  2014-07-11 09:11:12

  bryn1u - Użytkownik

bryn1u
Użytkownik
Zarejestrowany: 2009-04-17

Re: Kiedy tylko chroot a kiedy aż LXC?

Pogubiles się trochę. Nie wiem co maszyna myśli mówiąc jaila. Ja uzwam jaila pod FreeBSD i dla mnie nie ma lepszego rozwiązania. Zrób lxc dla uzykownikow wraz z www drugi lxc dla samych baz MySQL.


E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]

Offline

 

#14  2014-07-11 10:10:50

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Jeśli dla userów stworzę odrębny lxc to czy będę mógł dla nich też stosować reguły rbac?

Offline

 

#15  2014-07-11 12:57:16

  bryn1u - Użytkownik

bryn1u
Użytkownik
Zarejestrowany: 2009-04-17

Re: Kiedy tylko chroot a kiedy aż LXC?

nie wiem czy rbac nie jest wspolny dla wszystkich. Nie daje sobie reki obciac. Po drugie RBAC obsluguje tylko userow a nie grupy, wiec dla kazdego usera bedziesz musial pisac nowa regulke albo powielac od starego usera.

___


Tutaj masz moj temat z grsec development powinno ci dac odpowiedz.

http://forums.grsecurity.net/viewtopic.php?f=5&t=3912


E-Booki: FreeBSD, OpenBSD, Linux, Hacking, PHP, Catia, Perl_CGI, Mysql ...
[b]http://unix-ebooki.neth.pl/[/b]

Offline

 

#16  2014-07-11 14:49:28

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

nie wiem czy rbac nie jest wspolny dla wszystkich. Nie daje sobie reki obciac. Po drugie RBAC obsluguje tylko userow a nie grupy, wiec dla kazdego usera bedziesz musial pisac nowa regulke albo powielac od starego usera.[/quote]
Rola domyślna dla wszystkich:
http://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System#Default_Role

Rola dla grupy:
http://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System#Group_Roles

[b]RTFM[/b]


Kłopot polega tylko na tym, że grsec ze względów bezpieczeństwa nie obsługuje zmiennych $USER i $HOME w RBAC.

Inna sprawa, że to problem dla kogoś, kto nie wie o istnieniu standardowych uprawnień i ACL w Linuxie, i chce stosować RBAC, jakby nie było poleceń [b]chmod[/b], [b]setfacl[/b] i [b]chattr[/b].

Do tego można dla pacjentów wyłączyć:

Kod:

CAP_FOWNER
CAP_SETPCAP
CAP_LINUX_IMMUTABLE
CAP_CHOWN
CAP_SETUID
CAP_SETGID
CAP_SYS_ADMIN

w roli Default,
i ustawić 

Kod:

umask 0077

w [b]/etc/profile[/b] wtedy żaden pacjent nawet kijem od szczotki nie ruszy plików innego pacjenta.

W ogóle dla pacjentów najlepiej wyłączyć zdecydowaną większość, o ile nie wszystkie uprawnienia capabilities.

Sznurki:
http://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System#Capability_Restrictions
http://www.gentoo.org/proj/pl/hardened/capabilities.xml

W RBAC i Apparmorze dla każdego procesu z osobna można wyłączać capabilities, można też dla każdej binarki na dyziu ustalić osobne uprawnienia capabilities używając polecenia

Kod:

setcap

np:

Kod:

ls -l `which tcpdump`
-rwxr-xr-x 1 root root 942720 06-14 03:10 /usr/sbin/tcpdump
getcap `which tcpdump`
/usr/sbin/tcpdump = cap_net_raw+ep

Jak pacjenci mają np trzy dostępne powłoki systemowe, bash, zsh i csh, to można też te powłoki ogarnąć profilami Apparmora, w którym można się bawić regexami zgodnymi z pcre,  zmienną [b]${HOME}[/b] czy instrukcją [b]owner[/b].

Mając razem Apparmora i RBAC, macie taką plastelinę, że można cuda robić, a konfiguracja jest jakieś 5 razy prostsza, niż SElinuxa. ;)

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-07-11 15:26:05)


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

Offline

 

#17  2014-07-11 15:13:27

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Czyli w praktyce jednocześnie możemy sotoswać grsecurity (rbac) oraz apparmor?

Offline

 

#18  2014-07-11 15:36:03

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

Oczywiście, Grsecurity istnieje obok domyślnego system LSM a nie zamiast.
LSM - czyli Linux Security Modules, tam można używać Apparmora, Smack, Tomoyo lub SElinuxa.
Jedyny wyjątek, to użycie [SElinuxa|TOMOYO] i RBAC, nie polecany (choć możliwy),
bo po prostu jest z tym ciężki bajzel, dublują się poszczególne właściwości i oba systemy mogą się łatwo tak zapętlić, że system operacyjny potem jest nie do użytku.

Sznurek:
http://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System#Limitations_of_Any_Access_Control_System

Elegancko można zrobić globalną domyślną politykę w RBAC, a dla poszczególnych procesów dopieścić ją szczegółowo profilami Apparmora, które zapewniają dużo większą elastycznosć, niż RBAC, ale praktycznie nie ma w Apparmorze łatwej opcji globalnej polityki dla całego systemu.
Przy okazji na poziomie RBAC możemy mocno ograniczyć, ale nie wyeliminować całkowicie możliwości zarządzania polityką apparmora przez roota.
Po prostu zarządzanie Apparmorm może wymagać roli Admin w RBAC,
a do niej potrzebne jest osobne hasło, obrabiane i przechowywane przez Grsecurity.

Należy tylko pamiętać, ze obecnie Apparmor sięgnął wersji 3.0 w jaju, ale userspace jest w wersji Apparmor 2.4 (niezależnie od numerka), także działa tam tylko podstawowa funkcjonalność, nie działa przez to jeszcze między innymi network_rules i ipc_rules.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-07-11 15:49:10)


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

Offline

 

#19  2014-07-13 13:34:34

  HaPe - Użytkownik

HaPe
Użytkownik
Zarejestrowany: 2014-07-09

Re: Kiedy tylko chroot a kiedy aż LXC?

Zapytam jeszcze o cgroup. Czy istnieje możliwość takiego ustawienia limitu pamięci, aby polecenie free w kontenerze lxc zwracało przyznany limit a nie wolumen pamięci, który przypisany jest do całego serwera?

Offline

 

#20  2014-07-13 15:33:55

  Jacekalex - Podobno człowiek...;)

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

Re: Kiedy tylko chroot a kiedy aż LXC?

W LXC z tym może być problem, bo to nowy "chroot na sterydach",
w KVM maszyna wie tylko o takiej pamięci, jaką dostała przy uruchomieniu.

Względnie w zwykłym durnym chroocie możesz nie  montować /proc,
i masz taki rezultat:

Kod:

free -m
Error: /proc must be mounted
  To mount /proc at boot you need an /etc/fstab line like:
      proc   /proc   proc    defaults
  In the meantime, run "mount proc /proc -t proc"

Możesz też zablokować w RBAC  dostęp do pliku /proc/meminfo, z takim samym skutkiem.
Wtedy system w LXC w ogóle nie będzie wiedział, ile ma RAM.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-07-13 15:35:58)


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

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.012 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00113 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.16.76.102' WHERE u.id=1
0.00112 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.16.76.102', 1733045721)
0.00044 SELECT * FROM punbb_online WHERE logged<1733045421
0.00048 SELECT topic_id FROM punbb_posts WHERE id=271262
0.00156 SELECT id FROM punbb_posts WHERE topic_id=26112 ORDER BY posted
0.00075 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=26112 AND t.moved_to IS NULL
0.00004 SELECT search_for, replace_with FROM punbb_censoring
0.00185 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=26112 ORDER BY p.id LIMIT 0,25
0.00085 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26112
Total query time: 0.00842 s