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  2015-03-16 13:13:21

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

iptables wyjątek

Witam
Chcę zrobić wyjątek w iptables ale jakoś mi się w regółki nie łapie.
w iptables mam wpisy:

Kod:

$ipt -t nat -A PREROUTING -p tcp -m set --match-set $ipsetname src -m multiport --dport 80 -j DNAT --to 10.10.232.30:88
$ipt -I FORWARD -m set --match-set $ipsetname src ! -d 10.10.232.0/25 -j DROP
$ipt -I FORWARD -m set --match-set $ipsetname src -p udp --dport 53 -j ACCEPT

co daje ładny efekt

Kod:

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set blokowani src udp dpt:53
    0     0 DROP       all  --  *      *       0.0.0.0/0           !10.10.232.0/25      match-set blokowani src
  64M   23G DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags:! 0x17/0x02 state NEW
    0     0 DROP       all  -f  *      *       0.0.0.0/0            0.0.0.0/0           
 814M   70G DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
8262M  428G TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags: 0x06/0x02 TCPMSS clamp to PMTU
 547G  464T ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
17743 1038K DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set bports src,dst
  10M  859M DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set bports src,dst
 522K   31M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25 match-set smtp src
2225K  131M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25 match-set smtp dst
  31M 1521M DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25 recent: UPDATE seconds: 60 name: SMTP side: source
 138K 6490K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25 recent: SET name: SMTP side: source
  12G 1144G ACCEPT     all  --  ppp+   bond1   0.0.0.0/0            0.0.0.0/0           
4956M  463G ACCEPT     all  --  bond1  ppp+    0.0.0.0/0            0.0.0.0/0           
2169K  120M ACCEPT     all  --  ppp+   ppp+    0.0.0.0/0            0.0.0.0/0

na adresie .232.30 stoi sobie serwerek z informacją o blokadzie. chciałem by nie były blokowane adresy docelowe .232.0/25 bo w tej sieci stoi również panel użytkownika w którym to user może zobaczyć wielkość zaległości itp. (docelowo chciałem też do wyjątków dodać banki).
regółki te ładnie blokują i wyświetlają stronkę ale wszystko, nawet te z wyjątkiem !10.10.232.0/25 :/.
W którym miejscu popełniam błąd?

Offline

 

#2  2015-03-16 14:42:47

  Jacekalex - Podobno człowiek...;)

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

Re: iptables wyjątek

Jeżeli coś ma być otwarte, to umieszczasz to przed blokadami, wtedy na pewno będzie chodzić.
Tutaj kolejność reguł ma kluczowe znaczenie.

Poza tym pokazuj na przyszłość, jak reguły wpadają doi FW, poleceniem:

Kod:

iptables -t {tablica} -S

dużo bardziej wyrazisty wynik wychodzi.

Do tego polecam moją  ulubioną zabaweczkę, miód-malinka:

Kod:

 iptables -t raw -S | grep wypad
-A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400
-A PREROUTING ! -i lo -p tcp -m multiport --dports 22,113,445,1433,1512,2175,2176,3306,5432 -j SET --add-set wypad src
-A PREROUTING -m set --match-set wypad src -j DROP

Powód?

Kod:

uptime
 14:47:08 up 41 min,  4 users,  load average: 0,13, 0,24, 0,31

Kod:

ipset list wypad
Name: wypad
Type: hash:net
Revision: 4
Header: family inet hashsize 1024 maxelem 65536 timeout 3600
Size in memory: 20000
References: 4
Members:
115.239.228.16/45 timeout 1517
115.239.228.16/38 timeout 84312
115.239.228.34/58 timeout 85912
115.239.228.34/55 timeout 3109
115.239.228.16/41 timeout 1514
115.239.228.34/61 timeout 3114
115.239.228.16/47 timeout 1519
115.239.228.34/56 timeout 85910
115.239.228.16/39 timeout 1512
115.239.228.16/43 timeout 1516
115.239.228.34/50 timeout 85905
115.239.228.34/51 timeout 3105
115.239.228.34/59 timeout 3112
115.239.228.16/44 timeout 84317
115.239.228.16/40 timeout 84314
115.239.228.34/57 timeout 3110
115.239.228.16/37 timeout 1511
115.239.228.16/33 timeout 1507
115.239.228.16/35 timeout 1509
117.21.176.107/48 timeout 2995
115.239.228.34/53 timeout 3107
115.239.228.34/54 timeout 85909
115.239.228.34/62 timeout 85915
115.239.228.16/46 timeout 84319
115.239.228.34/64 timeout 85917
186.96.81.56 timeout 1402
115.239.228.34/52 timeout 85907
115.239.228.16/34 timeout 84309
115.239.228.34/63 timeout 3115
115.239.228.16/36 timeout 84311
115.239.228.34/60 timeout 85914
115.239.228.34/49 timeout 3104
115.239.228.34/65 timeout 3117
115.239.228.16/42 timeout 84316

