Я деякий час думав про дві речі щодо 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 VUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Зберігати стан. Все, що вже підключено (встановлено), залишається так: iptables -A INPUT -m state --state ВСТАНОВЛЕНО, ПОВ'ЯЗАНО -j ACCEPT # Пристрій циклу. 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 ip -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 з postgres - це порт 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 сервера - справжній wan ip вашого сервера LAN_RANGE = "2014.xx / 190 "# Діапазон локальної мережі вашої мережі або вашого 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 # Пакети з діапазоном локальної мережі для 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 робить iptables -A ВХІД -i $ екстранет -s $ ip -j $ ДІЯ iptables -А ВИХІД -o $ екстранет -s $ ip -j $ ДІЯ виконана
Як завжди, я чекаю ваших коментарів, слідкуйте за цим блогом, дякую