Како да поставите основен заштитен ѕид на Iptables на Centos 6
Статус: застарен
Оваа статија опфаќа верзија на CentOS која повеќе не е поддржана. Ако моментално управувате со сервер со CentOS 6, топло ви препорачуваме надградба или мигрирање на поддржана верзија на CentOS.
Причина:
Видете наместо тоа:
- Iptables Essentials: вообичаени правила и команди за заштитен ѕид
- Како работи заштитниот ѕид на Iptables.
- Како да поставите заштитен ѕид користејќи FirewallD на CentOS 7
Вовед
Оваа статија ќе покаже како да креирате едноставен заштитен ѕид на Centos VPS. Ќе ги отвори само портите што ги сакаме и ќе ги затвори другите услуги. Исто така, ќе покажам како да спречите поедноставни напади и како да се вратите во VPS ако случајно го одбиете пристапот до себе.
Упатството во никој случај не е исцрпно и само покажува како да отворите неколку дојдовни порти: за apache, SSH и е-пошта и да ги затворите сите други. Нема да блокираме никаков појдовен сообраќај и само ќе создадеме неколку највообичаени правила за блокирање на вообичаените скрипти и ботови кои бараат ранливи VPS.
iptables е едноставен заштитен ѕид инсталиран на повеќето дистрибуции на Linux. Упатството за Линукс за iptables вели дека е административна алатка за IPv4 филтрирање пакети и NAT, што во превод значи дека е алатка за филтрирање и блокирање на интернет сообраќајот . Заштитниот ѕид на iptables е стандардно вклучен во сликите на Centos 6.4 Linux обезбедени од DigitalOcean.
Ние ќе поставиме заштитен ѕид едно по едно правило. За да поедноставиме: заштитниот ѕид е листа на правила, така што кога е отворена дојдовна врска, ако се совпаѓа со некое од правилата, ова правило може да ја прифати таа врска или да ја одбие. Ако не се исполнети правила, го користиме стандардното правило.
Забелешка: Овој туторијал ја опфаќа безбедноста на IPv4. Во Linux, безбедноста на IPv6 се одржува одделно од IPv4. На пример, \iptables\ одржува само правила за заштитен ѕид за IPv4 адреси, но има пандан на IPv6 наречен \ip6tables\, кој може да се користи за одржување на правилата за заштитен ѕид за IPv6 мрежните адреси.
Ако вашиот VPS е конфигуриран за IPv6, не заборавајте да ги обезбедите и вашите IPv4 и IPv6 мрежни интерфејси со соодветни алатки. За повеќе информации за IPv6 алатките, погледнете го ова упатство: Како да ги конфигурирате алатките за користење IPv6 на Linux VPS
Одлучете кои пристаништа и услуги да се отворат
За почеток, сакаме да знаеме кои услуги сакаме да ги отвориме за јавноста. Да го користиме типичниот веб-хостинг сервер: тој е веб-сервер и е-пошта, а ние исто така треба да се пуштиме преку SSH-серверот.
Прво, сакаме да ја оставиме SSH портата отворена за да можеме да се поврземе со VPS од далечина: тоа е порта 22.
Исто така, потребни ни се портите 80 и 443 (SSL порта) за веб сообраќај. За испраќање е-пошта, ќе ги отвориме портите 25 (обичен SMTP) и 465 (безбеден SMTP). За да им дозволиме на корисниците да примаат е-пошта, ќе ги отвориме вообичаените порта 110 (POP3) и 995 (безбедна порта POP3).
Дополнително, добро отворете ги IMAP портите, ако ги имаме инсталирано: 143 за IMAP и 993 за IMAP преку SSL. Забелешка: Се препорачува да се дозволуваат само безбедни протоколи, но тоа можеби не е опција, ако не можеме да влијаеме корисниците на е-пошта да ги променат своите клиенти за е-пошта.
Блокирајте ги најчестите напади
DigitalOcean VPS обично доаѓаат со празна конфигурација: целиот сообраќај е дозволен. Само за да се увериме во ова, можеме да ги исчистиме правилата за заштитен ѕид - односно да ги избришеме сите:
iptables -F
Потоа можеме да додадеме неколку едноставни правила за заштитен ѕид за да ги блокираме најчестите напади, за да го заштитиме нашиот VPS од скрипта-деца. Навистина не можеме да сметаме само на iptables за да не заштити од целосен DDOS или слично, но можеме барем да ги одложиме вообичаените мрежни ботови за скенирање кои на крајот ќе го најдат нашиот VPS и ќе почнат да бараат безбедносни дупки за експлоатација. Прво, започнуваме со блокирање на нула пакети.
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
Му рековме на заштитниот ѕид да ги земе сите дојдовни пакети со tcp знаменца НИЕДЕН и само да ги испушти. Нулти пакети се, едноставно кажано, пакети за преконтролирање. Шаблоните за напад ги користат овие за да се обидат да видат како го конфигуриравме VPS и да ги откриеме слабостите. Следниот шаблон што треба да се одбие е напад со син-поплава.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Божиќни пакети, исто така пакет за реконструкција.
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Исклучивме барем некои од вообичаените обрасци кои наоѓаат ранливост во нашиот VPS.
Отворете порти за избраните услуги
Сега можеме да почнеме да додаваме избрани услуги на нашиот филтер за заштитен ѕид. Првото такво нешто е интерфејсот на локален хост:
iptables -A INPUT -i lo -j ACCEPT
Им кажуваме на iptables да додадат (-A) правило на дојдовната (INPUT) филтер табела секој сообраќај што доаѓа до интерфејсот на локалниот хост (-i lo) и да го прифатат (-j ACCEPT). Localhost често се користи за, т.е. вашата веб-страница или сервер за е-пошта што комуницира со локално инсталирана база на податоци. На тој начин нашиот VPS може да ја користи базата на податоци, но базата на податоци е затворена за експлоатирања од интернет.
Сега можеме да дозволиме сообраќај на веб-серверот:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Ги додадовме двете порти (http порта 80 и https порта 443) во ланецот ACCEPT - овозможувајќи сообраќај во тие порти. Сега, да им дозволиме на корисниците да ги користат нашите SMTP сервери:
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
Како што беше наведено претходно, ако можеме да влијаеме на нашите корисници, попрво треба да ја користиме безбедната верзија, но честопати не можеме да ги диктираме условите и клиентите ќе се поврзат преку портата 25, што е многу полесно да се шмркаат лозинките. Сега продолжуваме да им дозволуваме на корисниците да читаат е-пошта на нивниот сервер:
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
Тие две правила ќе овозможат сообраќај POP3. Повторно, можеме да ја зголемиме безбедноста на нашиот сервер за е-пошта само со користење на безбедната верзија на услугата. Сега, исто така, треба да дозволиме протокол за пошта IMAP:
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
Ограничување на SSH пристапот
Треба да дозволиме и SSH сообраќај, за да можеме да се поврземе со VPS од далечина. Едноставен начин да го направите тоа би бил со оваа команда:
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Сега им кажавме на iptables да додадат правило за прифаќање tcp сообраќај кој доаѓа до портата 22 (стандардна SSH порта). Препорачливо е да ја смените конфигурацијата на SSH на друга порта и овој филтер за заштитен ѕид треба да се смени соодветно, но конфигурирањето на SSH не е дел од овој напис.
Сепак, би можеле да направиме уште една работа во врска со тоа со самиот заштитен ѕид. Ако нашата канцеларија има постојана IP адреса, би можеле да дозволиме поврзување со SSH само од овој извор. Ова ќе им овозможи само на луѓето од нашата локација да се поврзат.
Прво, дознајте ја вашата надворешна IP адреса. Погрижете се да не е адреса од вашиот LAN, или нема да работи. Можете да го направите тоа едноставно со посета на страницата whatismyip.com. Друг начин да го дознаете е да напишете:
w
во терминалот, треба да не видиме најавени (ако бевме единствените најавени и нашата IP адреса е запишана.
Излезот изгледа отприлика вака:
root@iptables# w
11:42:59 up 60 days, 11:21, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 213.191.xxx.xxx 09:27 0.00s 0.05s 0.00s w
Сега, можете да го креирате правилото за заштитен ѕид за да дозволи сообраќај до SSH портата само ако доаѓа од еден извор: вашата IP адреса:
iptables -A INPUT -p tcp -s YOUR_IP_ADDRESS -m tcp --dport 22 -j ACCEPT
Заменете ја YOUR_IP_ADDRESS со вистинската IP адреса, се разбира.
Можеме да отвориме повеќе порти на нашиот заштитен ѕид по потреба со менување на броевите на портите. На тој начин нашиот заштитен ѕид ќе дозволи пристап само до услугите што ги сакаме. Во моментов, треба да додадеме уште едно правило кое ќе ни овозможи да користиме појдовни врски (т.е. пинг од VPS или да извршуваме ажурирања на софтверот);
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Ќе им овозможи на сите воспоставени појдовни врски да добиваат одговори од VPS од другата страна на таа врска.
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
Сега ги имаме нашите правила за заштитен ѕид.
Зачувајте ја конфигурацијата
Сега кога ја имаме целата конфигурација, можеме да ги наведеме правилата за да видиме дали нешто недостасува.
iptables -L -n
Прекинувачот -n овде е затоа што ни требаат само IP адреси, а не имиња на домени. Односно. ако има IP во правилата како ова: 69.55.48.33: заштитниот ѕид ќе отиде да го побара и да види дека е IP на linux-console.net. Не ни треба тоа, само самата адреса. Сега конечно можеме да ја зачуваме нашата конфигурација на заштитен ѕид:
iptables-save | sudo tee /etc/sysconfig/iptables
Конфигурациската датотека iptables на CentOS се наоѓа на /etc/sysconfig/iptables. Горенаведената команда ги зачува правилата што ги создадовме во таа датотека. Само за да се увериме дека сè работи, можеме да го рестартираме заштитниот ѕид:
service iptables restart
Зачуваните правила ќе опстојуваат дури и кога VPS ќе се рестартира.
Исплакнете за да се отклучите
Ако направивме несреќа во нашата конфигурација, можеби сме го блокирале пристапот до VPS. Можеби сме ставиле погрешна IP адреса, така што заштитниот ѕид не дозволува поврзување од нашата работна станица. Сега не можеме да ги достигнеме тие правила и ако ги зачуваме, дури ни рестартирањето нема да ни помогне. За среќа, веб-интерфејсот DO ни овозможува да се поврземе со серверот преку конзола:
Откако ќе се поврземе, се најавуваме како root и ја издаваме следнава команда:
iptables -F
Ова ќе ги испушти филтрите и ќе може повторно да влезе во VPS.
Заклучок
Оваа статија не е исцрпна и само ја изгреба површината на водење на едноставен заштитен ѕид на Линукс машина. Тоа ќе направи доволно за типично сценарио за веб и сервер за е-пошта за развивач кој не е запознаен со командната линија на Linux или iptables.
Сепак, можеше да се направи многу повеќе. Има добри упатства и примероци на интернет кои ни помагаат да обезбедиме поцврста конфигурација. За производствени средини, би било препорачливо да се создаде подетална конфигурација или да се побара експерт за безбедност да ја подготви конфигурацијата.