Taki wynik widzę pierwszy raz w życiu,  bez takiej zabaweczki chyba z każdym serwerem czy routerem  byłoby kiepsko. xD

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2015-03-16 14:49:59)


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

Offline

 

#3  2015-03-16 14:54:39

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables wyjątek

oki.
to teraz będzie lepiej

Kod:

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,60022 -j fail2ban-ssh
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -f -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i bond1 -p ospf -j ACCEPT
-A INPUT -p tcp -m set --match-set goodports dst -j ACCEPT
-A INPUT -p udp -m set --match-set goodports dst -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 28:4096 -j ACCEPT                                                                                                            
-A INPUT -p icmp -j ACCEPT                                                                                                                                                      
-A FORWARD -p udp -m set --match-set blokowani src -m udp --dport 53 -j ACCEPT                                                                                                  
-A FORWARD ! -d 10.10.232.0/25 -m set --match-set blokowani src -j DROP                                                                                                        
-A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP                                                                                         
-A FORWARD -f -j DROP                                                                                                                                                           
-A FORWARD -m state --state INVALID -j DROP                                                                                                                                     
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu                                                                                                  
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT                                                                                                                       
-A FORWARD -p tcp -m set --match-set bports src,dst -j DROP                                                                                                                     
-A FORWARD -p udp -m set --match-set bports src,dst -j DROP
-A FORWARD -p tcp -m tcp --dport 25 -m set --match-set smtp src -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 25 -m set --match-set smtp dst -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 25 -m recent --update --seconds 60 --name SMTP --rsource -j DROP
-A FORWARD -p tcp -m tcp --dport 25 -m recent --set --name SMTP --rsource -j ACCEPT
-A FORWARD -i ppp+ -o bond1 -j ACCEPT
-A FORWARD -i bond1 -o ppp+ -j ACCEPT
-A FORWARD -i ppp+ -o ppp+ -j ACCEPT
-A fail2ban-ssh -j RETURN

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -p tcp -m set --match-set blokowani src -m multiport --dports 80 -j DNAT --to-destination 10.10.232.30:88

to podążając za regółą z ipset blokowani.
w pierwszej rególe acceptowane są dnsy (ale coś mi mówi, że to nie potrzebne bo i po co, ale o tym później)
druga regóła powinna mi wszystkich blokowanych zdropować z wyjątkiem jeśli nie dobijają się do sieci 10.10.232.0/25 ale niestety blokuje wszystko :/

Ostatnio edytowany przez Nicram (2015-03-16 19:54:43)

Offline

 

#4  2015-03-16 15:03:08

  Jacekalex - Podobno człowiek...;)

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

Re: iptables wyjątek

A która regułka to ubija?

Weź zapuść debugowanie FW przez moduł TRACE w tablicy RAW, wtedy Ci wypisze, w logu, która regułka blokuje, i będziesz wiedział na 100%, czego szukać, co i dlaczego bruździ.
Sznurek:
http://backreference.org/2010/06/11/iptables-debugging/

Względnie ja bym tą regułkę:

Kod:

-A FORWARD ! -d 10.10.232.0/25 -m set --match-set blokowani src -j DROP

rozbił na dwie:

Kod:

-I FORWARD -d 10.10.232.0/25 - j ACCEPT

(na początku FORWARDÓW - pierwsza reguła), żeby inne filtry się nią nie zajmowały, a w środku dał na obecnym miejscu

Kod:

-A FORWARD  --match-set blokowani src -j DROP

będziesz miał ten sam efekt, ale pójdzie na 1500%, i ipset na pewno nie dopasuje seta blokowani, bo połączenie do 10.10.232.0/25 zostanie przepuszczone wcześniej, zanim ipset je w ogóle zobaczy.
Cele ACCEPT, DROP i REJECT kończą przetwarzanie pakietu, o tym też trzeba pamiętać.

