Несколько полезных конфигов для debian

    Публикую часть своих конфигурационных файлов, а если быть точным — заготовок конфигов, чтобы их не забыть/не потерять, и возможно помочь кому-либо. Все данные конфиги подготовлены для debian squeeze (на настоящий момент testing), но, по преемственности должны работать в ubuntu.
    Данные конфигурационные файлы включают:
    Настройку основных, достоверных репезиториев для debian (в конфиге приведен репозиторий yandex)
    Конфигурационный файл сети, включая готовое решение для организации wifi ad-hoc сети (wifi на базе atheros, с madwifi есть некоторые особенности)
    Конфигурацию для работы с dns серверами, включая дополнительные резервные.
    Конфигурацию dhcp сервера, адаптированную для работы с двумя сетевыми картами
    Скрипт позволяющий запускать iptables как любой другой демон (сам конфиг iptables отсутствует).


    1. APT
    PS: Приведенные настройки в /etc/apt/preferences полезны лишь в том случае, когда применяется несколько различных репозиториев сразу, например stable совместно с unstabe, данное решение позволяет снизить вероятность возникновения ошибок.
    /etc/apt/preferences

    #Package: *
    #Pin: release a=squeeze
    #Pin-Priority: 600
    #Package: *
    #Pin: release a=squeeze-backports
    #Pin-Priority: 500
    Package: *
    Pin: release a=testing
    Pin-Priority: 450
    Package: *
    Pin: release a=unstable
    Pin-Priority: 400
    Package: *
    Pin: release a=experimental
    Pin-Priority: 350

    Здесь собраны основные репозитории, с ориентацией на зеркало yandexа, как наиболее ближнего
    /etc/apt/sources.list
    # Yandex mirror [HTTP]

    # Main Debian mirror
    #deb mirror.yandex.ru/debian lenny main contrib non-free
    deb mirror.yandex.ru/debian squeeze main contrib non-free
    #deb mirror.yandex.ru/debian unstable main contrib non-free
    #deb mirror.yandex.ru/debian experimental main contrib non-free
    # Main Debian mirror [source]
    #deb-src mirror.yandex.ru/debian lenny main contrib non-free
    deb-src mirror.yandex.ru/debian squeeze main contrib non-free
    #deb-src mirror.yandex.ru/debian unstable main contrib non-free
    #deb-src mirror.yandex.ru/debian experimental main contrib non-free

    # Security fix
    #deb mirror.yandex.ru/debian-security lenny/updates main contrib non-free
    deb mirror.yandex.ru/debian-security squeeze/updates main contrib non-free
    # Security fix [source]
    #deb-src mirror.yandex.ru/debian-security lenny/updates main contrib non-free
    deb-src mirror.yandex.ru/debian-security squeeze/updates main contrib non-free

    # Volatile
    #deb mirror.yandex.ru/debian-volatile lenny/volatile main contrib non-free
    #deb mirror.yandex.ru/debian-volatile lenny/volatile-sloppy main contrib non-free
    # Volatile [source]
    #deb-src mirror.yandex.ru/debian-volatile lenny/volatile main contrib non-free
    #deb-src mirror.yandex.ru/debian-volatile lenny/volatile-sloppy main contrib non-free

    # Backports
    #deb mirror.yandex.ru/backports.org lenny-backports main contrib non-free
    # Backports [source]
    #deb-src mirror.yandex.ru/backports.org lenny-backports main contrib non-free

    # Debian-multimedia
    #deb mirror.yandex.ru/debian-multimedia lenny main
    deb mirror.yandex.ru/debian-multimedia squeeze main
    #deb mirror.yandex.ru/debian-multimedia unstable main
    #deb mirror.yandex.ru/debian-multimedia experimental main
    # Debian-multimedia [source]
    #deb-src mirror.yandex.ru/debian-multimedia lenny main
    deb-src mirror.yandex.ru/debian-multimedia squeeze main
    #deb-src mirror.yandex.ru/debian-multimedia unstable main
    #deb-src mirror.yandex.ru/debian-multimedia experimental main

    # Opera
    #deb mirror.yandex.ru/debian-opera lenny non-free
    #deb deb.opera.com/opera squeeze non-free
    #deb deb.opera.com/opera unstable non-free
    #deb mirror.yandex.ru/debian-opera sid non-free

    # Virtualbox
    #deb download.virtualbox.org/virtualbox/debian lenny non-free

    Настройки сети
    2. Network
    /etc/resolv.conf

    # local dns server
    #nameserver localhost

    # homenet dns servers
    nameserver *.*.*.*
    nameserver *.*.*.*

    # centertelecom dns servers
    nameserver 213.140.228.218
    nameserver 213.140.231.3

    # google dns servers
    nameserver 8.8.8.8
    nameserver 8.8.4.4

    # opendns dns servers
    nameserver 208.67.222.222
    nameserver 208.67.220.220

    /etc/network/interfaces
    # The loopback network interface
    auto lo
    iface lo inet loopback
    address 127.0.0.1
    netmask 255.0.0.0

    # The primary network interface
    allow-hotplug eth0
    allow-hotplug eth1

    # Внешняя карта
    auto eth1
    #iface eth1 inet dhcp
    iface eth1 inet static
    address *.*.*.*
    network *.*.*.*
    netmask *.*.*.*
    broadcast *.*.*.255
    gateway *.*.*.*

    #Внутрисетевая карта
    auto eth0
    #iface eth0 inet dhcp
    iface eth0 inet static
    address 192.168.20.1
    network 192.168.20.0
    netmask 255.255.255.0
    broadcast 192.168.20.255
    #gateway 192.168.10.2

    # WiFi карта:
    # WiFi карта Ad-Hoc mode
    auto wlan0
    iface wlan0 inet static
    address 192.168.40.1
    network 192.168.40.0
    netmask 255.255.255.0
    broadcast 192.168.40.255
    wireless-mode ad-hoc
    wireless-channel 7
    wireless-rate 54M
    #wireless-rate auto
    wireless-essid adhoc
    #gateway 192.168.40.2

    /etc/dhcp3/dhcpd.conf
    #Конфигурация для 2 интерфейсов с 2мя подсетями
    ddns-update-style none;
    #Доменное имя, DNS сервера и время аренды IP адресов клиентам, по умолчанию неделя, максимум 10 суток.
    option domain-name «my dns server»;
    option domain-name-servers 213.140.228.218, 213.140.231.3;
    default-lease-time 604800;
    max-lease-time 864001;

    # Логирование работы сервера
    log-facility local7;

    #Подсеть адресов для выдачи клиентам, DNS доменное имя, широковещательный адрес, и диапазон выдаваемых адресов.

    subnet 192.168.20.0 netmask 255.255.255.0 {
    range 192.168.20.10 192.168.20.20;
    option domain-name-servers 213.140.228.218, 213.140.231.3;
    # option domain-name-servers 192.168.20.1;
    option domain-name «my dns server»;
    option routers 192.168.20.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.20.255;
    option ntp-servers 192.168.20.1;
    option netbios-name-servers 192.168.20.1; # WINS
    option netbios-dd-server 192.168.20.1; # SMB
    default-lease-time 604800;
    max-lease-time 864001;
    filename «pxelinux.0»;
    }

    subnet 192.168.40.0 netmask 255.255.255.0 {
    range 192.168.40.10 192.168.40.30;
    option domain-name-servers 213.140.228.218, 213.140.231.3;
    # option domain-name-servers 192.168.40.1;
    option domain-name «my dns server»;
    option routers 192.168.40.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.40.255;
    default-lease-time 604800;
    max-lease-time 864001;
    }

    /etc/init.d/iptablesd
    #!/bin/bash
    # ОПИСАНИЕ iptables КАК СЕРВИСА:

    ### BEGIN INIT INFO
    # Provides: iptablesd
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Example initscript
    # Description: This file should be used to construct scripts to be
    # placed in /etc/init.d.
    ### END INIT INFO

    IPTABLES=/sbin/iptables
    TC=/sbin/tc

    # Описание команды start
    case "$1" in
    start)
    sh /etc/iptables/iptables_start
    ;;
    # Описание команды stop
    stop)
    sh /etc/iptables/iptables_stop
    ;;
    # Описание команды restart
    restart)
    $0 stop
    $0 start
    ;;
    # Описание команды status
    status)
    #iptables -t nat -n -L -v
    #iptables -L -v
    iptables -L -n -v
    echo "[qdisc IN]"
    $TC -s qdisc show dev eth1
    echo "[class IN]"
    $TC -s class show dev eth1
    echo "[filter IN]"
    $TC -s filter show dev eth1
    ;;
    # Описание команды запроса возможностей
    *)
    echo «Usage: $0 {start|stop|restart|status}»
    ;;
    esac
    exit 0

    /etc/iptables/iptables_start
    В данном файле должен находится стартовый скрипт, настраивающий iptables, свой пока не привожу, так как он все еще настраивается, по завершению скорее всего сделаю отдельный пост, и выложу. Готовые решения можно в достатке найти на просторах интернета, и просто добавить в данный файл.

    PS: На все файлы, касающиеся iptables необходимо выставить chmod +x:
    chmod +x /etc/init.d/iptablesd
    chmod +x /etc/iptables/iptables_start
    chmod +x /etc/iptables/iptables_stop

    PPS: Так как некоторых данная заметка все таки заинтересовала, решил добавить упрощенный вариант iptables включающий некоторые правила защиты и NAT

    #!/bin/bash
    #Firewall script compiled by sdm 06 2010

    #-------------------------------------------------------------------------------
    # ОПРЕДЕЛЯЕМ УТИЛИТЫ:

    IPTABLES=/sbin/iptables
    DEPMOD=/sbin/depmod
    MODPROBE=/sbin/modprobe
    IP=/sbin/ip
    IFCONFIG=/sbin/ifconfig

    GREP=/bin/grep
    AWK=/usr/bin/awk
    SED=/bin/sed
    ECHO=/bin/echo

    #-------------------------------------------------------------------------------
    # ОПРЕДЕЛЯЕМ ИНТЕРФЕЙСЫ:

    # Внешняя карта
    EXTIF=«eth1»
    #EXTIP=«192.168.10.7»
    #EXTBC=«255.255.255.0»
    EXTIP="`$IFCONFIG $EXTIF | $GREP addr: | $SED 's/.*addr:\([^ ]*\) .*/\1/'`"
    EXTBC="`$IFCONFIG $EXTIF | $GREP Bcast: | $SED 's/.*Bcast:\([^ ]*\) .*/\1/'`"
    EXTMSK="`$IFCONFIG $EXTIF | $GREP Mask: | $SED 's/.*Mask:\([^ ]*\)/\1/'`"
    EXTNET="$EXTIP/$EXTMSK"

    # Внутрисетевая карта
    INTIF=«eth0»
    #INTIP=«192.168.20.1»
    #INTBC=«255.255.255.0»
    INTIP="`$IFCONFIG $INTIF | $GREP addr: | $SED 's/.*addr:\([^ ]*\) .*/\1/'`"
    INTBC="`$IFCONFIG $INTIF | $GREP Bcast: | $SED 's/.*Bcast:\([^ ]*\) .*/\1/'`"
    INTMSK="`$IFCONFIG $INTIF | $GREP Mask: | $SED 's/.*Mask:\([^ ]*\)/\1/'`"
    INTNET="$INTIP/$INTMSK"

    # WiFi карта
    WIFIIF=«wlan0»
    #WIFIIP=«192.168.40.1»
    #WIFIBC=«255.255.255.0»
    WIFIIP="`$IFCONFIG $WIFIIF | $GREP addr: | $SED 's/.*addr:\([^ ]*\) .*/\1/'`"
    WIFIBC="`$IFCONFIG $WIFIIF | $GREP Bcast: | $SED 's/.*Bcast:\([^ ]*\) .*/\1/'`"
    WIFIMSK="`$IFCONFIG $WIFIIF | $GREP Mask: | $SED 's/.*Mask:\([^ ]*\)/\1/'`"
    WIFINET="$WIFIIP/$WIFIMSK"

    # Loop device/localhost
    LPDIF=«lo»
    LPDIP=«127.0.0.1»
    LPDBC=«127.0.0.255»
    LPDMSK=«255.0.0.0»
    LPDNET="$LPDIP/$LPDMSK"

    echo «External Interface: $EXTIF $EXTNET»
    echo «Internal Interface: $INTIF $INTNET»
    echo «Wireless Interface: $WIFIIF $WIFINET»
    echo «Loop device/localhost: $LPDIF $LPDNET»

    #-------------------------------------------------------------------------------
    # СБРАСЫВАЕМ ПРЕДЫДУЩИЕ НАСТРОЙКИ:

    #echo -en "\nClearing any existing rules and setting default policy.."
    # Удаляем правила
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -t mangle -F

    # Очищаем нестандартные правила
    $IPTABLES -X
    $IPTABLES -t nat -X
    $IPTABLES -t mangle -X

    #-------------------------------------------------------------------------------
    # ОПРЕДЕЛИМ ПОЛИТИКУ ПО УМОЛЧАНИЮ:

    # Запретить все входящие соединения
    $IPTABLES -P INPUT DROP
    # Разрешить все исходящие соединения
    $IPTABLES -P OUTPUT ACCEPT
    # Разрешить все проходящие (nat) соединения
    $IPTABLES -P FORWARD ACCEPT

    # Разрешаем все пакеты в установленных сессиях
    $IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    # Отбрасываем все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса
    $IPTABLES -I INPUT -m conntrack --ctstate INVALID -j DROP
    $IPTABLES -I FORWARD -m conntrack --ctstate INVALID

    # Блокируем все попытки открыть входящее TCP-соединение не SYN-пакетом.
    $IPTABLES -I INPUT -m conntrack --ctstate NEW -p tcp! --syn -j DROP

    # Разрешаем прохождение любого трафика по интерфейсу обратной петли.
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT

    # Если интерфейс не lo, то запрещаем входить в список его адресов.
    $IPTABLES -A INPUT -s 127.0.0.1/255.0.0.0! -i lo -j DROP

    #-------------------------------------------------------------------------------
    # ВКЛЮЧАЕМ ФОРВАРДИНГ IP В ЯДРЕ:

    echo «Firewall: Enabling forwarding..»
    echo «1» > /proc/sys/net/ipv4/ip_forward
    echo «Firewall: Enabling DynamicAddr..»
    echo «1» > /proc/sys/net/ipv4/ip_dynaddr

    # Включаем маскарадинг для разрешения доступа в интернет
    echo «Firewall: Enabling SNAT (MASQUERADE) functionality on $EXTIF»
    $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

    #-------------------------------------------------------------------------------
    # УСТАНАВЛИВАЕМ РАЗРЕШЕНИЯ

    # Из входящих пакетов ICMP разрешаем PING
    $IPTABLES -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT

    echo «Firewall: started...»

    Скрипт /etc/iptables/iptables_stop составляется согласно правилам в /etc/iptables/iptables_start, но если у кого-то могут возникнуть трудности то здесь приведен мой скрипт, отключающий переброс портов NAT, и запрещающий новые входящие соединения.

    /etc/iptables/iptables_stop
    #!/bin/bash
    #-------------------------------------------------------------------------------
    # ОПРЕДЕЛЯЕМ УТИЛИТЫ:

    IPTABLES=/sbin/iptables

    #-------------------------------------------------------------------------------
    # СБРАСЫВАЕМ ПРЕДЫДУЩИЕ НАСТРОЙКИ:

    echo «Firewall: Clearing any existing rules and setting default policy..»

    # Удаляем правила
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -t mangle -F

    # Очищаем нестандартные правила
    $IPTABLES -X
    $IPTABLES -t nat -X
    $IPTABLES -t mangle -X

    #-------------------------------------------------------------------------------
    # ОПРЕДЕЛИМ ПОЛИТИКУ ПО УМОЛЧАНИЮ:

    # Запретить все входящие соединения
    $IPTABLES -P INPUT DROP
    # Разрешить все исходящие соединения
    $IPTABLES -P OUTPUT ACCEPT
    # Запретить проходящие (nat) соединения
    $IPTABLES -P FORWARD DROP

    # Разрешаем пакеты в установленных сессиях
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
    $IPTABLES -A INPUT -m state --state INVALID -j DROP
    $IPTABLES -A FORWARD -m state --state INVALID -j DROP

    # Разрешаем прохождение любого трафика по интерфейсу обратной петли.
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT

    # Если интерфейс не lo, то запрещаем входить в список его адресов.
    $IPTABLES -A INPUT -s 127.0.0.1/255.0.0.0! -i lo -j DROP

    # Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.
    $IPTABLES -A INPUT -m state! -i lo --state NEW -j DROP

    #-------------------------------------------------------------------------------
    # ВЫКЛЮЧАЕМ ФОРВАРДИНГ IP В ЯДРЕ:

    echo «Firewall: Disabling forwarding..»
    echo «0» > /proc/sys/net/ipv4/ip_forward
    echo «Firewall: Disabling DynamicAddr..»
    echo «0» > /proc/sys/net/ipv4/ip_dynaddr

    echo «Firewall stopped...»
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      0
      Спасибо. Скопирую дополнительные DNS'ы и локальные репозитории яндекса! Еще раз спасибо.
        0
        За приоритеты тепозиториев — спасибо.
          0
          а че про «pre-up» в interfaces не слышали?
            0
            про «pre-up» знаю, но /etc/init.d/iptablesd status не сделать, к тому же в приведенном скрипте ip адрес определяется автоматически, а вот как с этим дела в случае с «pre-up» не знаю…
              0
              о да, status это тема — ради этого стоит велосипед городить.
              автоматическое определение чего-либо хорошо только при банальных конфигурациях.
            0
            С iptables работаете неправильно… ставьте пакет iptables-persistent
            и через iptables-save правила будут сохраняться в /etc/iptables/rules и восстанавливаться оттуда через iptables-restore
              0
              Данный скрипт начинался редактироваться когда в debian такого пакета не было (еще lenny тестировался :) ) и принято было делать именно так… С тех пор как-то и не замечал, что iptables-save доступен.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое