Sziasztok, sajnos kicsit belekavarodtam a tűzfalam beállításába, kellene egy kis segítség.
leírások alapján eddig eljutottam de sajnos a nyitott portokon nem érek el semmi (se SSH se web)
#!/bin/bash
# Flushing all rules
iptables -F
# iptables -X
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Allow unlimited traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# FTP passive ports
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
# DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Allow incoming SSH on main IP only
iptables -A INPUT -p tcp -d xxx.xxx.xxx.xxx --dport 26482 -j ACCEPT
# MAIL
iptables -A INPUT -p tcp --dport 25 -j ACCEPT # SMTP
iptables -A INPUT -p tcp --dport 110 -j ACCEPT # POP3
iptables -A INPUT -p tcp --dport 143 -j ACCEPT # IMAP
iptables -A INPUT -p tcp --dport 465 -j ACCEPT # Secure SMTP (SSMTP)
iptables -A INPUT -p tcp --dport 585 -j ACCEPT # Secure IMAP (IMAP4-SSL)
iptables -A INPUT -p tcp --dport 587 -j ACCEPT # SMTP (Message submission)
iptables -A INPUT -p tcp --dport 993 -j ACCEPT # IMAP4 over SSL (IMAPS)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT # Secure POP3 (SSL-POP)
# NTP
iptables -A INPUT -p udp --sport 123 -j ACCEPT
# WEB
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# Plesk Control Panel
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8447 -j ACCEPT
# Plesk license activate
iptables -A INPUT -p tcp -s 64.131.90.38 --sport 5224 -j ACCEPT
# PING
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
# Allow established
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log all other incoming
iptables -A INPUT -j LOG --log-prefix "PF: filter/input DROP "
Tehát minden forgalmat tiltani akarok, csak a felsoroltakat engedni. Mit rontottam el?
- 5038 megtekintés
Hozzászólások
nem engeded ki a valaszt.
- A hozzászóláshoz be kell jelentkezni
Hiába teszem az OUTPUT-hoz a default ACCEPT-et, nem működik. Aki tud plíz help!
- A hozzászóláshoz be kell jelentkezni
Több sebből is erősen vérzik ez a tűzfal.
Csak szemezgetve, és a hibatípusokra rámutatva:
1.) Ha már vannak nyomai a stateful firewall beállításnak (-m state), akkor érdemes lenne a többi helyen is alkalmazni.
Ezzel vélhetőleg megoldódna a jelenlegi problémád is, illetve elkerülhető lenne az összes olyan borzalom, mint ahogy most az FTP miatt nyitva a negyed TCP porttartomány.
2.) Tényleg ilyen nagy forgalmú FTP site lesz, ahol ennyi egyidejű adatcsatornára van szükség? (16383)
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
2.) Amit nem stateful módon kezelsz, arról mindkét irányban rendelkezni kell. (INPUT és OUTPUT is)
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
3.) Alapvetően rossz megközelítésben, rossz irányban lévő, és rossz szabályok vannak. (pl. OUTPUT+sport+NEW, vagy az INPUT+sport)
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 64.131.90.38 --sport 5224 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
4.) Hiányos szabályok vannak. (pl. DNS TCP-n, fontos ICMP típusok)
Javaslom, próbáld átgondolni, hogy az adott szolgáltatáshoz milyen protokoll kell, az milyen hálózati forgalmat generál, és erra alapozva írd meg a szabályokat. Ha stateful módon teszed ezt, jelentősen egyszerűbb lesz a dolgod, és a tűzfalad a jelenleginél biztonságosabb.
"sajnos a nyitott portokon nem érek el semmi (se SSH se web)"
Azt írtad, bekerült az OUTPUT-ba is az ESTABLISHED és a RELATED, illetve a default policyt is átállítottad ACCEPT-re, tehát a kimenő csomagok problémáját tünetileg kezelted. Így össze kellene állnia a kapcsolatnak.
- A tcpdump mit mond, miközben megszólítod? (tcpdump -nvvvi eth0 port 80 or port 443 or port 26482)
- Látszik valami érdekes a logban? Ha ehhez hasonlóan beteszel a problémás forgalomra logolást, ott látszanak a csomagok?
- A számlálók mit mutatnak? (iptables -nvL)
- Nincs egyéb hálózati gond? Pl. név szerint akarod megszólítani, de a DNS nem jó?
- Valóban hallgat ezenken a portokon a webszerver, és az SSH daemon?
- Nem maradt régi próbából véletlen NAT szabály, ami ezt érintené? (iptables -t nat -nvL)
stb.
- A hozzászóláshoz be kell jelentkezni
Az iptables -P OUTPUT DROP -al minden választ blokkolsz.
Elsőre úgy tűnt, hogy legalább a webnek működnie kéne:
iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
De szerintem ez sem jó, mert a syn packetre válasz syn,ack se nem NEW se nem ESTABLISHED
Szóval, vagy kiveszed az elejéről az iptables -P OUTPUT DROP szabályt, vagy csinálsz hozzá "jó" OUTPUT kivételeket.
- A hozzászóláshoz be kell jelentkezni
Igen, annyit csináltam hogy az elején -P OUTPUT ACCEPT de nem lett jó.
Ha ezt hozzáadtam mi kell még hozzá hogy kifelé mehessenek a csomagok?
- A hozzászóláshoz be kell jelentkezni
Ez megoldhatja szerinted a kimeneti gondokat?
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- A hozzászóláshoz be kell jelentkezni
Szerintem nem, a RELATED az arra jó, hogy egy másik kapcsolat protokoll elemzése alapján (pl.: FTP) engedélyez egy újat.
- A hozzászóláshoz be kell jelentkezni
Nem került/maradt benne valami más szabály is? Tudnál írni egy iptables -L -v -n kimenetet?
- A hozzászóláshoz be kell jelentkezni
Ha lefuttatom, kidob SSH-ból sajnos nem tudom bemásolni. :(
Itt tartok most, sajnos nem értem hol rontom el:
#!/bin/bash
# Flushing all rules
iptables -F
# Setting default filter policy
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Allow unlimited traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# FTP passive ports
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
# DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Allow incoming SSH on main IP only
iptables -A INPUT -p tcp -d xxx.xxx.xxx.xxx --dport 22 -j ACCEPT
# MAIL
iptables -A INPUT -p tcp --dport 25 -j ACCEPT # SMTP
iptables -A INPUT -p tcp --dport 110 -j ACCEPT # POP3
iptables -A INPUT -p tcp --dport 143 -j ACCEPT # IMAP
iptables -A INPUT -p tcp --dport 465 -j ACCEPT # Secure SMTP (SSMTP)
iptables -A INPUT -p tcp --dport 585 -j ACCEPT # Secure IMAP (IMAP4-SSL)
iptables -A INPUT -p tcp --dport 587 -j ACCEPT # SMTP (Message submission)
iptables -A INPUT -p tcp --dport 993 -j ACCEPT # IMAP4 over SSL (IMAPS)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT # Secure POP3 (SSL-POP)
# NTP
iptables -A INPUT -p udp --sport 123 -j ACCEPT
# WEB
iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# Plesk Control Panel
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -p tcp --dport 8447 -j ACCEPT
# Plesk license activate
iptables -A INPUT -p tcp -s 64.131.90.38 --sport 5224 -j ACCEPT
# PING
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
# Let all related connections in
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Let all related connections out
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log all other incoming
iptables -A INPUT -j LOG --log-prefix "PF: filter/input DROP "
- A hozzászóláshoz be kell jelentkezni
Egyszerűsíts kicsit, ne akarj egyszerre mindent megérteni, mert nem fog menni.
Az ftp se passzívnak se aktívnak nem jó és többet enged helyből, mint ami valóban kell. A related az nem az amit keresel, az a többcsatornás protokollokhoz kell mint pl az ftp.
Nézd meg ezt és hasonlítsd össze a tiéddel. Próbáld ki hátha segít. (Előtte figyelj a megfelelő ip cím tartományokra értelem szerint.)
Az iptables szabályok sorrendje nem szépség vagy nagyság szerint állítandó össze. Amilyen sorrendben feltöltöd a szabályokat abban a sorrendben fogja a kernel végrehajtani a csomagokon. Ezt szokás úgy is hívni, hogy "first match" elv, azaz az első illeszkedésnél nem jut tovább a csomag.
Linuxscripting
- A hozzászóláshoz be kell jelentkezni
A linkelt anyagból kiindulva jelenleg itt tartok, ezzel menni fog a passzív FTP?
# Flushing all rules
iptables -F
iptables -X
# Default chain policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# LOCAL
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# ACCEPT earlier connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "IPFW: Possible portscan: "
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# HTTP and HTTPS
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
# MAIL
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # SMTP
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT # POP3
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT # IMAP
iptables -A INPUT -m state --state NEW -p tcp --dport 465 -j ACCEPT # Secure SMTP (SSMTP)
iptables -A INPUT -m state --state NEW -p tcp --dport 585 -j ACCEPT # Secure IMAP (IMAP4-SSL)
iptables -A INPUT -m state --state NEW -p tcp --dport 587 -j ACCEPT # SMTP (Message submission)
iptables -A INPUT -m state --state NEW -p tcp --dport 993 -j ACCEPT # IMAP4 over SSL (IMAPS)
iptables -A INPUT -m state --state NEW -p tcp --dport 995 -j ACCEPT # Secure POP3 (SSL-POP)
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
# DNS
iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# FTP
iptables -A INPUT -m state --state NEW -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
# FTP passive ports
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
# SSH (allow for main IP only)
iptables -A INPUT -p tcp -d xxx.xxx.xxx.xxx --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
# NTP
iptables -A INPUT -p udp --sport 123 -j ACCEPT
# PING
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
# Plesk Control Panel
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
# Plesk license activate
iptables -A INPUT -p tcp -s 64.131.90.38 --sport 5224 -j ACCEPT
# LOG other
# iptables -A INPUT -j LOG --log-prefix "IPFW: INPUT DROP:"
# iptables -A OUTPUT -j LOG --log-prefix "IPFW: OUTPUT DROP:"
- A hozzászóláshoz be kell jelentkezni
Két esetben működne a passzív FTP ezekkel a szabályokkal:
- Ha be lenne töltve az nf_conntrack_ftp modul a RELATED szabályok miatt (és akkor nem kell megengedni sem a 20-as, sem a passzív FTP "adat" portokat).
- Vagy ha az FTP szerver programot konfiguráltad, hogy a megadott port tartományt használja.
Ha egyik sem teljesül, akkor nem működik az FTP.
- A hozzászóláshoz be kell jelentkezni
*
- A hozzászóláshoz be kell jelentkezni