Pull to refresh

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

Reading time9 min
Views2.7K
Публикую часть своих конфигурационных файлов, а если быть точным — заготовок конфигов, чтобы их не забыть/не потерять, и возможно помочь кому-либо. Все данные конфиги подготовлены для 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...»
Tags:
Hubs:
+3
Comments7

Articles