Как заблокировать IP адрес с помощью iptables

Снова сдох сайт, который был у меня в закладках и куда я периодически заходил за подсказками по Iptables, собственно переливаю сюда.


Как заблокировать входящий трафик с помощью Iptables
После использование этого команди все входящие пакеты от 192.168.1.111 ip адреса будут сброшены

iptables -I INPUT -s 192.168.1.111 -j DROP

Также можно указать интерфейс на котором приходят пакеты, для примера eth0 и написать команду так
iptables -I INPUT -i eth0 -s 192.168.1.111 -j DROP

Если перед командой будем добавить "!"- аргумент то команда будет инвертироваться
iptables -I INPUT ! -i eth0 -s 192.168.1.111 -j DROP

Если у нас много интерфейсов которые начинаются eth и хатим блокировать входящий трафик на все эти интерфейс надо написать команду с "+" аргументом
iptables -I INPUT -i eth+ -s 192.168.1.111 -j DROP

Также можно использовать аргумент -A (append) в место -I (insert)
iptables -A INPUT -s 192.168.1.111 -j DROP

Как заблокировать входящий трафик по подсети
Для того чтоб заблокировать подсеть надо использовать следующую команду
iptables -i eth1 -A INPUT -s 192.168.1.0/24 -j DROP

Как заблокировать входящий трафик по подсети и добавить их лог файл
Для того чтоб заблокировать подсеть и добавить блокирование ip адреса в лог файл надо использовать эту команду
iptables -i eth0 -A INPUT -s 192.168.1.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"

Как посмотреть список заблокированных ip адресов
Используя эти команды можно посмотреть на список заблокированных ip адресов
 
iptables -L -v iptables -L INPUT -v iptables -L INPUT -v -n
Вывод будет таким
Chain INPUT (policy ACCEPT 3107K packets, 1847M bytes)
 pkts bytes target     prot opt in     out     source                     destination
    0     0 DROP       all  --  br+    any     192.168.1.111              anywhere
    0     0 DROP       all  --  !eth1  any     192.168.1.111              anywhere
    0     0 DROP       all  --  !eth1  any     192.168.1.111              anywhere

Как найти ip адрес в списке заблокированных ip адресов
Для поиска в блэклисте надо использовать эту команду
iptables -L INPUT -v -n | grep 192.168.1.111

Как удалить заблокированные ip адресов из списка
Для удаления ip адреса из списка заблокированных надо использовать эту команду
iptables -D INPUT -s 192.168.1.111 -j DROP


Но, в этом методе не очевидно, что именно мы удаляем. Поэтому, в данном случае, проще будет сначала сделать вывод с отображением по линиям(строчкам):

iptables -nvL --line


Вывод будет в таком виде :

Chain INPUT (policy ACCEPT 8286 packets, 1310K bytes)
num   pkts bytes target     prot opt in     out     source               destination        


1     5706  353K ACCEPT     tcp  --  *      *       192.168.1.111            0.0.0.0/0
2     22  555 ACCEPT     tcp  --  *      *       192.168.1.112            0.0.0.0/0

Chain FORWARD (policy ACCEPT 4224 packets, 861K bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1     5706  353K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3389

Chain OUTPUT (policy ACCEPT 11040 packets, 1963K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Как видно, что теперь выхлоп команды идет с номером линии(строки). И теперь гораздо проще удалять правила:

iptables -D INPUT 1


Где INPUT - это название группы, а 1 - это первая строка в этом блоке.


Чтобы посмотреть то же самое для группы(таблицы) NAT, то команда будет такой :

 
iptables -nvL --line -t nat


Пример вывода :

 Chain PREROUTING (policy ACCEPT 257 packets, 21140 bytes)
num   pkts bytes target     prot opt in     out     source               destination       
1        9  3188 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3389 to:192.168.1.5

Chain INPUT (policy ACCEPT 233 packets, 18344 bytes)
num   pkts bytes target     prot opt in     out     source               destination       

Chain OUTPUT (policy ACCEPT 126 packets, 7954 bytes)
num   pkts bytes target     prot opt in     out     source               destination       

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination       
1      135 11142 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0         


Если у вас есть правила в группе NAT, то удалить их можно таким образом:

sudo iptables -t nat -D PREROUTING 1

Комментарии