Ostatnio edytowany przez Jacekalex (2015-03-16 15:12:22)


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

Offline

 

#5  2015-03-16 19:50:51

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables wyjątek

[quote=Jacekalex]A która regułka to ubija?[/quote]
ubija pewnie ta

Kod:

-A FORWARD ! -d 10.10.232.0/25 -m set --match-set blokowani src -j DROP

bo po wrzuceniu do seta ipka net nie działa ale prerouting z portu 80 na 88 działa wyśmienicie. Jeśli wpiszę w przeglądarce np www.wp.pl to widzę ładne przekierowanko na stronę z infem o blokadzie.
wiem, że rozdzielenie regułek pomoże, ale to nie jest rozwiązanie, to tylko ominięcie problemu. zgodznie z "książką" w taką regułkę nie powiny załapać się pakiety do sieci 10.10.232.0/25 i powinno zapiąć się na dalszych regułkach.

Ostatnio edytowany przez Nicram (2015-03-16 20:02:28)

Offline

 

#6  2015-03-17 02:41:08

  Jacekalex - Podobno człowiek...;)

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

Re: iptables wyjątek

Proponuję nie pisać "pewnie ta" tylko na pewno ta, po to właśnie jest debugowanie FW.
Bez szczegółowych logów  debugowania nie dowiesz się nawet, czemu te regułka dopasowuje inaczej, ni by wynikało z podręcznika.

Wygląda na to, że set blokowani dopasowuje każde połączenie, również na adresy 10.10.232.0/25, które regułka ma wyłączone z dopasowania, na Twoim miejscu nie chciało by mi  się kombinować, czy to bug czy feature, tylko po prostu bym rozwiązał problem najprostszym możliwym sposobem.

To jest w tablicy NAT, prawda?

Kod:

-A PREROUTING -p tcp -m set --match-set blokowani src -m multiport --dports 80 -j DNAT --to-destination 10.10.232.30:88

To rozdzielenie regułki rozwiąże wszystkie twoje problemy.

Sugerowałbym też wyrzucanie  przypomnienia nie za każdym połączeniem, tylko raz na 5 minut, albo wyłączyć z tego ograniczenia banki, bo jak komuś przypominasz, że nie zapłacił, to daj mu chociaż prawo zalogowania się do banku celem posłania przelewu.
To w Twoim dobrze pojętym interesie jest ważniejsze, niż problem, czy w FW będzie jedna regułka więcej. xD

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2015-03-17 02:46:54)


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

Offline

 

#7  2015-03-17 08:50:24

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables wyjątek

W sumie i racja. Po co zastanawiać się nad tym, czemu to nie działa a powinno.
Zrobie sobie nowy łańcuch do którego będę wrzucał sety i w łańcuchu całą resztę. Osiągnę tym to, iż "prawidłowe" pakiety nie będą musiały przechodzić przez wszystki z blokadami :)

Dzięki

Offline

 

#8  2015-03-17 13:43:45

  Jacekalex - Podobno człowiek...;)

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

Re: iptables wyjątek

Dodałbym tylko, że jak coś wpuszczasz, to lepiej na początku, zeby nie leciało przez 50 reguł blokujących różne śmiecie, bo każda musi sprawdzić wszystkie dopasowania, a FW ma być szybki i wydajny.

Dlatego też lepiej sobie podzielić robotę FW na łańcuchy, żeby też te drabinki dopasowań nie były za długie.


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

Offline

 

#9  2015-03-17 14:18:19

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables wyjątek

[quote=Jacekalex]Dodałbym tylko, że jak coś wpuszczasz, to lepiej na początku, zeby nie leciało przez 50 reguł blokujących różne śmiecie, bo każda musi sprawdzić wszystkie dopasowania, a FW ma być szybki i wydajny.

Dlatego też lepiej sobie podzielić robotę FW na łańcuchy, żeby też te drabinki dopasowań nie były za długie.[/quote]
Taki mam zamiar :)
dlatego też "upierałem" się przy jednej regółce zamiast dwóch, bo zaraz do wyjątków dojdą jeszcze banki i z dwóch zrobi się 20 a ucierpi tylko na tym kernel :)

Offline

 

#10  2015-03-17 14:26:38

  Jacekalex - Podobno człowiek...;)

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

Re: iptables wyjątek

