Iptables
Iptables - приложение, которое позволяет системному администратору проводить настройки таблиц брандмауэра ядра Linux в виде цепей и правил, которые он хранит. В настоящее время используются для различных протоколов; относится к IPv4, ip6tables на IPv6, arptables к ARP, и т.д. Реализованы в виде различных модулей Netfilter.
Iptables требует повышенных привилегий для конфигурирования и должна быть выполнена только пользователем root, в противном случае она не сможет функционировать. На большинстве систем на базе OS Linux, Iptables устанавливается в /usr/sbin/iptables. Он также может быть найден в /sbin/iptables, но так как iptables не основа системы, а больше как сервис, предпочтительным местом остается /usr/sbin.
Содержание
QoS для Linux, кто использует торрент-клиенты
Итак, задача: чтобы торрент качал как надо и в то же время можно было достаточно комфортно сёрфить страницы. Для этого мы отделим приоритеты для портов до 1024 и после. Те порты, которые будут до 1024-го, будут более значимы. Таким образом канал будет использоваться наиболее полно, нежели просто ограничивать торрент-клиент на время. Итак, список правил:
iptables -A PREROUTING -t mangle -p tcp --sport 0:1024 -j TOS --set-tos Minimize-Delay iptables -A PREROUTING -t mangle -p tcp --sport 1025:65535 -j TOS --set-tos Maximize-Throughput iptables -A OUTPUT -t mangle -p tcp --dport 0:1024 -j TOS --set-tos Minimize-Delay iptables -A OUTPUT -t mangle -p tcp --dport 1025:65535 -j TOS --set-tos Maximize-Throughput
Как удалить в iptables правило по номеру
iptables -L INPUT --line-numbers iptables -D INPUT номер iptables -t nat -L POSTROUTING --line-numbers iptables -t nat -D POSTROUTING номер
Графическая оболочка для iptables
Webmin
Есть модуль, где реализовано управление iptables в данном ПО.
Настройка для начинающих
Небольшой первоначальный скрипт (правила, iptables faq) для десктопа или простого сервера. В данном случае примеры по работе с портами того или иного ПО, запущенного на вашем компьютере. На любом компьютере необходимо соблюдать меры безопасности. Миф о том, что Linux более защищен - не верен, все зависит от корявости рук администратора. Есть и хорошо защищенные Windows-системы, как и открытые практически любому Linux-системы. Поэтому стоит все-таки немного подумать и о сетевой защите компьютера. Ниже добавлены некоторые правила для iptables, которые могут вначале пригодиться.
Специально заменил $IPT на /sbin/iptables, если кому-то понадобится только одно правило, чтобы не менять что-либо - просто скопировал и выполнил. Естественно, здесь пока мало правил, нет различных VPN и т.д., если есть желание - добавьте.
Эти строки можно скопировать целиком в какой-либо скрипт и просто его выполнить. Для обычных случаев этого вполне хватит. Если какое-либо приложение не может выйти в сеть, специально добавлено логирование. Просто открывайте tail -f /var/log/syslog (или ваше, если отличное от Ubuntu) и смотрите! Если есть вопросы - добавьте их в обсуждение, будем вместе решать.
PS Кроме этих правил, подумайте о том, что стоит взять из статьи Оптимизация TCP.
Скрипт и правила IPTABLES
#!/bin/sh echo "0" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/tcp_syncookies echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses #необходим для корректной работы FTP-сервера sbin/modprobe ip_conntrack_ftp #Сбрасываем старые данные и правила /sbin/iptables -F /sbin/iptables -F -t nat /sbin/iptables -F -t mangle /sbin/iptables -X /sbin/iptables -X -t nat /sbin/iptables -X -t mangle echo Old Rules Flushed #Устанавливаем правила на DROP по-умолчанию. (Set Default-Drop Policy) /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT DROP #Create New Chain Called BAD_PACKETS /sbin/iptables -N BAD_PACKETS #Разрешаем работу локального интерфейса, того самого 127.0.0.1 (Allow The Loopback) /sbin/iptables -A INPUT -i lo -j ACCEPT #Jump To BAD_PACKETS /sbin/iptables -A INPUT -j BAD_PACKETS #Разрешаем поддерживать открытыми уже установленные соединения (Allow Established Connections) /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем получать запросы от клиентов DHCP. (Allow DHCP) /sbin/iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT #Разрешаем присоединяться к SSH, при условии, что используется стандартный 22 порт (Allow SSH) /sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT #Разрешаем сетевую печать на этом компьютере. (Allow net print) /sbin/iptables -A INPUT -p UDP -i eth0 --dport 631 -j ACCEPT #Разрешаем webmin на стандартном 10000 порту (Allow webmin) /sbin/iptables -A INPUT -p TCP -i eth0 --dport 10000 -j ACCEPT #Allow avahi-daemon /sbin/iptables -A INPUT -p TCP -i eth0 --dport 5353 -j ACCEPT #Allow input torrents-client /sbin/iptables -A INPUT -p TCP -i eth0 --dport 51413 -j ACCEPT /sbin/iptables -A INPUT -p UDP -i eth0 --dport 51413 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i eth0 --dport 6881 -j ACCEPT /sbin/iptables -A INPUT -p UDP -i eth0 --dport 6881 -j ACCEPT #Allow Samba From Specified Hosts /sbin/iptables -A INPUT -p TCP -i eth0 --dport 137:139 -j ACCEPT /sbin/iptables -A INPUT -p UDP -i eth0 --dport 137:139 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i eth0 --sport 137:139 -j ACCEPT /sbin/iptables -A INPUT -p UDP -i eth0 --sport 137:139 -j ACCEPT #Allow CMP Replies From Specified Hosts (Ping) /sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT /sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT #Разрешаем подключаться к SMTP на 587 порт /sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT #Log /sbin/iptables -A INPUT -j LOG --log-prefix "INPUT DROP: " #Accept Loopback On OUTPUT /sbin/iptables -A OUTPUT -o lo -j ACCEPT #Разрешаем поддерживать открытыми уже установленные соединения. (Allow Established Connections) /sbin/iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #Разрешить получать IP по DHCP (Allow DHCP) /sbin/iptables -A OUTPUT -p UDP --dport 67 --sport 68 -j ACCEPT #Allow HTTP, FTP, DNS, SSH, SMTP & Port 443 Outbound /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 443 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 80 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 53 -j ACCEPT /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 53 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 25 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 22 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 21 -j ACCEPT #Allow POP, IMAP /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 110 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 143 -j ACCEPT #Allow IMAPS /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 993 -j ACCEPT #Allow output ICQ /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 5190 -j ACCEPT #Разрешить выход на IRC. Allow output IRC /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6667 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6668 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6669 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 8001 -j ACCEPT #Allow output CUPS (for printers in net) /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 631 -j ACCEPT #Allow output avahi-daemon /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 5353 -j ACCEPT #Allow output NTP (for ntpdate) /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 123 -j ACCEPT #Allow output Urban Terror (ну это просто необходимость) /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 27960 -j ACCEPT #Allow specify ports /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2046 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2050 -j ACCEPT #Allow Samba From Specified Hosts /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 137:139 -j ACCEPT /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 137:139 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 445 -j ACCEPT /sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 445 -j ACCEPT #Allow ICMP /sbin/iptables -A OUTPUT -p ICMP -o eth0 --icmp-type 8 -j ACCEPT #Drop /sbin/iptables -A OUTPUT -j LOG --log-prefix "OUTPUT DROP: " /sbin/iptables -A BAD_PACKETS -p TCP ! --syn -m state --state NEW -j DROP /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL ALL -j DROP /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL NONE -j DROP /sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL SYN \-m state --state ESTABLISHED -j DROP /sbin/iptables -A BAD_PACKETS -p ICMP --fragment -j DROP /sbin/iptables -A BAD_PACKETS -m state --state INVALID -j DROP /sbin/iptables -A BAD_PACKETS -d 255.255.255.255 -j DROP /sbin/iptables -A BAD_PACKETS -j RETURN echo "Rules written."
Как удалить в Iptables правило
iptables -L INPUT --line-numbers iptables -D INPUT номер
iptables -t nat -L POSTROUTING --line-numbers iptables -t nat -D POSTROUTING номер