четверг, 21 июня 2012 г.

Настройка сетевого экрана Shorewall

Shorewall - файрволл работающий на правилах iptables.


Скачаем shorewall

sudo apt-get install shorewall

Редактируем конфигурационный файл

sudo nano /etc/shorewall/shorewall.conf:

STARTUP_ENABLED=Yes

Определим интерфейсы

sudo nano /etc/shorewall/interfaces

Интерефейс eth0 назовем int, а eth1 назовем loc и внесем запись вида:

int eth0 detect tcpflags,blacklist,routefilter,nosmurfs,logmartians
loc eth1 detect tcpflags,detectnets,nosmurfs


Определим зоны

sudo nano /etc/shorewall/zones

fw firewall # описывается сам шлюз
int ipv4 # все то что за этим интерфейсом
loc ipv4 # все то что за этим интерфейсом

Включим маскарадинг

sudo nano /etc/shorewall/masq

eth0 eth1 # все то, что за eth1 будет выходить во внешний мир под eth0
Включить перенаправление пакетов

sudo nano /etc/sysctl.conf.

Задать параметр значения для net.ipv4.ip_forward = 1

Определим политику

sudo nano /etc/shorewall/policy внесем:
#SOURCE DEST POLICY LOG
$FW int ACCEPT info #с фаервола на интернет разрешено
$FW loc ACCEPT info #с фаервола на локальную разрешено
int $FW REJECT info #с интернета на фаервол запрещено
int loc REJECT info #с интернета на локальную запрещено
loc int REJECT info #с локальной на интернет запрещено
loc $FW REJECT info #с локальной на фаервол запрещено

Определим правила

sudo nano /etc/shorewall/rules

DNS/ACCEPT loc $FW #Разрешить DNS с локальной сети на шлюз
SSH/ACCEPT loc $FW #Разрешить SSH(Порт 22 tcp) с локальной сети на шлюз
Ping/ACCEPT loc $FW #Разрешить PING с локальной сети на шлюз
Ping/ACCEPT int $FW #Разрешить PING с интернета на шлюз
ACCEPT loc $FW tcp 25 #Разрешить SMTP с локальной сети на шлюз
ACCEPT int $FW udp 21 #Разрешить FTP c интернета на шлюз
ACCEPT loc $FW udp 21 #Разрешить FTP с локальной c интернета на шлюз
ACCEPT loc $FW tcp 443,1352,10000 #Так можно указать несколько портов
ACCEPT loc $FW tcp 10000:20000 #Указывается диапазон открытых портов от 10000 до 20000
ACCEPT loc:192.168.1.110 int #Так мы открыли выход в интернет компьютеру локальной сети с IP адресом loc:192.168.1.110
ACCEPT loc:~12-AS-44-xx-xx-xx int #Так мы открыли выход в интернет компьютеру локальной сети c мак адресом loc:~12-AS-44-xx-xx-xx
ACCEPT loc:192.168.1.110 int:78.159.xx.xx udp 80 #Так мы открыли доступ локальному компьютеру только на адрес 78.159.xx.xx и только к 80 порту

Перекинуть порт

Если нам необходимо перекинуть порт с нашего внешнего IP адреса на IP локальной сети (например необходимо дать удаленный доступ к локальному компьютеру по RPD 5555порт)

sudo nano /etc/shorewall/rules

ACCEPT int loc:192.168.1.100 tcp 5555 #Разрешаем доступ с интернета на локальный компьютер 192.168.1.100 на 5555 порт.

sudo nano /etc/shorewall/startДописываем строку

iptables -t nat -A PREROUTING -p tcp -d 78.xx.xx.xx --dport 5555 -j DNAT --to-destination 192.168.1.100 # т.е. все то, что придет на IP 78.xx.xx.xx, протокол tcp и порт 5555 перенаправится на локальный компьютер 192.168.1.100


запуск shorewall.

/etc/init.d/shorewall start

среда, 20 июня 2012 г.

Интернет-шлюз и торрент-сервак или вторая жизнь старого ПК

Интернет-шлюз и торрент-сервак из ничего.


  Для кого статья:  

- для энтузиастов желающим что-то сделать нужное, недорого и тем более собственноручно для себя любимого )) 

- если вы считаете, что это бред и напрасная потеря времени - эта статья не для Вас, далее не читайте, не нужно тратить свое драгоценное время.

 

 

Часть 1

Как известно оставлять стационарный ПК на круглосуточною роботу на закачках и раздачах экономически и эргономически не выгодно. Во-первых мощный ПК потребляет немало электроэнергии, во-вторых у гудящий ящик круглосуточно в углу как минимум четырмя ветиляторами тоже мало кому будет нравится. Как мне кажется, что не один пользователь уже задумывался: "Чтоб такое придумать??? "


 Есть не мало вариантов:

