Максуд Жалоба Опубликовано 7 июня, 2017 Форумчане, кто знает ли достаточно Iptables, что бы подсказать мне? Хочу вас попросить покритиковать правила для iptables, которые я применяю на одном из серверов под управлением Debian. Спойлер iptables -F #Запрещено всё, что не разрешено ниже iptables -P INPUT DROP #Разрешаем с интернета в сеть iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.1/24 -j MASQUERADE iptables -t nat -P POSTROUTING ACCEPT #Не будем принимать всё подряд на внешнюю сетевую карту iptables -A FORWARD -o eth0 -p tcp -j DROP #Блокирование нулевых и "разведовательных" пакетов iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP #А на внутреннюю что дойдёт iptables -A INPUT -i lo -j ACCEPT #Открываем порты iptables -t filter -A INPUT -i eth1 -d 192.168.0.1 -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp -m multiport --destination-ports 80,443 -j ACCEPT #исходящие подключения iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT М? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Максуд Жалоба Опубликовано 15 июня, 2017 Можно удалить тему, толку тут от неё. Не профильный форум. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
░▒▓▒░ Жалоба Опубликовано 15 июня, 2017 У меня было много серверов на Дебиане, которые стояли в инете с белым IP прямо на сетевой карте eth0. Зачем заморачиваться ? INPUT, OUTPIT, FORWARD, POSTROUTING (а ещё есть PREROUTING) - и в кажой цепочке городить один и тот же набор правил, зачем ? Вот есть у меня сервис, который должен быть недоступен снаружи, а только для внутренних VPN-пользователей, например прокси polipo на порту 8123, вот я его закрываю конкретным правилом: iptables -A INPUT -p tcp --dport 8123 -i eth0 -j DROP Вот у меня есть раздача инета для внутренних юзверов, которые сюда подключились по разным типам VPN, но все входят в один пул внутренних VPN-адресов, вот я им делаю раздачу через NAT: iptables -t nat -A POSTROUTING -s 172.16.0.0/12 -o eth0 -j SNAT --to-source $MY_SERVER_IP Всё. Что ещё ? Боишься что будут перебирать пароли на SSH ? Ставь denyhosts Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 15 июня, 2017 4 часа назад, ░▒▓▒░ сказал: Вот есть у меня сервис, который должен быть недоступен снаружи, а только для внутренних VPN-пользователей, например прокси polipo на порту 8123, вот я его закрываю конкретным правилом: iptables -A INPUT -p tcp --dport 8123 -i eth0 -j DROP А не лучше запретить все и разрешать только то что нужно? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
░▒▓▒░ Жалоба Опубликовано 15 июня, 2017 Пусть тебе так твой провайдер сделает. А разрешать общаться с каждым конкретным внешним хостом/портом - только по письменному заявлению. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 15 июня, 2017 Ну смотря для чего сервер нужен ТС-у. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 15 июня, 2017 В 07.06.2017 в 11:23, Максуд сказал: Форумчане, кто знает ли достаточно Iptables, что бы подсказать мне? Хочу вас попросить покритиковать правила для iptables, которые я применяю на одном из серверов под управлением Debian. М? Вот еще несколько интересных правил для файрвола: Спойлер -N FIREWALL0-N FIREWALL # Ограничение подключений с одного клиента-A FIREWALL -p tcp --syn -m connlimit --connlimit-above 32 # Минус ошибочные пакеты-A FIREWALL0 -m state --state INVALID -j DROP# Минус входящие по TCP не через SYN-A FIREWALL -m state --state NEW -p tcp ! --syn -j DROP # Защита от спуфинга-A FIREWALL -m state --state NEW -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset # Защита от флуда-A FIREWALL -p tcp --syn -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL -p udp -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL -p icmp -m limit --limit 10/s --limit-burst 50 -j ACCEPT-A FIREWALL -j DROP # Защита от сканирования портов-A FIREWALL0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP # Защита от Ping of death -A FIREWALL0 -p icmp --icmp-type echo-request -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL0 -p icmp --icmp-type echo-request -j DROP # Черный список по IP -A FIREWALL0 -s 10.10.10.10 -p tcp --dport 80 -j DROP -A INPUT -j FIREWALL0 -A INPUT -i lo -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -j FIREWALL И эту сточку я бы для ускорения поставил как у меня в примере: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT А открытие портов вот так, соответственно должно быть ниже предыдущего: iptables -t filter -A INPUT -i eth1 -d 192.168.0.1 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m multiport --destination-ports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT Я так понимаю это веб-сервер на который заходят и извне и из сети? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
░▒▓▒░ Жалоба Опубликовано 15 июня, 2017 Правила очень интересные. Только в них чёрт ногу сломит. Не просто ведь так по дефолту во всех политиках всех цепочек стоит разрешение. Ну есть у вас ssh, есть web, но зачем запрещать порты, на которых у вас никто ничего не слушает ? Скажите netstat -anp и увидите, кто что слушает, вот тут и думайте - а что из этого должно быть недоступно снаружи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 16 июня, 2017 Форвард из сети в инет у ТС-а же полностью разрешен. Да и обратно в сеть тоже. И исходящие с сервака разрешены (вот насчет всех исходящих с сервака и сети я согласен, что должны быть открыто всё, а потом резать по необходимости). А про входящие на сервер это уже зависит от загруженности сервера, доверия к внешней сети и паранои админа. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Максуд Жалоба Опубликовано 16 июня, 2017 Ух ты, ни как не ожидал продолжения, что то из комментариев для себя пояснил. Особенно про нечего закрывать чего и так нет. Я не могу понять как играет роль очерёдность правил. Команда --list мне выдаёт, что: Спойлер root@Shluz1:/etc/network# iptables --list Chain INPUT (policy DROP) target prot opt source destination DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere 192.168.0.1 tcp dpt:ssh ACCEPT tcp -- anywhere anywhere multiport dports http,https ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED Chain FORWARD (policy ACCEPT) target prot opt source destination DROP tcp -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination после drop сначала идёт ACCEPT всего -- anywhere anywhere, а только потом разрешение явно указывающего правила. Не могу понять где это у меня в правилах ACCEPT всего? Цитата Я так понимаю это веб-сервер на который заходят и извне и из сети? Нет, из вне на него никто заходить не должен, но через него попадают на другой сервер, а проброс я не делал. И эта строка с правилом Цитата iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT у меня присутствует. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ГМО Жалоба Опубликовано 16 июня, 2017 45 минут назад, Максуд сказал: Особенно про нечего закрывать чего и так нет. Принято закрывать потому что может появиться. Или активно по пятницам, после двух. https://habrahabr.ru/post/213973/ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 16 июня, 2017 55 минут назад, Максуд сказал: Нужно по каждой цепочке для каждого интерфеса пройтись, посмотреть, что нужно где "резать". И как лучше для скорости обработки пакетов. По умолчанию все разрешено. Позже еще гляну, может какие-нибудь идеи будут. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 16 июня, 2017 54 минуты назад, Максуд сказал: после drop сначала идёт ACCEPT всего -- anywhere anywhere, а только потом разрешение явно указывающего правила. Не могу понять где это у меня в правилах ACCEPT всего? Видимо это #А на внутреннюю что дойдёт iptables -A INPUT -i lo -j ACCEPT Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Максуд Жалоба Опубликовано 16 июня, 2017 Ну ведь это же для связи программ этого сервера с настоящим IP этого сервера, внутренняя петля, типа виндосовского 127.0.0.1. Не знаю всей технологии, но читал что нужен и должен быть разрешён для обеспечения работы сетевых программ. Тут больше подходит объяснение Цитата По умолчанию все разрешено. Хотя всё запрещено iptables -P INPUT DROP во всех цепочках и это правило я ставлю в конец. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 16 июня, 2017 1 час назад, Максуд сказал: Ну ведь это же для связи программ этого сервера с настоящим IP этого сервера, внутренняя петля, типа виндосовского 127.0.0.1. Не знаю всей технологии, но читал что нужен и должен быть разрешён для обеспечения работы сетевых программ. Тут больше подходит объяснение Хотя всё запрещено iptables -P INPUT DROP во всех цепочках и это правило я ставлю в конец. Как видим iptables --list не выводит названий интерфейсов к которому правило применяется, отсюда и путаница. iptables -P INPUT DROP это только для цепочки INPUT, т.е. для всех входящих только на этот сервер на все интерфейсы, и выполняется после всех остальных в INPUT. Еще форвард запрещен, если в файле /proc/sys/net/ipv4/ip_forward ноль стоит, а стоит он там по умолчанию. Ну и цепочка OUTPUT разрешена по умолчанию на всё. Т.е. работаем только INPUT и POSTROUTING. Кстати, чтобы извне никто не заходил на веб-сервер в iptables -A INPUT -p tcp -m multiport --destination-ports 80,443 -j ACCEPT нужно внутренний интерфейс добавить. Я же правильно понял eth0 смотрит в интернет, eth1 в локалку. Могу в чем-то ошибаться, я просто любитель. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 3 февраля, 2019 В 15.06.2017 в 19:51, tolstyk сказал: Показать контент -N FIREWALL0-N FIREWALL # Ограничение подключений с одного клиента-A FIREWALL -p tcp --syn -m connlimit --connlimit-above 32 # Минус ошибочные пакеты-A FIREWALL0 -m state --state INVALID -j DROP# Минус входящие по TCP не через SYN-A FIREWALL -m state --state NEW -p tcp ! --syn -j DROP # Защита от спуфинга-A FIREWALL -m state --state NEW -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset # Защита от флуда-A FIREWALL -p tcp --syn -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL -p udp -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL -p icmp -m limit --limit 10/s --limit-burst 50 -j ACCEPT-A FIREWALL -j DROP # Защита от сканирования портов-A FIREWALL0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP # Защита от Ping of death -A FIREWALL0 -p icmp --icmp-type echo-request -m limit --limit 10/s --limit-burst 50 -j ACCEPT -A FIREWALL0 -p icmp --icmp-type echo-request -j DROP # Черный список по IP -A FIREWALL0 -s 10.10.10.10 -p tcp --dport 80 -j DROP -A INPUT -j FIREWALL0 -A INPUT -i lo -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -j FIREWALL Решил тут Юникс вспомнить, оказалось, что приведенный мной ранее фаер дырявый. Лечиться заменой всех ACCEPT в цепочках FIREWALL0 и FIREWALL на RETURN. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Дюбель Жалоба Опубликовано 3 февраля, 2019 Есть новые тенденции. В новом Centos7 старый iptables заменен на новый firewalld. Это впрочем не мешает опять установить iptables. Но тут появилась некая политика , которая для рядового юзвера вполне себе хороша по дефолту и проста в настройке. Это сродни виндовому брендмауеру. А именно - все сетевые карты по дефолту относятся к зоне паблик , в которой по дефолту из входящих разрешены только пинг и ssh. А ещё для раздачи инета есть что-то уж не помню точно вроде зоны wan в которую надо отнести интерфейсы, дающие инет и тогда велючится раздача его через NAT для внутренних сетей. Всё стало просто почти как настройка домашнего роутера. Погуглите: настройка firewalld в centos. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
tolstyk Жалоба Опубликовано 3 февраля, 2019 Я сейчас в Cubian-е копаюсь, это Debian для одноплатника Cubieboard. Там iptables еще используется, по крайней мере был предустановлен. И нужен он будет мне в первую очередь под домашний Web-сервер, ну может потом с инета дам доступ. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Дюбель Жалоба Опубликовано 4 февраля, 2019 тада вся защита лежит на роутере, какие порты пробросишь - только такие и будут входящие. соответственно сами хосты внутренней сети, на винде они или на дебиане не нуждаются ни в каком своём собственном файрволе или iptables. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты