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  2017-05-24 17:14:28

  Maniec - Nowy użytkownik

Maniec
Nowy użytkownik
Zarejestrowany: 2017-05-24

Poprawność konfiguracji dla iptables

Witam chciałbym poprosić o pomoc/podpowiedź czy konfiguracja firewalla jest poprawna;

Kod:

#!/bin/sh
clear
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t raw -F
iptables -t raw -X
 
iptables -A INPUT -i lo -j ACCEPT
iptables -I INPUT -s 0.0.0.0 -j ACCEPT
iptables -I INPUT -s 127.0.0.1 -j ACCEPT
iptables -I INPUT -s 87.98.238.145 -j ACCEPT
iptables -I INPUT -s xxx -j ACCEPT
iptables -I INPUT -s 94.23.95.124 -j ACCEPT
 
iptables -A INPUT -p tcp -d xxx -m multiport --dports 3306,25588,25565,80,59640 -j DROP
 
iptables -A INPUT -p tcp -m tcp -i eth0 -d 87.98.238.145 -m multiport ! --dports 25565,80,59640 -j DROP
iptables -A INPUT -p udp -m udp -i eth0 -d 87.98.238.145  -j DROP
 
iptables -A INPUT -p tcp -m tcp -m state --state NEW -m recent --set --name TCP --rsource
iptables -A INPUT -p tcp -m tcp -m state --state NEW -m recent --update --seconds 1 --hitcount 5 --rttl --name TCP --rsource -j DROP
 
iptables -I INPUT -p tcp --dport 80 -m geoip ! --src-cc PL -m limit --limit 3/s --limit-burst 1 -j DROP
 
iptables -A INPUT -p tcp --dport 25565 -m connlimit --connlimit-above 2 -j DROP
iptables -A INPUT -p tcp --dport 59640 -m connlimit --connlimit-above 1 -j DROP
 
iptables -t nat -A PREROUTING -p tcp -i eth0 -d 87.98.238.145 -m geoip ! --src-cc PL --dport 25565 -j REDIRECT --to-port 59640
echo "Done!"

Teraz w skrócie co chcę osiągnąć:

- Zablokować poszczególne porty TCP do xxx - JEST OK
- Zablokować UDP do 87.98.238.145 - JEST OK
- Wylimitować trochę pakiety (SSyN i ogólny spam TCP dla obu adresów)  - JEST OK
- Jeśli na porcie 80 jest więcej połączeń niż 3/s z poza Polski to DROP - NIE JESTEM PEWIEN CZY DOBRZE
- Wylimitować max połączenia online do 1 i 2 na poszczególne porty - NIE JESTEM PEWIEN CZY DOBRZE
- Przekierować cały ruch z poza Polski z portu 25565 na port 59640 - NIE JESTEM PEWIEN CZY DOBRZE

Geoip zainstalowane poprawnie i działa, serwer mam w soyoustart więc blokowanie portów w panelu odpada bo nie ma tam takiej opcji.

xxx - główny adres serwera - eth0
87.98.238.145 - dodatkowy adres failover eth0:0 (skonfigurowany i działa poprawnie)

Co do przekierowania ruchu na inny port, działa ale swego czasu miałem tak że karta sieciowa się "resetowała" bo były jakieś błędy aktualnie ich nie mam bo występowało to przy większej ilości połączeń aktualnie ilość połączeń jest bardzo znikoma.

Dość chaotycznie się tutaj rozpisałem i za to z góry przepraszam, ale czy moglibyście podpowiedzieć co dodać lub zmienić a także czy w przypadku portów 25565 i 59640 dodać gdzieś ACCEPT dla ESTABLISHED i czy ogólnie kolejność reguł jest poprawna.


--
Z góry dziękuję i pozdrawiam.

Offline

 

#2  2017-05-24 21:46:34

  stepien86 - Członek DUG

stepien86
Członek DUG
Skąd: Łódź
Zarejestrowany: 2006-03-26