1.Промышленный роутер с возможностью подключения внешнего USB-винчестера. С дальнейшей настройкой на нем файл-сервера под управлением операционной системы Linux. Цена вопроса вытекает приблизительно 115..120 у.е. За роутер + внешний жесткий диск.
Плюсы: получаете WiFi точку доступа, свич для подключения еще 4х ПК, миниатюрные габариты, принт-сервер, малое энергопотребление. Минусы: ограниченные возможности по администрированию (по сравнению с ПК) и невысокая скорость при работе с жестким диском.
2.Старенький ноутбук. Здесь Ваши возможности будут ограничены самим аппаратом, т.е. наличием WiFi, если это надо. Возможность организации роутера и конечно объемом жесткого диска...........
3.Старенький ПК, который не используется и выбросить жалко. Здесь возможности не ограниченные. Он еще может Вам хорошо послужить. Вот этот пункт я и хочу более детально рассмотреть.



Построим чисто консольную систему, которая будет работать без всяких мониторов, клавиатур и мышей. Постараюсь изложить максимально доступно, чтоб ряды линуксоидов пополнились …



Системные требования:

  • Процессор: Intel Celeron 500, идеальней будет на ядре Coopermine (самый экономичный по энергопотреблению Pentium III 600Е), поскольку уже используют частоту шины 100\133 МГц, что положительно сказывается на общей производительности системы.
  • Оперативная память: на консольной операционке 128Mb больше чем достаточно (если будете использовать графический интерфейс – нужно 256…512Мб).
  • Видеокарта: не принципиальна поскольку нужна только для установки системы (идеально если интегрированна, нет вентилятора, нет шума, нет лишнего тепловыделения).
  • Жесткий диск: на Ваше усмотрение, может быть ограничен возможностями материнской платы, например старушка на чипсете intel-BX будет видеть диск максимум 130Гб. Но я так думаю что в таких завалявшихся системных блоках как минимум для начала какой-то диск уже есть. При этом вы должны помнить – напихивание в системник кучи мелкоразмерных винчестеров не удачный вариант! Это все лишние ватты вашего системника!
  • Сетевые картыдве (одна для получения интернета, вторая для раздачи интернета клиентской Windows-машине), или одна если вам шлюз не нужен. WiFi контроллер (опять же если нужно).
  • Дополнительно: расширитель USB2.0, контроллер SATA --- это дело наживное, по желанию, но сейчас обсуждение с малыми затратам, поэтому это обсуждаться пока не будет.

    Операционная система:

    Linux и только Linux, почему?
    1.один раз настроил и забыл;
    2.минимальный риск сетевой уязвимости;
    3.систему можно выбрать под минимальную конфигурацию Вашей машины;
    4.простота удаленного управления хоть с другой точки мира даже из сетей которые не позволяют это делать из под Windows (служба SSH). Притом способ выхода в интернет для управления не имеет значения, хоть с мобильного телефона.
    5.работа в локальной сети Windows – без проблем


    И главное, что внешний вид Вашего системника может быть любой, хоть из фанеры и его можно поставить на балконе от глаз подальше.




Часть 2.


Для описанной выше конфигурации превосходно подходит операционка Linux Ubuntu Server 10.10.
И так на примере постройки моей системы:
имеется престарелый но укомплектованный пациент типа
Pentim III 733MHz (посчитал самым оптимальным, шина 133МГц)
256Mb RAM (какая была в наличии, шина 133МГц)
m\b intel D815(video+lan) (уже не первый вариант мною опробованный)
Жесткие диски: Disk-On-Module 2Gb IDE, Hitachi 160Gb SATA. Поскольку небыло в наличии вместительного харда с портом IDE пришлось прибегнуть к такой странной схеме, а внешний SATA-контроллер не позволяет загрузку с диска. Пришлось поставить : Disk-On-Module.
Lan PCI 3Com905TX
Controller VIA: USB2.0 4-ports, SATA single port
БП ATX 150W


. Все действия по настройке, которые я буду излагать применимы к 99% Линукс-систем.
Начнем заливку софта:

