Я потратил некоторое время на размышления о двух вещах об этом iptables: большинство тех, кто ищет эти руководства, являются новичками, а во-вторых, многие уже ищут что-то довольно простое и уже разработанное.
Этот пример для веб-сервера, но вы можете легко добавить больше правил и адаптировать их к своим потребностям.
Когда вы видите изменение «x» для вашего IP-адреса
#!/bin/bash
# Очищаем таблицы iptables -F iptables -X # Очищаем NAT iptables -t nat -F iptables -t nat -X # таблица mangle для таких вещей, как PPPoE, PPP и ATM iptables -t mangle -F iptables -t mangle -X # Политики Я думаю, что это лучший способ для новичков и # все же неплохо, я объясню вывод (вывод) все потому, что это исходящие соединения #, ввод мы отбрасываем все, и сервер не должен пересылать. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Сохранять состояние. Все, что уже подключено (установлено), остается так: iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, мы не указываем интерфейс, потому что # мы хотим, чтобы он был для всех iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh только внутренне и из этого диапазона iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # мониторинг, например, если у них есть zabbix или какой-либо другой сервис snmp iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, пинг хорошо зависит от вас iptables -A INPUT -p icmp -s 192.168. xx / 24 - i $ intranet -j ACCEPT #mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh, если вы хотите отправить почту #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09 # SERVER_IP = "07.xxx" # IP server IP - реальный WAN IP вашего сервера LAN_RANGE = "2014.xx / 190 "# Диапазон LAN вашей сети или vlan # IP, которые никогда не должны входить в экстранет,состоит в том, чтобы использовать небольшую # логику, если у нас чисто WAN-интерфейс, он никогда не должен вводить # трафик типа LAN через этот интерфейс SPOOF_IPS = "192.168/21 0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0 .12 / 192.168.0.0 "# Действие по умолчанию - выполняется, когда какое-либо правило соответствует ACTION =" DROP "# Пакеты с тем же ip моего сервера через wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Пакеты с диапазоном LAN для WAN, я сказал это так, если у вас # какая-то конкретная сеть, но это избыточно со следующим # правилом внутри цикл "for" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Все сети SPOOF, не разрешенные wan для ip в $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION done
Как всегда жду ваших комментариев, следите за новостями в этом блоге, спасибо