Упатство:Работа со Iptables
iptables - заштитен ѕид за ГНУ/Линукс
Беше тоа поодамна кога администраторот претставуваше личност која го троши целото свое време на поврзување и комуникација на компјутерите во една компјутерска мрежа. Денес времето за таа активност е сведено на минимум, а поголем дел се посветува на безбедност на компјутерските мрежи и рестрикција до одредени мрежни ресурси.
На прв поглед се чини дека тоа се прави на почеток и потоа е „гола вода“ но не треба да го заборавиме златното правило „get secure and stay secure“.
Ајде сега кажете три пати ура за огнениот ѕид во ГНУ/Линукс. Работи како и најголемиот број на огнени ѕидови под било кој оперативен систем со филтрирање на мрежни пакети. Со употребата на iptables командата може да се креираат правила според изворната адреса (source address), одредишната адреса (destination address), рестрикција на пакети врз основа на портата на која доаѓаат, врз основа на интерфејсот (логичкото име или хардверската адреса). Да не се внесеме многу во претходно кажаното и безбедноста на компјутерската мрежа ја поставиме толку високо така да ја изгуби и основната цел за која и постои, а тоа е комуникација помеѓу компјутерските системи.
Креирање на правила од командна линија
Пакет филтер огнениот ѕид (достапен од Linux 2.4) овозможува доста флексибилна манипулација од командна линија. Употребата на iptables може да ви изгледа доста комплексна (погледнете само колку можности нуди „man iptables„) но верувајте дека кога ќе ја видете неговата моќ бргу ќе ви стане омилен збор за внесување преку тастатура. Дури и доколку вашата машина не е огнен ѕид во права смисла на зборот (имате еден мрежен интерфејс) пакет филтерот може да биде многу корисен.
Да речеме дека сакате да дозволите telnet пристап на вашата машина за секој случај ако изгубите ssh врска, но не сакате (и не би требало) да дозволите тоа да биде возможно од било каде на интернет. Еден од начините е со креирање на листа во /etc/hosts.allow и /etc/hosts.deny, но за нас ќе биде поинтересен вториот начин а тоа е со употреба на iptables.
iptables -A INPUT -t filter -s ! 62.162.163.164 -p tcp --dport 23 -j DROP
Не се замарајте со помнење на секој карактер. За тоа што значење има секој од нив, ѕирнете во man. Нормално е да дозволиме пристап од страна на пријателски адреси а блокирање на се останото. Креирање на листи со такви адреси е доста корисно и повеќе ќе ни ја олесни работата отколку да внесуваме цели iptables команди секој пат кога има некоја промена. Да креираме две датотеки: /etc/allowip и /etc/blockip и со употреба на скрипт датотеките може да го напишеме следново:
#!/bin/sh # # Ednostavna skipta za inicijalizacija na ognen zid # WHITELIST=/usr/local/etc/allowip.txt BLACKLIST=/usr/local/etc/blockip.txt PORTS="22 25 80 443" # # Ponistuvanje na site dosegasni pravila vo ogneniot zid # iptables -F # # Najprvo prebaruvame vo $WHITELIST linii koi ne se komentari - grep -v ^# $WHITELIST | awk '{print $1} # for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do echo "Dozvoluvam $x..." iptables -A INPUT -t filter -s $x -j ACCEPT done # # Sega da zabranime pristap na adresite vo blockip listata # for x in `grep -v ^# $BLACKLIST | awk '{print $1}'`; do echo "Zabrana $x..." iptables -A INPUT -t filter -s $x -j DROP done # # Sledno e dozovluvanje na obrakanje kon porti vo PORTS listata od strana na adresi vo allowip # for port in $ALLOWED; do echo "Dozvola za porta $port..." iptables -A INPUT -t filter -p tcp --dport $port -j ACCEPT done # # Na kraj zabrana za se ostanato posebno za onie vlezni pocetni baranja # iptables -A INPUT -t filter -p tcp --syn -j DROP
Примеров во горната скрипта беше за забрана и дозвола на TCP врски. Iptables поддржува и UDP, ICMP пакети. Употребата е сосема идентична со употреба на –p udp или –p icmp.
# iptables -A INPUT -p icmp-type echo-request -j DROP
Ова е пример за игнорирање на сите Ping пакети кои доаѓаат до нашиот сервер, со што на прв поглед од интернет би изгледло дека серверот е исклучен. Истото може да се постогне и со запишување вредност „1„ во /proc/sys/net/ipv4/icmp_echo_ignore_all
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
За да бидеме параноични до крај кога станува збор за конфигурирање на огнени ѕидови важно е да се напомене дека адресите кои се во allowip датотеката е потребно да се доверливи адреси и не рутабилни. Што би значело дека не смеат да дозволат пакување на адреси од blockip и испраќање како да потекнуваат од адресите во allowip.
Маскирање на IP
Доколку делите една интернет врска помеѓу повеќе компјутер, тогаш ова е она што вас ви е потребно. Поставување на NAT (Network Address Translation) на вашиот gateway:
# echo "1" > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Правта линија налага серверот да врши препраќање на IP пакети помеѓу сите интерфејси кои постојат на машината. Втората линија: со iptables вршиме рутирање кон eth0 интерфејсот (треба да се прилагоди кон вашето име на интерфејс) кој претставува надворешен интерфејс, поврзан на интернет.
Мислам дека ова е доволно да ја согледате основната можност на iptables. Сега може да бидете главен фраер во маало и да си ја делите интернет врската со другарчињата.