1.Если у Вас нет отдельного винчестера но попробовать есть желание – это не проблема, даже если у Вас там стоит Виндовз и с ним нет желания расстаться. Воспользуйтесь любой программой для работы с разделами диска и высвободите 10Гб свободного места (расположение на диске не имеет значения), для системы это более чем достаточно. Установленный Линукс занимает около 800Мб (от 2Гб до 4Гб с графическим интерфейсом.).
2.Если у Вас отдельный винчестер, пункт №1 пропускаем
3.Загружаемся с CD дистрибутива Линукс, выбираем язык «Русский», выбор раскладки клавиатуры «Рус».
4.Выбор локации
5.Далее самый щекотливый раздел меню это «Разметка диска». Выбираем «Вручную» или «Эксперт» (в разных версиях по-разному). В моем случае я весь раздел диска hda1 отдал под систему (т.е. 2Гб), тип файловой системы – ext3 или ext4. Далее нужно выбрать точку монтирования, выбираем «/», это и будет системный раздел или root. На диске 160Гб создаю раздел подкачки sda1 300Мб, а оставшееся место под раздел sda2 с точкой монтирования «/home», т.е. домашний раздел, в нем будут храниться торренты. И он останется нетронутым в случае неудачной настройки\установки или просто переустановки. Далее по диску все, система отформатирует созданный Вами раздел. 6.Далее все банально просто. Система спросит дать имя пользователю\машине и пароли. Минимум 6 символов, придумывайте хороший пароль, поскольку он будет и паролем админа. Пересчитывание пакетов, выберите по умолчанию минимум «g», далее «q» для выхода, подтвердить действие и … пошла установка. В конце перезагрузка. Выключаете системник, отключаете CD-ROM , он вам более не нужен. И первый запуск.




Часть 3.


Если система установилась, вы увидите приглашение ввести логин и пароль. Теперь будем заливать все нужное.
  1. Проверяем наличие сети:
ifconfig


получаем на подобии


eth0 Link encap:Ethernet HWaddr 80:0A:E9:53:AA:2D
inet addr:170.26.49.67 Bcast: 170.26.49.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:208554 errors:0 dropped:0 overruns:0 frame:0
TX packets:125071 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40664531 (38.7 MiB) TX bytes:45919980 (43.7 MiB)
Interrupt:21 Base address:0x4c00


eth1 Link encap:Ethernet HWaddr 05:7A:E4:56:AA:28
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:208554 errors:0 dropped:0 overruns:0 frame:0
TX packets:125071 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40664531 (658.7 MiB) TX bytes:45919980 (477.7 MiB)
Interrupt:21 Base address:0x4c00

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18511 errors:0 dropped:0 overruns:0 frame:0
TX packets:18511 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:537155 (524.5 KiB) TX bytes:537155 (524.5 KiB)


если ваш интернет через мак-адрес, можете сделать подмену:
ifconfig eth0 hw ehter XXXXновый макXXXX

2. проверяем наличие интернета

 ping www.google.com.ua


получаем на выходе


PING www.l.google.com (209.85.148.104) 56(84) bytes of data.


64 bytes from fra07s07-in-f104.1e100.net (209.85.148.104): icmp_req=1 ttl=53 time=47.4 ms


64 bytes from fra07s07-in-f104.1e100.net (209.85.148.104): icmp_req=2 ttl=53 time=48.1 ms


64 bytes from fra07s07-in-f104.1e100.net (209.85.148.104): icmp_req=3 ttl=53 time=47.5 ms



3. Теперь ставим софт.


sudo apt-get update (обновление списка пакетов)
sudo apt-get install mc rtorrent dhcp3-server samba (двухпанельный файл-менеджер Midnigth Commander, торрен-клиент, DHCP-сервер для раздачи адресов в вашу подсеть и Самба-сервер чтоб можно было свободно перекачивать из сервака Виндовз-машинам)
Если есть желание, можно доставить консольные веб-браузеры lynx или elinks.


Полезная прога screen ------- мультиэкранный менеджер, заменит Вам сотни «рабочих столов», установлена по-умолчанию. Если ее не использовать, то при запуске какого-либо приложения запуженный процесс не даст вам больше ничего делать. Запускаете screen, и создаете дополнительные столы, сколько нужно Ctrl+A+C, прокрутка столов Ctrl+O(N)

4. Запускаем DHCP-сервер: (если вы не собираетесь использовать вашу машину как шлюз – этот пункт пропускаете)

Редактируем конфиг sudo nano /etc/dhcp3/dhcpd.conf


dns-updates off;


option T150 code 150 = string;


deny client-updates;


one-lease-per-client false;


allow bootp;


ddns-update-style none;


subnet 192.168.1.0 netmask 255.255.255.0 {


option routers 192.168.1.1;


option subnet-mask 255.255.255.0;


option domain-name "homeland.net";


option domain-name-servers 193.24.25.1;






range dynamic-bootp 192.168.1.24 192.168.1.30;


default-lease-time 21600;


max-lease-time 43200;


}


