NullByte
Active Member
Понеже видях в друга тема, че има интерес към бързото и лесно 'банване' на IP адрес, пускам тази тема с цел да се улесните при употребата на firewall-а.
Темата е писана ексклузивно за Предприемач и моя блог и изрично забранявам нейното копиране, както и на части от нея, без моето разрешение.
Iptables са таблици (очевидно) за правила във firewall-а на ядрото на линукс системите, наречен Netfilter.
Правилата се делят на три вида "вериги" - INPUT (вход, тоест връзки към сървъра), OUTPUT (връзки от сървъра навън) и FORWARD (връзки, които са пренасочени).
Ще коментирам първата верига, тъй като тя е за забрана на даден адрес да се свързва към сървъра ви.
има три вида 'опции' за даден пакет - да бъде приет, да бъде отхвърлен или да бъде игнориран. Съответно опциите са ACCEPT, REJECT, DROP.
Таблиците не се конфигурират във файл, те са в паметта и имат опцията да се запазят като таблица във файл и след това да се въвеждат от този файл.
Тоест правилата се добавят, редактират или махат на живо с команди и при рестарт на системата те изчезват, затова е нужно да запазваме всяка промяна във файл и при рестарт да ги restore от този файл (както и ако омажем нещо).
Командата за добавяне на правило, което 'банва' дадено ип е следната:
където 22.33.14.51 е IP адреса, който желаете да блокирате. изтриването става като вместо -A (което идва от add) укажем -D (delete), тоест /sbin/iptables -D INPUT -s 22.33.14.51 -j DROP
Не забравяйте, че това правило е само в паметта и е временно, след рестарт ще се загуби.
Запазването на правилата става с iptables-save - това ще изведе на екрана правилата, трябва да пренасочите потока към файл така:
След това може да 'вкарвате' правилата от файла с командата
За мое (а вече и ваше) улеснение, написах следните скриптове, ето и как да ги 'инсталирате' (nano е конзолен текстов редактор като pico)
nano /sbin/banip
Поставете кода:
Запазете файла и дайте права за изпълнение:
chmod u+x /sbin/banip
Може и запазването/ресторването да си ги направим като команди:
nano /sbin/rules-save
chmod u+x /sbin/rules-save
nano /sbin/rules-restore
chmod u+x /sbin/rules-restore
И от сега нататък може да 'банвате' само като напишете:
banip 22.44.55.15
Където 22.44.55.15 е ip адреса. И след това да запазите таблицата с командата:
rules-save
И при рестарт да я ресторнете:
rules-restore
Също ако искате да 'спрете' firewall-а или по-точно да изчистите таблицата, без да променяте файла на предишната, ето как:
nano /sbin/rules-clear
chmod u+x /sbin/rules-clear
Как да настроим firewall-a да блокира целия UDP трафик, с изключение на DNS (порт 53)?
Използвайте следните команди:
Надявам се да съм бил полезен, ако имате въпроси - питайте
P.S.
Адресите могат да се задават и във формат CIDR.
Например в error.log виждате, как кякакви ботове търсят php admin и се опитват да го пробият:
[Wed Jun 19 03:01:49 2013] [error] [client 125.19.46.195] File does not exist: /var/www/phpmyadmin
Вместо да баннете само IP 125.19.46.195, искате цялата мрежа (от клас C), тоест от 125.19.46.0 до 125.19.46.255, съответно пишете
banip 125.19.46.1/24
или пък, ако ип-то е корейско (а знаете, че посетителите са ви само от България) поглеждате каква е мрежата на корейския доставчик и я банвате цялата, например от 125.19.1.1 до 125.19.255.255
banip 125.19.0.0/16
Внимавайте с този формат, ако не знаете какво е CIDR, първо прочетете из гугъл.
Темата е писана ексклузивно за Предприемач и моя блог и изрично забранявам нейното копиране, както и на части от нея, без моето разрешение.
Iptables са таблици (очевидно) за правила във firewall-а на ядрото на линукс системите, наречен Netfilter.
Правилата се делят на три вида "вериги" - INPUT (вход, тоест връзки към сървъра), OUTPUT (връзки от сървъра навън) и FORWARD (връзки, които са пренасочени).
Ще коментирам първата верига, тъй като тя е за забрана на даден адрес да се свързва към сървъра ви.
има три вида 'опции' за даден пакет - да бъде приет, да бъде отхвърлен или да бъде игнориран. Съответно опциите са ACCEPT, REJECT, DROP.
Таблиците не се конфигурират във файл, те са в паметта и имат опцията да се запазят като таблица във файл и след това да се въвеждат от този файл.
Тоест правилата се добавят, редактират или махат на живо с команди и при рестарт на системата те изчезват, затова е нужно да запазваме всяка промяна във файл и при рестарт да ги restore от този файл (както и ако омажем нещо).
Командата за добавяне на правило, което 'банва' дадено ип е следната:
Код:
/sbin/iptables -A INPUT -s 22.33.14.51 -j DROP
където 22.33.14.51 е IP адреса, който желаете да блокирате. изтриването става като вместо -A (което идва от add) укажем -D (delete), тоест /sbin/iptables -D INPUT -s 22.33.14.51 -j DROP
Не забравяйте, че това правило е само в паметта и е временно, след рестарт ще се загуби.
Запазването на правилата става с iptables-save - това ще изведе на екрана правилата, трябва да пренасочите потока към файл така:
Код:
iptables-save > /etc/iptables.rules
След това може да 'вкарвате' правилата от файла с командата
Код:
iptables-restore < /etc/iptables.rules
За мое (а вече и ваше) улеснение, написах следните скриптове, ето и как да ги 'инсталирате' (nano е конзолен текстов редактор като pico)
nano /sbin/banip
Поставете кода:
Код:
#!/bin/bash
echo "IP $1 e veche ban-nato"
/sbin/iptables -A INPUT -s $1 -j DROP
Запазете файла и дайте права за изпълнение:
chmod u+x /sbin/banip
Може и запазването/ресторването да си ги направим като команди:
nano /sbin/rules-save
Код:
#!/bin/bash
iptables-save > /etc/iptables.rules
chmod u+x /sbin/rules-save
nano /sbin/rules-restore
Код:
#!/bin/bash
iptables-restore < /etc/iptables.rules
chmod u+x /sbin/rules-restore
И от сега нататък може да 'банвате' само като напишете:
banip 22.44.55.15
Където 22.44.55.15 е ip адреса. И след това да запазите таблицата с командата:
rules-save
И при рестарт да я ресторнете:
rules-restore
Също ако искате да 'спрете' firewall-а или по-точно да изчистите таблицата, без да променяте файла на предишната, ето как:
nano /sbin/rules-clear
Код:
#!/bin/sh
echo "Spiram firewalla i razreshavam vsichki vruzki..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
chmod u+x /sbin/rules-clear
Как да настроим firewall-a да блокира целия UDP трафик, с изключение на DNS (порт 53)?
Използвайте следните команди:
Код:
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -j DROP
iptables -A OUTPUT -p udp -j DROP
Надявам се да съм бил полезен, ако имате въпроси - питайте
P.S.
Адресите могат да се задават и във формат CIDR.
Например в error.log виждате, как кякакви ботове търсят php admin и се опитват да го пробият:
[Wed Jun 19 03:01:49 2013] [error] [client 125.19.46.195] File does not exist: /var/www/phpmyadmin
Вместо да баннете само IP 125.19.46.195, искате цялата мрежа (от клас C), тоест от 125.19.46.0 до 125.19.46.255, съответно пишете
banip 125.19.46.1/24
или пък, ако ип-то е корейско (а знаете, че посетителите са ви само от България) поглеждате каква е мрежата на корейския доставчик и я банвате цялата, например от 125.19.1.1 до 125.19.255.255
banip 125.19.0.0/16
Внимавайте с този формат, ако не знаете какво е CIDR, първо прочетете из гугъл.
Последно редактирано: