Допустим на сервере по умолчанию INPUT DROP и установлен DNS сервер, теперь приведу пример IPTables правил чтобы к DNS серверу могли обращайся клиенты.
Чтобы открыть порт DNS в IPTables выполним правило:
Читать далее «IPTables правила для DNS»Вячеслав Гапон — персональный блог, руководства, статьи, заметки, разработка
Допустим на сервере по умолчанию INPUT DROP и установлен DNS сервер, теперь приведу пример IPTables правил чтобы к DNS серверу могли обращайся клиенты.
Чтобы открыть порт DNS в IPTables выполним правило:
Читать далее «IPTables правила для DNS»Допустим на сервере по умолчанию INPUT DROP, теперь приведу пример простого правила разрешающего DHCP запросы к серверу, этого будет достаточно чтобы клиенты получили IP от сервера (где em1 — сетевой интерфейс на котором запущен DHCP сервер):
Читать далее «IPTables правила для DHCP»Недавно заметил на одном сервере с биллинговой системой ABillS, что при массовом выполнении скрипта /etc/ppp/ip-up возникает ошибка:
Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
Посмотрев код скрипта обнаружил, что среди iptables правил есть два, которые могут тормозить работу, а именно выполнялся поиск ipoe интерфейсов двумя командами:
IPTABLES="/sbin/iptables" EXIST=`${IPTABLES} -t nat -L PREROUTING -v | grep "${IFNAME} "; ${IPTABLES} -L -v | grep DROP | grep "${IFNAME} "`
Для поднятия 3000 сессий, уходило более 30 минут и часть правил могла вовсе не добавится или не удалится скриптом.
По умолчанию если используется ключ -L то iptables резолвит IP адреса и пытается отобразить вместо них DNS имена, что занимает много времени, и чтобы это не происходило, нужно добавить еще ключ -n, а также на всякий случай я добавил ключ -w 20, который заставит отложить выполнение новых правил до 20 секунд если iptables уже занят выполнение другой команды:
IPTABLES="/sbin/iptables" IPTABLES_WAIT="-w 20" EXIST=`${IPTABLES} $IPTABLES_WAIT -t nat -n -L PREROUTING -v | grep "${IFNAME} "; ${IPTABLES} $IPTABLES_WAIT -n -L -v | grep DROP | grep "${IFNAME} "`
После этого скрипт с iptables правилами начал отрабатывать мгновенно.
Так как старые правила не все выполнились, я проверил это посчитав некоторые командой:
iptables -n -L -t nat -v | grep DNAT | wc -l
И сверил с количеством сессий, правил явно было меньше, поэтому пришлось очистить все правила и перезапустить сессии чтобы скрипт /etc/ppp/ip-up отработал правильно, на этот раз при 3000 сессиях он сделал свою работу менее чем за минуту.
Замечу что в скриптах /etc/ppp/ лучше не использовать правила iptables.
Чтобы открыть порт веб-сервера в IPTables выполним команду:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Если используется HTTPS, то выполним также:
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Чтобы открыть доступ только конкретной сети, например 192.168.0.0/24:
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j ACCEPT
Можно также ограничить доступ по IP конфигурацией самого веб сервера, например как я описывал для Apache2 в этой статье — Контроль доступа Apache2.
Чтобы установить лимит подключений на порт 80:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/second -j ACCEPT
Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:
sudo iptables -D INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Посмотреть список правил можно командой:
sudo iptables -nvL
Смотрите также:
Настройка IPTables
Чтобы открыть доступ к SSH серверу в IPTables необходимо добавить правило:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Чтобы открыть доступ только конкретной сети, например 192.168.0.0/24:
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
Можно также ограничить доступ по IP конфигурацией самого SSH.
Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
Посмотреть список правил можно командой:
sudo iptables -nvL
Смотри также:
Установка и настройка SSH
Настройка IPTables
Посмотрим текущие правила IPTables:
iptables -nvL
Чтобы открыть порт серверу Iperf добавим правило:
sudo iptables -A INPUT -p tcp --dport 5001 -j ACCEPT
Чтобы открыть порт конкретному IP или сети:
sudo iptables -A INPUT -s 192.168.5.11/32 -p tcp --dport 5001 -j ACCEPT
Смотри также мои статьи:
Настройка IPTables
Тестируем пропускную способности сети с помошью Iperf
Первым делом посмотрим текущие правила IPTables:
iptables -nvL
Чтобы открыть порт ntopng добавим правило:
sudo iptables -A INPUT -m tcp -p tcp --dport 3000 -j ACCEPT
Чтобы открыть порт ntopng только для конкретной сети или IP:
sudo iptables -A INPUT -m tcp -p tcp --dport 3000 -s 10.0.0.0/24 -j ACCEPT
Смотри также мои статьи:
Настройка IPTables
Установка и настройка ntopng
Первым делом посмотрим текущие правила IPTables:
iptables -nvL
Чтобы nprobe мог принимать NetFlow данные, откроем ему порт:
sudo iptables -A INPUT -p udp --dport 2055 -j ACCEPT
Чтобы nprobe мог принимать NetFlow данные только от конкретной сети или IP:
sudo iptables -A INPUT -s 10.0.0.0/24 -p udp --dport 2055 -j ACCEPT
Смотри также мои статьи:
Настройка IPTables
Установка и настройка nprobe
Если в iptables блокируются все входящие соединения (INPUT DROP) и чтобы открыть внешний доступ к MySQL необходимо добавить правила:
iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:
iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT
Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:
iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
Посмотреть список правил можно командой:
sudo iptables -nvL
Замечу, для того чтобы открыть внешний доступ, также нужно в конфигурационном файле my.cnf закомментировать строку «bind-address = 127.0.0.1».
Если по умолчанию INPUT ACCEPT, то сначала укажем с каких IP разрешен доступ, а только последним правилом заблокируем всем остальным:
/sbin/iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port 3306 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.5 -p tcp --destination-port 3306 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
Например используя nmap можно проверить локально и внешне фильтруется ли доступ:
nmap -p 3306 localhost nmap -p 3306 192.168.1.5
Смотри также:
Настройка IPTables
Другие мои статьи о MySQL
Чтобы открыть доступ NTP клиенту и серверу в IPTables необходимо добавить правила:
Читать далее «IPTables правила для NTP и SNTP»