iptables

Iptables за начинаещи

Iptables за начинаещи
Iptables е основно основната защитна стена, използвана за Linux системи, има алтернативи като nftables, но Iptables остава основната, тя е много гъвкава, като приема директни команди от потребителя, можете да зареждате и разтоварвате правила при нужда, за да увеличите политиките на вашата защитна стена точност.

Всъщност дори не е нужно да знаете синтаксиса на Iptable, за да го използвате, имате графични инструменти като Firewall Builder, които могат да направят учебния процес ненужен, но ако желанието е да се увеличат знанията за администриране на Linux, Iptables е първата стъпка да се научите как на практика администрира защитата под Linux и дори улеснява управлението на защитни устройства CISCO или Fortigate и други подобни.

Iptables основно ви позволява да инструктирате вашата система да приема, отказва или препраща връзка в зависимост от избраните параметри, например да пренасочва всички връзки към X порт към различен IP адрес, да блокира всички връзки, идващи от определен IP, IP диапазон или към приема всички връзки, идващи от IP адреси в белия списък, наред с много други функции.

В този урок ще научим как да защитим уеб сървър, как да препращаме връзки към вътрешни IP адреси от нашата LAN и как да предлагаме конкретни услуги само на бели IP адреси.

Инсталиране на Iptables

За да инсталирате iptables в системите на Debian / Ubuntu, просто стартирайте “apt update && apt install iptables” като root или с “sudo” като префикс, както е на следващото изображение.

Отваряне на HTTP и HTTPS портове

Първо, нека добавим всички ACCEPT политики, започвайки от уеб сървъра.

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

За да видите нашите добавени правила, стартирайте “iptables -L”

Където:

Iptables = извиква програмата
-A = добавя правило
ВХОД = входящ трафик
-стр = протокол
-ddport = дестинация порт
-j = посочете „целта“, целта е видът политика: ПРИЕМАТЕ, ПАДАТ, ОПАКАТА или ВРЪЩАНЕ.

След това на извадката от изображението по-горе казваме на Iptables да добавят правило за входящ трафик чрез TCP протокол и да се приемат портове 80 и 443.

Можем да променим командата да приема връзката само от определен IP, като добавим параметъра „”:

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 80 -j ПРИЕМ

Където:

с = източник
Iptables -L = изброява всички iptables заредени правила
Iptables -L -v = същото с многословието.

Също така можем да тестваме нашата защитна стена с nmap:

Както виждаме порт 80 е отворен както според “iptables -L”, така и Nmap.

Забележка: За повече информация относно използването на Nmap можете да прочетете нашия урок за него

Защита на вашия сървър

# Отворете HTTP и HTTPS услуги.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#Open SSH Port Service
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate НОВО, УСТАНОВЕНО -j ПРИЕМ

Къде са новите параметри:

= означава „съвпадение“ и се използва за извикване на разширенията на Iptable като conntrack, което не е част от основните функции на iptable.

контрак = Позволява да се проследява информация за връзки като конкретни адреси или в този случай състоянието на връзката. Това трябва да се използва внимателно, тъй като много правила за защита на сървъри от някои атаки използват conntrack, докато използването му е ограничено от хардуера и такова ограничение може да се използва за претоварване на ресурсите на сървъра.

-ctstate = определя състоянието на правилото, което да съвпада, възможните състояния са: НОВО, УСТАНОВЕНО, СВЪРЗАНО и НЕВАЛИДНО.

# Защитете вашата SSH услуга срещу груби атаки, като позволите само определен IP
за достъп до iptables -A INPUT -p tcp -s X.х.х.X --dport 22-m conntrack --ctstate НОВО,
УСТАНОВЕН -j ПРИЕМ
# Защитете вашата SSH услуга срещу атаки с груба сила, като ограничите опитите за връзка
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate НОВО -j 22-тест
Iptables -22-тест -m скорошен - име ВРЪЗКИ --set --mask 255.255.255.255 - източник
Iptables -22-тест -m скорошен - име ВРЪЗКИ --rcheck --mask 255.255.255.255
--rsource --секунди 30 --hitcount 3 -j 22-защита
Iptables -A 22-тест -j ПРИЕМ
Iptables -A 22-защита -j DROP

Където:
В първата линия нашето правило казва „-m conntrack -ctstate НОВО ” което означава, че ако връзката е нова, преминете към правилото „22-test“.

На втория ред се казва пакети netmask 255.255.255.255 са посочени като ВРЪЗКИ .

Третият ред казва, ако a ВРЪЗКИ изглежда над 3 пъти в рамките на 30 секунди защитната стена продължава да прилага веригата 22-защита. Четвъртият ред казва, ако ВРЪЗКИ не изглежда повече от 3 пъти в рамките на 30 секунди може да бъде прието.
Пети ред, който принадлежи на 22-защита верига казва да падне ВРЪЗКИ ако изглежда над 3 пъти в рамките на 30 секунди.

Сега, за да приключим, нека откажем всички неприети връзки и нека позволим целия изходящ трафик:

iptables -P ИЗХОД ПРИЕМ
iptables -P INPUT DROP

Когато -P означава веригата на целта, не забравяйте, че целта е политиката, ACCEPT, DROP, QUEUE или RETURN. В този случай казваме, че политиката по подразбиране за изходящ трафик е да се приеме, а политиката по подразбиране за входящ трафик е да се откаже, освен ако не сме посочили нещо различно в предишните правила. Това е много основна защитна стена, която не включва правила за много атаки, с цел обучение, а не за производство, в края на статията прикачвам защитна стена, която използвах за производство на сървър, има коментари, обясняващи всяко правило.

