- Проблема с настройкой Iptables в ubuntu server
- Почему не срабатывает команда iptables?
- Перезагрузка iptables
- iptables-persistent и netfilter-persistent на самом деле не работают на сервере Ubuntu 16.04.3 x86_64
- Настройка iptables для чайников
- Что такое Iptables?
- Виды пакетов
- Правила и действия
- Таблицы ipatables
- Утилита Iptables
- Примеры настройки Iptables
- Список правил
- Очистка правил
- Правила по умолчанию
- Блокировка пакетов
- Удаление правил
- Сохранить правила Iptables
- Выводы
Проблема с настройкой Iptables в ubuntu server
Проблема следующая Имеем 3 сетевых интерфейса eth0 — внешний сетевой интерфейс имеет внешний IP:89.175.100.126 и подцеплено 4 альаса eth0:1 — 89.175.188.85 eth0:2 — 89.175.188.87 eth0:3 — 89.175.188.84 eth0:4 — 89.175.188.81 так же имеем 2 внутренние сетевые карты eth1 — 192.168.1.44 eth2 — 192.168.0.1
результат выполнения ifconfig
eth0 Link encap:Ethernet HWaddr 00:1f:1e:02:91:31 inet addr:89.175.100.126 Bcast:89.175.100.255 Mask:255.255.255.252 inet6 addr: fe80::21f:1eff:fe02:9131/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4218244 errors:0 dropped:0 overruns:0 frame:0 TX packets:3533526 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3184094292 (3.1 GB) TX bytes:1172489463 (1.1 GB)
eth0:1 Link encap:Ethernet HWaddr 00:1f:1e:02:91:31 inet addr:89.175.188.85 Bcast:89.175.188.87 Mask:255.255.255.252 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:2 Link encap:Ethernet HWaddr 00:1f:1e:02:91:31 inet addr:89.175.188.87 Bcast:89.175.188.87 Mask:255.255.255.252 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:3 Link encap:Ethernet HWaddr 00:1f:1e:02:91:31 inet addr:89.175.188.84 Bcast:89.175.188.87 Mask:255.255.255.252 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:4 Link encap:Ethernet HWaddr 00:1f:1e:02:91:31 inet addr:89.175.188.81 Bcast:89.175.188.83 Mask:255.255.255.252 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr 00:1f:1e:02:52:89 inet addr:192.168.1.44 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::21f:1eff:fe02:5289/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4054591 errors:0 dropped:10221 overruns:0 frame:0 TX packets:4198095 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1315754675 (1.3 GB) TX bytes:3248209735 (3.2 GB)
eth2 Link encap:Ethernet HWaddr c8:be:19:d3:91:d7 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::cabe:19ff:fed3:91d7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1227 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:86557 (86.5 KB) TX bytes:14442 (14.4 KB)
В сети Eth1 куча компов которые выходят через этот шлюз в инет и несколько копов с разными сервисами. В сети eth2 есть только один компьютер с веб сервером почему то проброс портов до сети eth1 работает нормально А вот в eth2 не прорабатывает. И из сети eth1 не получается увидеть сайт в сети eth2
Скрипт настройки IPtables прилогаю
#Стираем iptables iptables -F iptables -t nat -F
#параметры по умолчанию iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Маскарадим iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Разрешаем если нужно ping iptables -t filter -A FORWARD -p icmp -j ACCEPT
#Разрешаем уже установленые соединения iptables -A FORWARD -p tcp -m state —state ESTABLISHED,RELATED -j ACCEPT
#Разрешаем dns iptables -t filter -A FORWARD -p tcp —sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp —dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp —sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp —dport 53 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp —dport 443 -d 89.175.100.126 -j DNAT —to-destination 192.168.1.168
iptables -A FORWARD -p tcp —dport 443 -d 192.168.1.168 -j ACCEPT
iptables -A FORWARD -p tcp —sport 443 -s 192.168.1.168 -j ACCEPT
iptables -t nat -A PREROUTING -d 89.175.188.85 -j DNAT —to-destination 192.168.1.202
iptables -t nat -A PREROUTING -d 89.175.188.87 -j DNAT —to-destination 192.168.1.203
iptables -t nat -A PREROUTING -p tcp —dport 3389 -d 89.175.100.126 -j DNAT —to-destination 192.168.1.176
iptables -t nat -A PREROUTING -p tcp —dport 5222 -d 89.175.100.126 -j DNAT —to-destination 192.168.1.200
iptables -t nat -A PREROUTING -p tcp —dport 80 -d 89.175.188.81 -j DNAT —to-destination 192.168.0.204 -не прорабатывает
iptables -A FORWARD -p tcp -o eth2 -d 192.168.0.204 -s 192.168.1.223 —dport 80 -j ACCEPT -не прорабатывает
iptables -A FORWARD -p tcp -o eth2 -d 192.168.0.204 -s 192.168.1.223 —dport 6022 -j ACCEPT — не прорабатывает
iptables -t nat -A PREROUTING -p tcp -m multiport —dport 25,110,125,143,993 -d 89.175.100.126 -j DNAT —to-destination 192.168.1.224 остальное все работает.
Источник
Почему не срабатывает команда iptables?
На порте 3308 висит mariadb в докере
пытаюсь заблочить доступ извне:
Все равно подключаюсь без проблем по ip впски
ставить bind-address не могу, т.к. он д.б. не один
а iptables не срабатывает. Почему?
ты или спать хочешь или не внимателен, во первых то что ты написал это для мультипортовых правил и оно не сработает так как ты пропустил -m multiport и одно тире, если писать через мультипорт всё же хочешь то это так должно быть:
Покажи вывод iptables -L
Правила блокировки mysql тут нет (удалил), т.к. не работает.
Но вообще же вроде стоит не пускать все что явно не разрешено.
По крайней мере если поднимаю веб-сервер на произвольном порту — доступа нет — только на явно прописанных. А вот порт MariaDB сразу открытый. Хз в чем дело, не пойму пока.
Да я кучей способов пробовал какие находил — в т.ч.
Но вообще же вроде стоит не пускать все что явно не разрешено.
У тебя дальше в INPUT и FORWARD стоят правила, где разрешено все:
ACCEPT all — anywhere anywhere
Если ты все это пытаешься делать на хосте, а не в контейнере, то правила надо добавлять в цепочку FORWARD.
ACCEPT tcp — anywhere anywhere tcp dpt:8083 state NEW
Источник
Перезагрузка iptables
Я внес изменения в конфигурационный файл iptables в /etc/iptables/filter Ubuntu и хочу их перезагрузить. Я прочитал справочную страницу и также погуглил, но не смог найти информацию. Любая помощь будет оценена.
Самый простой способ — это перезагрузить компьютер (также, если ниже не работает, перезагрузите компьютер, проверьте, внес ли это изменение).
Во-вторых, проще всего перезапустить демоны, используя настройки iptables (google: restart daemon ubuntu).
примеры (зависит от вашей конфигурации):
Обычно ваши правила брандмауэра находятся в файле конфигурации /etc/iptables.firewall.rules
Чтобы активировать правила, определенные в вашем файле, вы должны отправить их iptables-restore (вы можете использовать другой файл, если хотите):
И вы можете проверить, что они активируются с помощью:
Если вы хотите активировать одни и те же правила при каждой загрузке компьютера, создайте этот файл:
С этим содержанием:
И дать ему разрешение на исполнение:
Надеюсь, это поможет вам =)
Пример файла для /etc/iptables.firewall.rules :
Если вы выполнили свои правила, они уже запущены, и перезагрузка не требуется. В случае, если у вас есть файл конфигурации, но он не был выполнен, лучший способ, который я видел до сих пор, — это использовать iptables-apply (расширение iptables).
Это будет применять правила в течение 60 секунд (10 по умолчанию) и отменить их, если вы не подтвердите их. Это спасет вас в случае, если вы вышвырнетесь из системы из-за правил (например, если вы работаете через ssh).
Вы можете использовать следующее в качестве замены:
Источник
iptables-persistent и netfilter-persistent на самом деле не работают на сервере Ubuntu 16.04.3 x86_64
У меня установлены iptables-persistent и netfilter-persistent:
$ dpkg -l ‘*-persistent’ Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-============================================-===========================-===========================-============================================================================================== ii iptables-persistent 1.0.4 all boot-time loader for netfilter rules, iptables plugin ii netfilter-persistent 1.0.4 all boot-time loader for netfilter configuration
У меня также есть правила, сохраненные в /etc/iptables/rules.v4 (сейчас я только забочусь о IPv4):
$ cat /etc/iptables/rules.v4 # Generated by iptables-save v1.6.0 on Fri Jan 19 09:49:17 2018 *security :INPUT ACCEPT [11740:1271860] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [9784:2123999] COMMIT # Completed on Fri Jan 19 09:49:17 2018 # Generated by iptables-save v1.6.0 on Fri Jan 19 09:49:17 2018 *raw :PREROUTING ACCEPT [18262:1677349] :OUTPUT ACCEPT [9784:2123999] COMMIT # Completed on Fri Jan 19 09:49:17 2018 # Generated by iptables-save v1.6.0 on Fri Jan 19 09:49:17 2018 *nat :PREROUTING ACCEPT [7367:452849] :INPUT ACCEPT [872:48764] :OUTPUT ACCEPT [500:37441] :POSTROUTING ACCEPT [500:37441] COMMIT # Completed on Fri Jan 19 09:49:17 2018 # Generated by iptables-save v1.6.0 on Fri Jan 19 09:49:17 2018 *mangle :PREROUTING ACCEPT [18262:1677349] :INPUT ACCEPT [18259:1677229] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [9784:2123999] :POSTROUTING ACCEPT [9784:2123999] COMMIT # Completed on Fri Jan 19 09:49:17 2018 # Generated by iptables-save v1.6.0 on Fri Jan 19 09:49:17 2018 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/8 -j REJECT —reject-with icmp-port-unreachable -A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp —dport 80 -j ACCEPT -A INPUT -p tcp -m tcp —dport 443 -j ACCEPT -A INPUT -p tcp -m state —state NEW -m multiport —dports 25,587,465 -A INPUT -p tcp -m state —state NEW -m multiport —dports 110,995 -A INPUT -p tcp -m state —state NEW -m multiport —dports 143,993 -A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT -A INPUT -p tcp -m state —state NEW -m multiport —dports 3721:3725 -j ACCEPT -A INPUT -p icmp -m icmp —icmp-type 8 -j ACCEPT -A INPUT -m limit —limit 5/min -j LOG —log-prefix «iptables denied: » —log-level 7 -A INPUT -j DROP -A FORWARD -j DROP -A OUTPUT -j ACCEPT COMMIT # Completed on Fri Jan 19 09:49:17 2018 ]
Правило, которое меня действительно интересует, — это один к концу:
-A INPUT -p tcp -m state —state NEW -m multiport —dports 3721:3725 -j ACCEPT
Однако, когда я перезагружаю сервер, я не получаю это правило:
$ sudo iptables -4 -L [sudo] password for kal: Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all — anywhere anywhere REJECT all — anywhere 127.0.0.0/8 reject-with icmp-port-unreachable ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp — anywhere anywhere tcp dpt:http ACCEPT tcp — anywhere anywhere tcp dpt:https tcp — anywhere anywhere state NEW multiport dports smtp,submission,urd tcp — anywhere anywhere state NEW multiport dports pop3,pop3s tcp — anywhere anywhere state NEW multiport dports imap2,imaps ACCEPT tcp — anywhere anywhere state NEW tcp dpt:ssh ACCEPT icmp — anywhere anywhere icmp echo-request LOG all — anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix «iptables denied: » DROP all — anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination DROP all — anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all — anywhere anywhere Chain f2b-shadowsocks (1 references) target prot opt source destination RETURN all — anywhere anywhere Chain f2b-sshd (1 references) target prot opt source destination RETURN all — anywhere anywhere
Также обратите внимание, что iptables имеет пару правил, которые присутствовали еще до того, как я когда-либо установил iptables-persistent и netfilter-persistent — например те для http, smtp, pop3, imap, ssh. Я понятия не имею, откуда они взялись. Конечно, у меня установлены openssh и nginx, и их службы включены, но я никогда не добавлял для них правила iptables.
Если я посмотрю на вывод журналаctct, netfilter-persistent.service действительно началось успешно:
$ sudo journalctl -xu netfilter-persistent.service — Logs begin at Fri 2018-01-19 18:55:13 HKT, end at Fri 2018-01-19 19:05:41 HKT. — Jan 19 18:55:13 yuma systemd[1]: Starting netfilter persistent configuration. — Subject: Unit netfilter-persistent.service has begun start-up — Defined-By: systemd — Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel — — Unit netfilter-persistent.service has begun starting up. Jan 19 18:55:13 yuma netfilter-persistent[1997]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start Jan 19 18:55:14 yuma netfilter-persistent[1997]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start Jan 19 18:55:14 yuma systemd[1]: Started netfilter persistent configuration. — Subject: Unit netfilter-persistent.service has finished start-up — Defined-By: systemd — Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel — — Unit netfilter-persistent.service has finished starting up. — — The start-up result is done.
Если я перезагружу вручную netfilter-persistent.service после полной загрузки машины, я получаю правило, которое я хочу:
$ sudo iptables -4 -L [. ] ACCEPT tcp — anywhere anywhere state NEW multiport dports 3721:3725 [. ]
Так почему же netfilter-persistent не работает во время загрузки?
Что-то полностью перезаписывает iptables после netfilter-persistent?
Что я могу сделать с этим?
вручную перезапустить У меня также нет ufw или firewalld.
Источник
Настройка iptables для чайников
Каждый компьютер, подключенный к сети, находится в потенциальной опасности. В сети очень много угроз начиная от программ, которые будут пытаться любым способом проникнуть в систему и заканчивая хакерами, которые хотят получить доступ к нужному им компьютеру. А программное обеспечение, установленное на компьютере, может содержать еще не известные и неисправленные уязвимости, которые и могут стать дырой в безопасности.
Если для домашних компьютеров это не очень актуально, так как они подключены к сети через роутеры и NAT, которые скрывают их от внешней сети, то для серверов это актуально как никогда. В операционной системе Linux в ядро встроен очень гибкий и надежный фаервол iptables.
Именно с помощью этой программы выполняется защита системы от внешних вторжений, перенаправление портов, а также еще очень много действий с трафиком. Но ее минус в том, что она немного сложна в настройке. В этой статье будет рассмотрена настройка iptables для чайников. Я надеюсь, что после нее вы сможете уверенно пользоваться базовыми возможностями iptables.
Что такое Iptables?
Подсистема iptables и Netfilter уже достаточно давно встроена в ядро Linux. Все сетевые пакеты, которые проходят через компьютер, отправляются компьютером или предназначены компьютеру, ядро направляет через фильтр iptables. Там эти пакеты поддаются проверкам и затем для каждой проверки, если она пройдена выполняется указанное в ней действие. Например, пакет передается дальше ядру для отправки целевой программе, или отбрасывается.
Виды пакетов
Все пакеты делятся на три типа: входящие, исходящие и проходящие. Входящие — это те, которые были отправлены на этот компьютер, исходящие — отправленные из этого компьютера в сеть. А проходящие — это пакеты, которые просто должны быть пересланы дальше, например, если ваш компьютер выступает в качестве маршрутизатора.
Соответственно в фильтре iptables все пакеты делятся на три аналогичные цепочки:
- Input — обрабатывает входящие пакеты и подключения. Например, если какой-либо внешний пользователь пытается подключиться к вашему компьютеру по ssh или любой веб-сайт отправит вам свой контент по запросу браузера. Все эти пакеты попадут в эту цепочку;
- forward — эта цепочка применяется для проходящих соединений. Сюда попадают пакеты, которые отправлены на ваш компьютер, но не предназначены ему, они просто пересылаются по сети к своей цели. Как я уже говорил, такое наблюдается на маршрутизаторах или, например, если ваш компьютер раздает wifi;
- output — эта цепочка используется для исходящих пакетов и соединений. Сюда попадают пакеты, которые были созданы при попытке выполнить ping losst.ru или когда вы запускаете браузер и пытаетесь открыть любой сайт.
Но если вы думаете что можно просто полностью закрыть цепочку Input для увеличения безопасности, то вы очень сильно ошибаетесь. При работе сети используются обе цепочки input и output. Например, вы пытаетесь выполнить ping, данные отправляются через output, но ответ приходит через input. То же самое происходит при просмотре сайтов и других действиях. А вот цепочка forward может вообще не использоваться если ваш компьютер не является маршрутизатором. Так что настройка iptables должна выполняться очень аккуратно.
Правила и действия
Перед тем как перейти к созданию списка правил iptables нужно рассмотреть как они работают и какие бывают. Для каждого типа пакетов можно установить набор правил, которые по очереди будут проверяться на соответствие с пакетом и если пакет соответствует, то применять к нему указанное в правиле действие. Правила образуют цепочку, поэтому input, output и forward называют цепочками, цепочками правил. Действий может быть несколько:
- ACCEPT — разрешить прохождение пакета дальше по цепочке правил;
- DROP — удалить пакет;
- REJECT — отклонить пакет, отправителю будет отправлено сообщение, что пакет был отклонен;
- LOG — сделать запись о пакете в лог файл;
- QUEUE — отправить пакет пользовательскому приложению.
Правила могут проверять любые соответствия, например, по ip, по порту получателя или отправителя, заголовкам пакета и многому другому. Если пакет не подходит ни одному из правил, то к нему применяется действие по умолчанию, обычно ACCEPT.
Когда мы разобрались с правилами, можно вернутся обратно к цепочкам. Кроме перечисленных выше, есть еще две дополнительные цепочки правил:
- prerouting — в эту цепочку пакет попадает перед обработкой iptables, система еще не знает куда он будет отправлен, в input, output или forward;
- postrouting — сюда попадают все проходящие пакеты, которые уже прошли цепочку forward.
Но это еще не все. У нас еще есть таблицы iptables, с которыми тоже желательно разобраться.
Таблицы ipatables
Над цепочками правил в iptables есть еще один уровень абстракции, и это таблицы. В системе есть несколько таблиц, и все они имеют стандартный набор цепочек input, forward и output. Таблицы предназначены для выполнения разных действий над пакетами, например для модификации или фильтрации. Сейчас это для вас не так важно и будет достаточно знать что фильтрация пакетов iptables осуществляется в таблице filter. Но мы рассмотрим их все:
- raw — предназначена для работы с сырыми пакетами, пока они еще не прошли обработку;
- mangle — предназначена для модификации пакетов;
- nat — обеспечивает работу nat, если вы хотите использовать компьютер в качестве маршрутизатора;
- filter — основная таблица для фильтрации пакетов, используется по умолчанию.
С теорией почти все, теперь давайте рассмотрим утилиту командной строки iptables, с помощью которой и выполняется управление системой iptables.
Утилита Iptables
Подсистема iptables и netfilter встроены в ядро, но вот набор утилит для управления всем этим не всегда поставляется вместе с системой. Для установки утилиты в Ubuntu наберите:
sudo apt install iptables
А в дистрибутивах, основанных на Fedora, установка iptables выполняется немного по-другому:
sudo yum install iptables
Когда установка iptables будет завершена, можно переходить к настройке, но давайте сначала рассмотрим синтаксис утилиты. Обычно команда имеет такой общий вид:
$ iptables -t таблица действие цепочка дополнительные_параметры
Теперь давайте рассмотрим параметры iptables, таблица указывает таблицу, с которой нужно работать, этот параметр можно упустить, действие — нужное действие, например, создать или удалить правило, а дополнительные параметры описывают действие и правило, которое нужно выполнить.
Осталось рассмотреть основные действия, которые позволяет выполнить iptables:
- -A — добавить правило в цепочку;
- -С — проверить все правила;
- -D — удалить правило;
- -I — вставить правило с нужным номером;
- -L — вывести все правила в текущей цепочке;
- -S — вывести все правила;
- -F — очистить все правила;
- -N — создать цепочку;
- -X — удалить цепочку;
- -P — установить действие по умолчанию.
Дополнительные опции для правил:
- -p — указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
mh; - -s — указать ip адрес устройства-отправителя пакета;
- -d — указать ip адрес получателя;
- -i — входной сетевой интерфейс;
- -o — исходящий сетевой интерфейс;
- -j — выбрать действие, если правило подошло.
Теперь вы можем перейти рассмотрению примеров того как выполняется настройка iptables.
Примеры настройки Iptables
Мы рассмотрим несколько основных примеров, чтобы вы смогли закрепить все прочитанное выше.
Список правил
Сначала давайте рассмотрим как выполняется просмотр правил iptables, для этого достаточно опции -L:
Также вы можете указать нужную цепочку, чтобы вывести правила только для нее:
iptables -L INPUT
Очистка правил
Вы не можете просто так отключить iptables остановив сервис обновления правил iptables через systemd или даже удалив набор утилит для настройки. Подсистема работает на уровне ядра и не зависит от того, что там у вас установлено. Поэтому если сделаете что-то не так, то нужно будет очистить правила. Для этого выполните:
sudo iptables -F
Или только для определенной цепочки:
sudo iptables -F Input
Напоминаю, что все эти действия выполняются для таблицы по умолчанию — filter.
Правила по умолчанию
Как я уже говорил, если для пакета не подходит ни одно правило, то для него применяется действие по умолчанию. Его можно задать с помощью опции -p:
sudo iptables -p INPUT ACCEPT
$ sudo iptables -p OUTPUT ACCEPT
$ sudo iptables -p FORWARD DROP
В этом примере мы разрешаем цепочки INPUT и OUTPUT, но запрещаем FORWARD.
sudo iptables -L
Блокировка пакетов
Для блокировки пакетов мы можем использовать действие DROP, фильтровать пакеты, которые нужно заблокировать мы можем по множеству критериев, например, протоколу, ip адресу, маске сети, порту и многому другому.
Вот так будет выглядеть команда, которая позволяет добавить правило iptables для блокировки всех входящих пакетов от 10.10.10.10:
sudo iptables -A INPUT -s 10.10.10.10 -j DROP
А теперь исходящие пакеты на этот же адрес:
sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP
Блокировка диапазона ip выполняется подобным образом. Для этого нужно использовать маску сети 10.10.10.0/24. Это будут все адреса начиная от 10.10.10.0 до 10.10.10.255:
sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP
Или расширенный вариант маски:
sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Также вы можете заблокировать все входящие соединения ssh:
sudo iptables -A INPUT -p tcp —dport ssh -s 10.10.10.10 -j DROP
Как видите, добавить правило iptables очень просто.
Удаление правил
Удаление правил iptables выполняется точно так же, как и создание новых, только вместо опции A нужно использовать опцию D. Сначала смотрим список правил:
sudo iptables -L
Например, вот так можно удалить правило iptables, которое было создано вторым:
sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP
Также вы можете полностью очистить iptables выполнив команду с опцией -F:
sudo iptables -F
Сохранить правила Iptables
Все настройки iptables, которые вы указали с помощью этих команд сохранятся только до перезагрузки. После перезагрузки компьютера все изменения будут стерты. Поэтому чтобы сохранить правила iptables, нужно выполнить специальную команду. Только в разных дистрибутивах она отличается. В Ubuntu выполните:
А в Red Hat или CentOS:
sudo /sbin/service iptables save
Выводы
Вот и все. Наша статья о том, как выполняется настройка iptables для чайников подошла к концу. Эта система действительно сложна, на первый взгляд, но если разобраться, то с помощью нее возможно делать очень интересные вещи. В этой статье была рассмотрены основы использования iptables, в следующих статьях мы более подробно остановимся на практическом применении.
На завершение видео о том, как увеличить безопасность вашего сервера:
Источник