Prezantimi
Parakushtet
Hapi 1: Përcaktoni shërbimet dhe portat e përdorura në serverin tuaj
Hapi 2: Konfiguro rregullat iptables
Hapi 3: Ruani konfigurimet
Zgjidhje për bllokimin aksidental
Prezantimi
Një mur zjarri është një lloj mjeti sigurie rrjeti që kontrollon trafikun e rrjetit hyrës dhe dalës sipas grupit të rregullave të paracaktuara. Ne mund të përdorim një mur zjarri së bashku me masa të tjera sigurie për të mbrojtur serverët tanë nga prijet dhe sulmet e hakerëve.
Dizajni i një muri zjarri mund të jetë ose harduer i dedikuar ose një program softuer që ekzekutohet në makinën tonë. Në CentOS 6, programi i parazgjedhur i murit të zjarrit është iptables.
Në këtë artikull, unë do t'ju tregoj se si të konfiguroni një mur bazë të zjarrit iptables bazuar në aplikacionin Vultr "WordPress në CentOS 6 x64", i cili do të bllokojë të gjithë trafikun, përveç shërbimeve të uebit, SSH, NTP, DNS dhe ping. Megjithatë, ky është vetëm një konfigurim paraprak që plotëson nevojat e përbashkëta të sigurisë. Ju do të keni nevojë për një konfigurim më të sofistikuar të iptables nëse keni kërkesa të mëtejshme.
Shënim :
Nëse shtoni një adresë IPv6 në serverin tuaj, duhet të konfiguroni gjithashtu shërbimin ip6tables. Konfigurimi i tabelave ip6 është jashtë qëllimit të këtij neni.
Ndryshe nga CentOS 6, iptables nuk është më programi i parazgjedhur i murit të zjarrit në CentOS 7 dhe është zëvendësuar me një program të quajtur firewalld. Nëse po planifikoni të përdorni CentOS 7, do t'ju duhet të konfiguroni murin e zjarrit duke përdorur firewalld.
Parakushtet
Vendosni rishtas një shembull serveri me aplikacionin Vultr "WordPress në CentOS 6 x64", më pas identifikohuni si rrënjë.
Hapi 1: Përcaktoni shërbimet dhe portat e përdorura në serverin tuaj
Unë supozoj se ky server do të presë vetëm një blog WordPress dhe nuk do të përdoret si një ruter ose do të ofrojë shërbime të tjera (për shembull, postë, FTP, IRC, etj.).
Këtu na duhen shërbimet e mëposhtme:
- HTTP (TCP në portën 80)
- HTTPS (TCP në portën 443)
- SSH (TCP në portin 22 si parazgjedhje, mund të ndryshohet për qëllime sigurie)
- NTP (UDP në portën 123)
- DNS (TCP dhe UDP në portën 53)
- ping (ICMP)
Të gjitha portet e tjera të panevojshme do të bllokohen.
Iptables kontrollon trafikun me një listë rregullash. Kur paketat e rrjetit dërgohen në serverin tonë, iptables do t'i inspektojë ato duke përdorur çdo rregull në sekuencë dhe do të ndërmarrë veprime në përputhje me rrethanat. Nëse një rregull përmbushet, rregullat e tjera do të shpërfillen. Nëse nuk plotësohen rregulla, iptables do të përdorë politikën e paracaktuar.
I gjithë trafiku mund të kategorizohet si INPUT, OUTPUT dhe FORWARD.
- Trafiku INPUT mund të jetë ose normal ose me qëllim të keq, duhet të lejohet në mënyrë selektive.
- Trafiku OUTPUT konsiderohet normalisht i sigurt dhe duhet lejuar.
- Trafiku FORWARD është i padobishëm dhe duhet të bllokohet.
Tani, le të konfigurojmë rregullat iptables sipas nevojave tona. Të gjitha komandat e mëposhtme duhet të futen nga terminali juaj SSH si rrënjë.
Kontrolloni rregullat ekzistuese:
iptables -L -n
Lani të gjitha rregullat ekzistuese:
iptables -F; iptables -X; iptables -Z
Meqenëse ndryshimet në konfigurimin e iptables do të hyjnë në fuqi menjëherë, nëse konfiguroni gabim rregullat e iptables, mund të bllokoheni nga serveri juaj. Ju mund të parandaloni bllokimet aksidentale me komandën e mëposhtme. Mos harroni të zëvendësoni [Your-IP-Address]me adresën tuaj IP publike ose gamën e adresave IP (për shembull, 201.55.119.43 ose 201.55.119.0/24).
iptables -A INPUT -s [Your-IP-Address] -p tcp --dport 22 -j ACCEPT
Lejo të gjithë trafikun e kthimit (loopback) dhe lësho të gjithë trafikun në 127.0.0.0/8 ndryshe nga loja:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -j REJECT
Blloko disa sulme të zakonshme:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Prano të gjitha lidhjet hyrëse të vendosura:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Lejo trafikun hyrës HTTP dhe HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Lejo lidhjet SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Lejo lidhjet NTP:
iptables -A INPUT -p udp --dport 123 -j ACCEPT
Lejo pyetjet DNS:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Lejo ping:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Më në fund, vendosni politikat e paracaktuara:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
Hapi 3: Ruani konfigurimet
Secili nga ndryshimet që kemi bërë më sipër kanë hyrë në fuqi, por nuk janë të përhershme. Nëse nuk i ruajmë në hard disk, ato do të humbasin pasi sistemi të riniset.
Ruani konfigurimin iptables me komandën e mëposhtme:
service iptables save
Ndryshimet tona do të ruhen në skedar /etc/sysconfig/iptables. Ju mund të rishikoni ose modifikoni rregullat duke redaktuar atë skedar.
Zgjidhje për bllokimin aksidental
Nëse jeni bllokuar nga serveri juaj për shkak të një gabimi konfigurimi, mund të rifitoni përsëri aksesin tuaj me disa zgjidhje.
- Nëse nuk i keni ruajtur ende modifikimet tuaja në rregullat iptables, mund të rinisni serverin tuaj nga ndërfaqja e faqes së internetit Vultr, atëherë ndryshimet tuaja do të hiqen.
- Nëse i keni ruajtur ndryshimet tuaja, mund të identifikoheni në serverin tuaj përmes tastierës nga ndërfaqja e faqes së internetit Vultr dhe të futni
iptables -Fpër të pastruar të gjitha rregullat iptables. Pastaj mund të vendosni përsëri rregullat.