Z bankami może być niezła jazda, jak chcesz je odblokować, bo to jest (banki stacjonarne, Skoki, Spółdzielcze i internetowe) razem z kilkadziesiąt stron, a każda, to może być nawet kilkanaście adresów IP, które czasem też się będą zmieniać.
Dlatego ja bym raczej proponował, żeby po np 10 minutach w sieci było kilka minut komunikatu, a potem znowu dostęp do sieci przez 10 minut.

Regułkami time FW możesz sprawę ogarnąć dużo prościej, niż whitelistowaniem banków, i poza tym do wysłania przelewu spokojnie wystarczy 512 kbit.


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

Offline

 

#11  2015-03-17 14:34:38

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: iptables wyjątek

[quote=Jacekalex]Z bankami może być niezła jazda, jak chcesz je odblokować, bo to jest (banki stacjonarne, Skoki, Spółdzielcze i internetowe) razem z kilkadziesiąt stron, a każda, to może być nawet kilkanaście adresów IP, które czasem też się będą zmieniać.
Dlatego ja bym raczej proponował, żeby po np 10 minutach w sieci było kilka minut komunikatu, a potem znowu dostęp do sieci przez 10 minut.

Regułkami time FW możesz sprawę ogarnąć dużo prościej, niż whitelistowaniem banków, i poza tym do wysłania przelewu spokojnie wystarczy 512 kbit.[/quote]
Jeśli chodzi o powiadamianie to wysyłamy smsy do ludzi - bardziej skutkuje.
Tu chodzi o całkowitą blokadę.


--------EDITED--------

Qrde, popełniałem szkolny błąd. Przepuszczałem forward tylko w jedną stronę :/ po dodaniu regółki forwardującej z drugiej strony zadziałało :)

Kod:

# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N blokada
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22,60022 -j fail2ban-ssh
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -f -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i bond1 -p ospf -j ACCEPT
-A INPUT -p tcp -m set --match-set goodports dst -j ACCEPT
-A INPUT -p udp -m set --match-set goodports dst -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 28:4096 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A FORWARD -f -j DROP
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m set --match-set blokowani src -j blokada
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m set --match-set bports src,dst -j DROP
-A FORWARD -p udp -m set --match-set bports src,dst -j DROP
-A FORWARD -p tcp -m tcp --dport 25 -m set --match-set smtp src -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 25 -m set --match-set smtp dst -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 25 -m recent --update --seconds 60 --name SMTP --rsource -j DROP
-A FORWARD -p tcp -m tcp --dport 25 -m recent --set --name SMTP --rsource -j ACCEPT
-A FORWARD -i ppp+ -o bond1 -j ACCEPT
-A FORWARD -i bond1 -o ppp+ -j ACCEPT
-A FORWARD -i ppp+ -o ppp+ -j ACCEPT
-A blokada -p udp -m udp --dport 53 -j ACCEPT
-A blokada -d 10.10.232.0/25 -j ACCEPT
-A blokada -s 10.10.232.0/25 -j ACCEPT
-A blokada -j DROP
-A fail2ban-ssh -j RETURN
# iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING ! -d 10.10.232.0/25 -p tcp -m set --match-set blokowani src -m multiport --dports 80,443 -j DNAT --to-destination 10.10.232.30:88

do tego jeszcze musiałem zrobić wyjątek w prerouting i vuala :)

ps. powstał tylko problem z https :/

Ostatnio edytowany przez Nicram (2015-03-18 08:57:23)

Offline

 

Stopka forum

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

[ Generated in 0.010 seconds, 14 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00091 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.143.235.104' WHERE u.id=1
0.00064 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.143.235.104', 1732430307)
0.00051 SELECT * FROM punbb_online WHERE logged<1732430007
0.00070 DELETE FROM punbb_online WHERE ident='3.144.45.187'
0.00079 DELETE FROM punbb_online WHERE ident='3.145.155.149'
0.00090 DELETE FROM punbb_online WHERE ident='54.36.149.52'
0.00044 SELECT topic_id FROM punbb_posts WHERE id=284723
0.00009 SELECT id FROM punbb_posts WHERE topic_id=27178 ORDER BY posted
0.00054 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=27178 AND t.moved_to IS NULL
0.00010 SELECT search_for, replace_with FROM punbb_censoring
0.00098 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=27178 ORDER BY p.id LIMIT 0,25
0.00080 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27178
Total query time: 0.00755 s