Bazandu-ma pe Linux IP Masquerade HOWTO si pe alte how-to-uri de securitate am scris un script care se numeste e-Firewall
Este menit sa va ajute in configurarea mai facila a firewall-ului pentru un server linux de acasa.
Am pornit de la ideea ca acesta este in primul rand un router. Conectarea la internet se face prin ADSL/PPPoE si interfata este ppp+ (poate fi ppp0 ppp1 samd.
Editati scriptul si modificati EXTIF cu informatiile necesare. Interfata interna este INTIF. Modificati scriptul cu informatiile necesare. Variabila ENABLE_MASQ va activa sau nu mascaradarea (puneti pe altceva decat yes daca calculatorul nu va fi router). In variabila IPS_WITH_INTERNET_ACCESS trebuiesc specificate IP-urile, clasele de ip-uri care au acces la internet. Vor fi trecute separat prin spatii.
In variabila REDIRECT_TO_PROXY specificati daca traficul HTTP va fi redirectat prin proxy-ul care ruleaza pe interfata interna pe portul PROXY_PORT. Atentie pentru aceasta trebuie sa aveti configurat un proxy transparent (squid sau privoxy).
In variabila ENABLE_ICMP se defineste accesul la pachete icmp(ping).
Pentru a permite conexiuni de pe anumite masini pe anumite porturi vom definii:
PORT_OPEN_TCP sau PORT_OPEN_UDP. Acestea sunt variabile de tip vector. Definiti PORT_OPEN_TCP[0], 1 ,2 samd. Atentie definirea se face consecutiv. Daca se intrerupe numerotarea tot ce este dupa intrerupere este ignnorat.
Se defineste PORT_OPEN_TCP[0]=”22 FROM 192.168.0.1″. FROM trebuie sa fie cu litere mari. Inainte de from se defineste portul/porturile pe care se accepta conexiuni iar dupa FROM se definesc ip-urile, clasele de ip-uri de unde vor fi acceptate.
Redirectionari de porturi: de multe ori programe de gen DC++ sau jocuri au nevoie de porturi active pentru conectarea la internet. Redirectarile se definesc ca si la conexiuni acceptate in vectorul PORT_REDIRECT_TCP. Se defineste in forma PORT_REDIRECT_TCP[0]=”5900 TO 192.168.0.2:5800″. Portul public 5900 se va duce pe ip-ul privat 192.168.0.2 pe portul 5800. Se pot definii simultan mai multe porturi care sa fie redirectate catre o anumita masina, de ex 5900:6000, va redirecta toate porturile intre 5900 si 6000.
Variabila SYN_OPTIONS se refera la protectia anti-flood, cate pachete/secunda sa accepte. Daca primeste mai multe acestea vor fi ignorate si in syslog vor aparea informatiile despre atacatori.
Variabila PORTSCAN_OPTIONS se refera la optiunile de detectare a scanarilor de porturi. La fel aceste incercari se vor regasii in syslog.
Atentie! toate serviciile au acces implicit de pe localhost(127.0.0.1) si catre locahost(127.0.01.)
Pe un sistem RedHat Fedora sau CentOS scriptul poate fi copiat in /etc/init.d/ si cu comanda chkconfig se poate pune sa porneasca automat. Pe un sistem bazat pe Debian(Ubuntu de ex.) puteti da comanda “update-rc.d e-firewall defaults”.
Scriptul poate fi apelat si cu parametru status si numele lantului iptables (ex. ./e-firewall status TCP-PORT-80) si va afisa informatii actualizate la o secunda despre transferurile de date prin regulile firewall-ului.
Multumesc lui Canarau Constantin pentru ideile bune aduse legate de flood si de portscan precum si de cele legate de modul in care se face definirea port-urilor/ip-urilor.
Astept sugestii pe e-mail la emil@cheriches.ro.
Codul aici