Re: Poprawność konfiguracji dla iptables

yy..a nie lepiej domyślnie ustawić DROP na wszystko a to co potrzeba puszczać? Mniej przeoczenia będzie mi się wydaje


manual ponad wszysytko....konsola ponad manual

Debian GNU Linux

Offline

 

#3  2017-05-24 22:16:22

  lis6502 - Łowca lamerów

lis6502
Łowca lamerów
Skąd: Stalinogród
Zarejestrowany: 2008-12-04

Re: Poprawność konfiguracji dla iptables

iptables -P INPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT                         #odblokuje se ruch na lokalhoście
iptables -I INPUT -s 127.0.0.1 -j ACCEPT              #i dla pewności jeszcze raz :P
iptables -I INPUT -s 0.0.0.0 -j ACCEPT               # co autor miał na myśli? XD[/quote]
Niechlujstwo, bałagan i bezsęs :P

Jak słuszne zauważył [b]stepien86[/b], polityki ustawić na DROP,mniej grzebania z regułami dropowania.
Zaneguj swoją logikę odnośnie firewalla i masz gotowy pomysł do wdrożenia ;)
Przekierowanie masz zrobione dobrze, pamiętaj tylko że jak łańcuch FORWARD jest na drop to musisz dopisać właśnie ACCEPT dla reguły z przekierowaniem. I wlączyć forwarding w kernelu :P
najlepiej na etapie pisania: dopisz swój adres IP z ktorego dzwonisz na maszynę na samą górę wszystkich regul jako ACCEPT, na łańcuchów zastosuj -j LOG i rób syntetyczne testy czy netcat na port 25565 przypadkiem nie pojawia się na 59640

Offline

 

#4  2017-05-25 20:25:34

  Maniec - Nowy użytkownik

Maniec
Nowy użytkownik
Zarejestrowany: 2017-05-24

Re: Poprawność konfiguracji dla iptables

[quote=lis6502]

iptables -P INPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT                         #odblokuje se ruch na lokalhoście
iptables -I INPUT -s 127.0.0.1 -j ACCEPT              #i dla pewności jeszcze raz :P
iptables -I INPUT -s 0.0.0.0 -j ACCEPT               # co autor miał na myśli? XD[/quote]
Niechlujstwo, bałagan i bezsęs :P

Jak słuszne zauważył [b]stepien86[/b], polityki ustawić na DROP,mniej grzebania z regułami dropowania.
Zaneguj swoją logikę odnośnie firewalla i masz gotowy pomysł do wdrożenia ;)
Przekierowanie masz zrobione dobrze, pamiętaj tylko że jak łańcuch FORWARD jest na drop to musisz dopisać właśnie ACCEPT dla reguły z przekierowaniem. I wlączyć forwarding w kernelu :P
najlepiej na etapie pisania: dopisz swój adres IP z ktorego dzwonisz na maszynę na samą górę wszystkich regul jako ACCEPT, na łańcuchów zastosuj -j LOG i rób syntetyczne testy czy netcat na port 25565 przypadkiem nie pojawia się na 59640[/quote]
A jak wygląda sytuacja w przypadku kolejności reguł?
DROP ALL TCP, ACCEPT 25565, REGUŁA OD LIMITÓW SSYN

Reguła od limitu ma DROP i nie pogryzie się to z wcześniejszym ACCEPT?

Ostatnio edytowany przez Maniec (2017-05-25 20:27:26)

Offline

 

#5  2017-05-25 22:46:00

  lis6502 - Łowca lamerów

lis6502
Łowca lamerów
Skąd: Stalinogród
Zarejestrowany: 2008-12-04

Re: Poprawność konfiguracji dla iptables

