|
|||||||
21 пример использования iptables для администраторов
Время создания: 16.03.2017 17:54
Текстовые метки: linux iptables
Раздел: Linux
Запись: Velonski/mytetra-database/master/base/1489668844wsem23oaec/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке. Знак # означает, что команда выполняется от root. Откройте заранее консоль с рутовыми правами - sudo -i в Debian-based системах или su в остальных. 1. Показать статус. # iptables -L -n -v Примерный вывод команды для неактивного файрвола: Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Для активного файрвола: Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 394 43586 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 93 17292 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 1 142 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 0 0 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes) pkts bytes target prot opt in out source destination Chain wanin (1 references) pkts bytes target prot opt in out source destination Chain wanout (1 references) pkts bytes target prot opt in out source destination Где: 2. Отобразить список правил с номерами строк. # iptables -n -L -v --line-numbers Примерный вывод: Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 wanin all -- 0.0.0.0/0 0.0.0.0/0 6 wanout all -- 0.0.0.0/0 0.0.0.0/0 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain wanin (1 references) num target prot opt source destination Chain wanout (1 references) num target prot opt source destination Вы можете использовать номера строк для того, чтобы добавлять новые правила. 3. Отобразить INPUT или OUTPUT цепочки правил. # iptables -L INPUT -n -v 4. Остановить, запустить, перезапустить файрвол. Силами самой системы: Можно также использовать команды iptables для того, чтобы остановить файрвол и удалить все правила: Где: 5. Удалить правила файрвола. Чтобы отобразить номер строки с существующими правилами: Получим список IP адресов. Просто посмотрим на номер слева и удалим соответствующую строку. К примеру для номера 3: Или найдем IP адрес источника (202.54.1.1) и удалим из правила: Где: 6. Добавить правило в файрвол. Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк: Примерный вывод: Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED Чтобы вставить правило между 1 и 2 строкой: Проверим, обновилось ли правило: Вывод станет таким: Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 DROP all -- 202.54.1.2 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED 7. Сохраняем правила файрвола. Через iptables-save: 8. Восстанавливаем правила. Через iptables-restore 9. Устанавливаем политики по умолчанию. Чтобы сбрасывать весь трафик: После вышеперечисленных команд ни один пакет не покинет данный хост. 10. Блокировать только входящие соединения. Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик: Пакеты исходящие и те, которые были запомнены в рамках установленных сессий - разрешены. 11. Сбрасывать адреса изолированных сетей в публичной сети. # iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP Список IP адресов для изолированных сетей: 12. Блокировка определенного IP адреса. Чтобы заблокировать адрес взломщика 1.2.3.4: 13. Заблокировать входящие запросы порта. Чтобы заблокировать все входящие запросы порта 80: Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4: 14. Заблокировать запросы на исходящий IP адрес. Чтобы заблокировать определенный домен, узнаем его адрес: Вывод: facebook.com has address 69.171.228.40 Найдем CIDR для 69.171.228.40: Вывод: Заблокируем доступ на 69.171.224.0/19: Также можно использовать домен для блокировки: 15. Записать событие и сбросить. Чтобы записать в журнал движение пакетов перед сбросом, добавим правило: # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: " Проверим журнал (по умолчанию /var/log/messages): 16. Записать событие и сбросить (с ограничением на количество записей). Чтобы не переполнить раздел раздутым журналом, ограничим количество записей с помощью -m. К примеру, чтобы записывать каждые 5 минут максимум 7 строк: 16. Сбрасывать или разрешить трафик с определенных MAC адресов. # iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP 17. Разрешить или запретить ICMP Ping запросы. Чтобы запретить ping: Разрешить для определенных сетей / хостов: Разрешить только часть ICMP запросов: 18. Открыть диапазон портов. # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT 19. Открыть диапазон адресов. ## разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 ## ## пример для nat ## 20. Закрыть или открыть стандартные порты. Заменить ACCEPT на DROP, чтобы заблокировать порт. ## ssh tcp port 22 ## ## cups (printing service) udp/tcp port 631 для локальной сети ## ## time sync via NTP для локальной сети (udp port 123) ## ## tcp port 25 (smtp) ## # dns server ports ## ## http/https www server port ## ## tcp port 110 (pop3) ## ## tcp port 143 (imap) ## ## Samba file server для локальной сети ## ## proxy server для локальной сети ## ## mysql server для локальной сети ## 21. Ограничить количество параллельных соединений к серверу для одного адреса. Для ограничений используется connlimit модуль. Чтобы разрешить только 3 ssh соединения на одного клиента: Установить количество запросов HTTP до 20: Где: Помощь по iptables. Для поиска помощи по iptables, воспользуемся man: Чтобы посмотреть помощь по определенным командам и целям: Проверка правила iptables. Проверяем открытость / закрытость портов: Проверяем открытость / закрытость определенного порта: Проверим, что iptables разрешает соединение с 80 портом: В противном случае откроем его для всех: Проверяем с помощью telnet Можно использовать nmap для проверки: Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст. Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|