Сохраняем.


Перезапуск:
sudo /etc/init.d/dhcp3-server restart



5. Настраиваем торрент-клиент rtorrent


Нужно создать каталог /session по пути /home/<user>/session, в нем хранятся работающие сессии. И текстовый конфигурационный файл .rtorrent.rc по пути /home/<user>/


Содержимое файла:


#минимальное число пиров на торрент


min_peers = 1






#максимальное число пиров на торрент


max_peers = 1000






#максимальная скорость загрузки


download_rate = 0






#максимальная скорость отдачи. 0 - не ограничена


upload_rate = 0






#каталог для сохранения закачек или откуда буду сидироваться торренты.


directory = /home/<user>/share/






#каталог куда будет сохраняться состояние торрентов.


#Здесь, в этом примере, они сохраняются в папку session


session = /home/<user>/session/






#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы


#и если они есть то ставит их на закачку


schedule = watch_directory,5,5,load_start=/home/<user>/share/*.torrent






#проверяет каталоги 2 и 3 на новые *.torrent файлы и сохраняет закачки в соответствующие папки


#schedule = watch_directory_2,5,5,"load_start=/home/user/torrent_auto_load_2/*.torrent,


#d.set_directory=/home/user/download2"


#schedule = watch_directory_3,5,5,"load_start=/home/user/torrent_auto_load_3/*.torrent,


#d.set_directory=/home/user/download3"






#номер порта (или нескольких портов) который открывает клиент для обмена данными


port_range = 41830-41830










#случайный выбор порта для обмена данными. В данном случае он отключён


port_random = yes






#проверять хэш торрента после закачки


check_hash = yes




#сохранять сессию


session_save = yes






#принимать зашифрованные входящие соединения, устанавливать незашифрованные исходящие соединения,


#если возвращает ошибку, повторять с шифрованием, предпочитать открытый текст после установления


#зашифрованного соединения


encryption = allow_incoming,enable_retry,prefer_plaintext






#использовать udp


use_udp_trackers = yes

6. Правила iptables


Создаем текстовый файл, например ip_tables
и делаем его исполняемым
sudo chmod +x ip_tables
Заливаем в него содержимое правил на примере моего:


#!/bin/sh


iptables -F


iptables -t nat -F


iptables -X


iptables -P INPUT DROP


iptables -P FORWARD DROP


iptables -P OUTPUT ACCEPT


iptables -A INPUT -p ALL -i eth0(интерфейс с доступом в мир) -m state --state ESTABLISHED,RELATED -j ACCEPT


; далее перечень открытых портов
iptables -A INPUT -p tcp -m tcp --dport 41830 -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 135 -j ACCEPT


iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT


iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT


iptables -A INPUT -p icmp -j ACCEPT


iptables -A FORWARD -i eth1(внутр. подсеть) -o eth0(мировая сеть) -s 192.168.1.0/24 -j ACCEPT


iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT


iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT






iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -t nat -A POSTROUTING -p ALL -o eth0 -j SNAT --to-source 140.156.12.45(ваш мировой адрес)


далее файл с правилами нужно разместить чтоб он загружался автоматически, например можно в /etc/network/if-up.d/

7. Теперь нужно открыть доступ других пользователей к интернету через ваш новый шлюз, редактируем файл /etc/sysctl.conf .

Раскомментирум строку


net.ipv4.ip_forward=1





8. Теперь нужно настроить, чтоб ваши другие машины подсети или медиацентры имели доступ к серваку.

Если без всяких парольных доступов, то все проще простого. Редактируем конфиг /etc/samba/smb.conf


[global]


workgroup = название вашей рабочей группы
server string = Samba Server Version %v






netbios name = сетевое имя для Виндовс сети




;interfaces = lo eth0 192.168.1.24 192.168.1.25 192.168.1.30 192.168.1.26 192.168.1.27 192.168.1.28
(если раскомментировать, будет доступ у указанных адресов)
; hosts allow = 127. 192.168.12. 192.168.13.






# logs split per machine


log file = /var/log/samba/log.%m


# max 50KB per log file, then rotate


max log size = 50






security = share


passdb backend = tdbsam




local master = yes




[имя расшаренного рессурса]


comment = что угодно
path = /home/путь к расшаренной папке


public = yes


guest ok = yes


browseable = yes


writable = yes


printable = no






Сохранить и запустить:
sudo /etc/init.d/smbd start


например что имеем на выходе:
1. из старого железа
 



 

2. из нового железа (корпус из старого видеомагнитофона)

 


Решение проблем со звуком (персоналки, ноутбуки и т.д.)

Установка, обновление, переконфигурирование системы вывода звука ALSA

 Если у вас в Ubuntu нет звука, не работает микрофон или неправильно настроены каналы вывода звука, то вам придётся скачать и пересобрать вручную систему вывода звука ALSA. 

 Перед тем, как выполнять инструкции, приведённые на этой странице, проверьте настройки микшера и регулятора громкости в Ubuntu, в современных версиях особенных проблем c выводом звука замечено не было.



Сборка, установка и конфигурирование ALSA

Все команды выполняются в терминале. Копируются отсюда и вставляются в терминал с помощью «правого клика мыши ⇒ вставить»
  • 1. Для начала следует установить необходимые пакеты для сборки ПО из исходных текстов:
sudo apt-get update

Для Ubuntu 10.04:
sudo apt-get install linux-headers-`uname -r` linux-backports-modules-alsa-`uname -r` linux-backports-modules-alsa-lucid-generic build-essential

Для Ubuntu 10.10:
sudo apt-get install linux-headers-`uname -r` linux-backports-modules-alsa-`uname -r` linux-backports-modules-alsa-maverick-generic build-essential

Далее:
sudo apt-get install gcc gawk libgettext-ruby-util libgettext-ruby1.8 libncurses5-dev libncursesw5-dev xmlto autoconf automake checkinstall pkg-config
sudo apt-get upgrade
 
 

Установка этих пакетов займет продолжительное время и потянет за собой около 400МБ траффика. Выполнять дальнейшие инструкции без их установки бессмысленно.
Все команды рекомендуется вводить по одной, чтобы отслеживать процесс на возможные ошибки. Продолжать сборку при возникновении ошибки бессмысленно!
Если не можете выяснить ее причину обратитесь на форум. 


  • 2. Скачиваем исходные коды ALSA с официального сайта, желательно самые последние (на момент последнего обновления статьи 29 Января 2012г. это была версия 1.0.25) :
Внимание! Поддержка Alsa версий выше 1.0.23 есть в ядрах версий 2.6.38 и выше.
Сборка на старом ядре в результате приведет к тому, что Alsa не будет распознавать звуковые карты.
Последние сборки ядра можно скачать отсюда

wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.25.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.25.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.25.tar.bz2
wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.25.tar.bz2
wget ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-1.0.25.tar.bz2
  • 3. Распаковываем архивы:
tar jxvf alsa-driver-1.0.25.tar.bz2
tar jxvf alsa-lib-1.0.25.tar.bz2
tar jxvf alsa-utils-1.0.25.tar.bz2
tar jxvf alsa-firmware-1.0.25.tar.bz2
tar jxvf alsa-plugins-1.0.25.tar.bz2
  • 4. Собираем и устанавливаем alsa-driver:
cd
rm -rf ~/.pulse*
cd ./alsa-driver-1.0.25
./configure
make
sudo make install 
  • 5. Собираем и устанавливаем alsa-lib:
cd
cd ./alsa-lib-1.0.25
./configure
make
sudo make install 
  • 6. Собираем и устанавливаем alsa-utils:
cd
sudo /sbin/alsa-utils stop
sudo /sbin/alsa stop
cd ./alsa-utils-1.0.25
./configure
make
sudo checkinstall 
 
 
Если при компиляции alsa-utils выдает ошибку вроде такой: mv: невозможно выполнить stat для «t-ja.gmo»: Нет такого файла или каталога то нужно установить пакет gettext: sudo apt-get install gettext
Внимательно смотрим чтобы сборка alsa-utils прошла без ошибок! На некоторых компьютерах сборка не проходит. Если ошибка всеже есть, скачиваем готовый пакет по ссылкам:
 
 
 
  • 7. Собираем и устанавливаем alsa-firmware:
cd
cd ./alsa-firmware-1.0.25
./configure
make
sudo make install
  • 8. Собираем и устанавливаем alsa-plugins:
cd
cd ./alsa-plugins-1.0.25
./configure
make
sudo make install
  • 9. Настраиваем ALSA. Выбираем нужную звуковую карту, нажимаем «ок» и на последующие вопросы отвечаем всегда «Да/Y»:
sudo alsaconf
  Начиная с версии 1.0.24 alsaconf нужно брать в папке alsa-utils/alsaconf:
cd cd ./alsa-utils-1.0.25/alsaconf/ chmod +x alsaconf sudo ./alsaconf
  • 10. Перезаружаем систему и настраиваем громкость вывода звука, ставим все на максимум (кроме PC Beep):
alsamixer
все права на статью принадлежат UBUNTU.RU