Łancuchy procesowane są z góry do dołu. Możesz dopieścić firewalla, a na końcu wrzucić [tt]-I INPUT -j DROP[/tt] i żaden pakiet Ci nie przyjdzie.
[url=https://www.youtube.com/watch?v=wkPqV-SCA8U]Zajrzyj tutaj[/url] xD. Przyjmijmy dla uproszczenia że każdy z tych ziomeczków to jedna regula w łańcuchu FORWARD.
Reguły nie są zbyt wyszukane bo wszędzie po kolei masz -j ACCEPT, ale gdyby powiedzmy trzeci od początku był na DROP to kolejne ACCEPTy nie mają znaczenia dla nadchodzących ananasów xD

Polecam postawić sobie wirtualke i na niej męczyć reguły, z logowaniem włącznie. W celach edukacyjnych nawet zapuśc sobie [tt]gufw[/tt], taki klikacz dla konsolofobów, może w ten sposób zasadza działania iptables będzie bardziej namacalna ;)

Ostatnio edytowany przez lis6502 (2017-05-25 22:50:37)

Offline

 

#6  2017-05-26 12:10:14

  Maniec - Nowy użytkownik

Maniec
Nowy użytkownik
Zarejestrowany: 2017-05-24

Re: Poprawność konfiguracji dla iptables

[quote=lis6502]Łancuchy procesowane są z góry do dołu. Możesz dopieścić firewalla, a na końcu wrzucić [tt]-I INPUT -j DROP[/tt] i żaden pakiet Ci nie przyjdzie.
[url=https://www.youtube.com/watch?v=wkPqV-SCA8U]Zajrzyj tutaj[/url] xD. Przyjmijmy dla uproszczenia że każdy z tych ziomeczków to jedna regula w łańcuchu FORWARD.
Reguły nie są zbyt wyszukane bo wszędzie po kolei masz -j ACCEPT, ale gdyby powiedzmy trzeci od początku był na DROP to kolejne ACCEPTy nie mają znaczenia dla nadchodzących ananasów xD

Polecam postawić sobie wirtualke i na niej męczyć reguły, z logowaniem włącznie. W celach edukacyjnych nawet zapuśc sobie [tt]gufw[/tt], taki klikacz dla konsolofobów, może w ten sposób zasadza działania iptables będzie bardziej namacalna ;)[/quote]

Kod:

iptables -P INPUT DROP
- #DROPIE ALL

iptables -A INPUT -i lo -j ACCEPT
- #ACCEPT LOCALA

iptables -A INPUT -p tcp -s xxx --dport 59640 -j ACCEPT
iptables -A INPUT -p tcp -s 87.98.238.145 --dport 25565 -j ACCEPT
- #ACCEPT PORTU 25565 i portu SSH (59640)

iptables -A INPUT -p tcp -m state --state NEW -m recent --set --name TCP --rsource
iptables -A INPUT -p tcp -m state --state NEW -m recent --update --seconds 1 --hitcount 5 --rttl --name TCP --rsource -j DROP
- #LIMIT W RAZIE SPAMU

Zawsze wydawało się że jeśli jest ACCEPT to po tym "kod" zatrzymuje jak return;
Czyli jak zrobię coś jak wyżej to reguła od spamu zadziała?

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.012 seconds, 15 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00003 SET NAMES latin2
0.00128 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='18.118.19.123' WHERE u.id=1
0.00056 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.118.19.123', 1732725595)
0.00049 SELECT * FROM punbb_online WHERE logged<1732725295
0.00061 DELETE FROM punbb_online WHERE ident='185.191.171.17'
0.00060 DELETE FROM punbb_online WHERE ident='3.14.132.178'
0.00279 DELETE FROM punbb_online WHERE ident='57.141.0.6'
0.00057 DELETE FROM punbb_online WHERE ident='85.208.96.202'
0.00069 SELECT topic_id FROM punbb_posts WHERE id=310943
0.00077 SELECT id FROM punbb_posts WHERE topic_id=29604 ORDER BY posted
0.00032 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=29604 AND t.moved_to IS NULL
0.00025 SELECT search_for, replace_with FROM punbb_censoring
0.00049 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=29604 ORDER BY p.id LIMIT 0,25
0.00088 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29604
Total query time: 0.01043 s