Creați propriul firewall cu iptables folosind acest script simplu

M-am gândit la două lucruri despre iptables pentru o vreme: majoritatea celor care caută aceste tutoriale sunt începători și, în al doilea rând, mulți caută deja ceva destul de simplu și deja elaborat.

Acest exemplu este pentru un server web, dar puteți adăuga cu ușurință mai multe reguli și le puteți adapta la nevoile dvs.

Când vedeți modificarea „x” pentru IP-urile dvs.


#!/bin/bash

# Curățăm tabelele iptables -F iptables -X # Curățăm NAT iptables -t nat -F iptables -t nat -X # tabla mangle pentru lucruri precum PPPoE, PPP și ATM iptables -t mangle -F iptables -t mangle -X # Politici Cred că acesta este cel mai bun mod pentru începători și # încă nu este rău, voi explica ieșirea (ieșirea) toate, deoarece acestea sunt conexiuni de ieșire #, intrare aruncăm totul și niciun server nu ar trebui să redirecționeze. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. Tot ceea ce este deja conectat (stabilit) este lăsat astfel: iptables -A INPUT -m state --state STABILIT, RELATAT -j ACCEPT # Buclă dispozitiv. iptables -A INPUT -i lo -j ACCEPT # http, https, nu specificăm interfața deoarece # vrem să fie toate iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh numai intern și din această gamă de iptables ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # monitorizare de exemplu dacă au zabbix sau alte servicii iptables snmp -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping bine depinde de tine iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql cu postgres este portul 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh dacă doriți să trimiteți câteva mailuri iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - IP-ul real wan al serverului dvs. LAN_RANGE = "192.168.xx / 21 „Gama # LAN a rețelei sau a IP-urilor dvs. vlan care nu ar trebui să intre niciodată în extranet,este să folosim un pic de # logică dacă avem o interfață pur WAN, nu ar trebui să introducă niciodată # trafic de tip LAN prin acea interfață SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# Acțiune implicită - de efectuat atunci când orice regulă se potrivește cu ACTION =" DROP "# Pachete cu aceeași IP a serverului meu prin iptables wan -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Pachete cu gama LAN pentru wan, am pus-o așa în cazul în care aveți # o anumită rețea, dar aceasta este redundantă cu următoarea # regulă în interior bucla "pentru" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Toate rețelele SPOOF nu sunt permise de WAN pentru ip în $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION done

Ca întotdeauna aștept comentariile dvs., rămâneți la curent cu acest blog, vă mulțumesc