ПРЕДАВАНЕ НА ВРЪЗКА КЪМ СПЕЦИФИЧНО ПРИСТАНИЩЕ КЪМ СПЕЦИФИЧЕН IP АДРЕС

Това е много полезно и за потребители на настолни компютри, които искат да пренасочат връзка през определено устройство, може да бъде полезно дори за геймърите, обикновено го правим от настройките на рутера, но нека приемем, че маршрутизиращото устройство работи с Iptables.

iptables -A ПРЕДВАРИТЕЛНО -t nat -p tcp -d X.х.х.X --dport 8080 -j DNAT - до дестинация
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT - to-source X.х.х.х

Правилата по-горе се извикват към NAT (Превод на мрежови адреси), за да определят връзки чрез протокол TCP към адрес X.х.х.X и порт 8080 ще бъдат пренасочени към адрес Y.Y.Y.Y, порт 80. Второто правило указва, че отговорите трябва да се изпращат на адреса на източника (X.х.х.Х). Можем да използваме тези правила, за да разрешим достъп до IP камера, да активираме онлайн игри с външни мрежи и т.н.

Този урок е предназначен да запознае начинаещите с Iptables и обяснява само ограничен брой основни функции. По-долу можете да видите извадка от добре планирана защитна стена, която е използвана за производствен сървър, тя включва от някои от правилата, които вече видяхме, до по-сложни правила за предотвратяване на DDoS атаки между друго.
Следващият урок ще бъде за подушване в локални мрежи, но в следващ урок ще обясня някои от правилата, приложени към защитната стена по-долу.  Благодарим ви, че следите LinuxHint.com, продължавайте да ни следите за бъдещи актуализации на Iptables и Linux като цяло.

Бонус: Пример за производствена защитна стена

iptables -F
# ---- Активиране на защита от лошо съобщение за грешка
активиране / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Включете филтрирането по обратен път. По-безопасно, но нарушава асиметричното маршрутизиране и / или IPSEC
активирайте / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Не приемайте пакети с насочени източници. Рутирането на източника рядко се използва за легитимно
цели деактивират / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Деактивирайте приемането на ICMP за пренасочване, което може да се използва за промяна на вашите маршрутни таблици
деактивирайте / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Тъй като не приемаме пренасочвания, не изпращайте и пренасочващи съобщения
деактивирайте / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Игнорирайте пакети с невъзможни адреси
деактивирайте / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Предпазвайте от опаковъчните номера на увиването и подпомагайте измерването на времето за връщане
активирайте / proc / sys / net / ipv4 / tcp_timestamps
# ---- Помощ срещу DoS или DDoS атаки на syn-poplave, използвайки конкретни избори от първоначалния
Номерата на TCP последователности активират / proc / sys / net / ipv4 / tcp_syncookies
# ---- Използвайте селективен ACK, който може да се използва, за да покаже, че липсват специфични пакети
деактивирайте / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
# Сега можем да започнем да добавяме избрани услуги към нашия филтър за защитна стена. Първото такова нещо
е localhost интерфейс iptables -A INPUT -i lo -j ACCEPT
# Казахме на защитната стена да приема всички входящи пакети с tcp флагове NONE и просто да ги ИЗПУСКА.
iptables -A INPUT -p tcp ! -m conntrack --ctstate НОВО -j DROP
# Казваме на iptables да добавят (-A) правило към входящия (INPUT) - SSH работи на порт 50683
вместо това 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate НОВ -m наскоро --set
--име SSH -j ПРИЕМ
iptables -A INPUT -p tcp --dport 50683 -m наскоро - актуализация - секунди 60 --hitcount 4
--rttl --name SSH -j LOG - log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m наскоро - актуализация - секунди 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate НОВ -m наскоро --set
--име SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate НОВО -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate НОВО -m наскоро - актуализиране
--секунди 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate НОВО -m наскоро - актуализиране
--секунди 60 --hitcount 4 --rttl --name SSH -j DROP
# Сега позволявам imap и smtp.
-ВХОД -p tcp --dport 25 -j ПРИЕМ
# Позволява изскачащи и изскачащи връзки
-ВХОД -p tcp --dport 110 -j ПРИЕМ
-ВХОД -p tcp --dport 995 -j ПРИЕМ
############ IMAP и IMAPS ############
-ВХОД -p tcp --dport 143 -j ПРИЕМ
-ВХОД -p tcp --dport 993 -j ПРИЕМ
########### MYSQL ####################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## R1soft CDP система ################
iptables -A INPUT -p tcp -m tcp -s specific ip --dport 1167 -j ACCEPT
################ изходящи ####################
iptables -I INPUT -m conntrack --ctstate УСТАНОВЕН, СВЪРЗАН -j ПРИЕМ
### Разрешаване на текущо, блокиране на входящите не е дефинирано ###
iptables -P ИЗХОД ПРИЕМ
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee / etc / iptables.тест.правила
iptables-възстановяване < /etc/iptables.test.rules
#service iptables се рестартира
Топ 5 продукти за ергономична компютърна мишка за Linux
Продължителната употреба на компютър причинява ли болка в китката или пръстите? Страдате ли от схванати стави и постоянно ли ви се налага да си ръкува...
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...