DHCP3-SERVER
/etc/dhcp3/dhcpd.conf:
default-lease-time 2592000; #дефолтное время аренды адреса (сек.)
max-lease-time 2592000; #максимальное время аренды адреса
log-facility local7; #логи работы вести будем
option subnet-mask 255.255.255.0; #маска подсети
option broadcast-address 192.168.20.255; #широковещательные запросы
option routers 192.168.20.1; #дефолтный gateway
option domain-name-servers 91.103.204.230, 91.103.207.230; #транслируемые DNS
ddns-update-style none;
ddns-updates off;
# option domain-name «mydomain.org»; # типа имя домена
subnet 192.168.20.0 netmask 255.255.255.0 {range 192.168.20.50 192.168.20.250; interface eth1;} # описание диапазона раздачи адресов и интерфейса на котором раздавать
#Далее можем намертво вписать статические адреса клиентам сети:
host petya {
hardware ethernet 00:50:bf:45:33:78;
fixed-address 192.168.22.3;
}
host vasya {
hardware ethernet 00:04:61:9f:25:25;
fixed-address 192.168.22.2;
}
NETWORK
/etc/network/interfaces:
auto lo
iface lo inet loopback
# интерфейс смотрит в инет адрес у провайдера получает динамически по MAC
auto eth0
iface eth0 inet dhcp
# интерфйс смотрит в локалку все прописываем статически
auto eth1
iface eth1 inet static
address 192.168.20.1
netmask 255.255.255.0
network 192.168.20.0
broadcast 192.168.20.255
#В случае если необходимо и внешний сделать статическим пригодиться параметр gateway xxx.xxx.xxx.xxx
#И маршрутизация если надо
#up route add —net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2
#up route add default gw 192.168.1.200
#down route del default gw 192.168.1.200
#down route del —net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2
TRAFFPRO
/etc/ traffpro/traffpro.cfg:
to_install_dir="/opt/traffpro»
daemon=true
db_url=localhost
db_usr=root
db_passwd=
db_name=office
time_in=10
time_out=180
control_eth_addr=false
net_number=0
ports_detail=true
ss_enabled=false
eth_out=eth0
url_detail=true
out_ip=192.168.0.24
listen_addr=127.0.0.1
listen_port=9999
ip_queue_maxlen=2048
squid_connect=false
timer=false
/etc/ traffpro/traffpro_rule.cfg:
# В этот файл добавляются цепочки iptables которые должны срабатывать перед тем как система linbilling включит свои правила
# Например:
iptables —A INPUT —m tcp —p tcp —dport 22 —j ACCEPT
iptables —A OUTPUT —m tcp —p tcp —sport 22 —j ACCEPT
# Эти цепочки позволят не потерять контроль над сервером в случае остановки linbilling
Пример:
#Модули iptables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#При выклюсеном selinux будет ругаться.
#iptables —F RH-Firewall-1-INPUT
iptables —t nat —F
iptables —t mangle —F
#
#Политики по умолчанию
#iptables —P INPUT DROP
#iptables —P OUTPUT DROP
#Установка маршрутов по умолчанию, основной провайдер eth0, вспомагательный
#провайдер eth2.
#Для ручного переключения ручного.
#Установка основного маршрута на Истра-Нэт.
#route del default
#route add default gw ваш_шлюз_первого прова dev eth0
#
#Установка основного маршрута на Телеком-Нэт
#
#route del default
#route add default gw ваш_шлюз_второго прова dev eth2
#
#Настройка NAT для выхода клиентов в инернет.
#Отправка всех клиентов под сети 192.168.1.0/24 в интеренет.
iptables —t nat —A POSTROUTING —s 192.168.1.0/24 —o eth0 —j SNAT —to-source ваш_ip_карты
#iptables —t nat —A POSTROUTING —s 192.168.1.0/24 —o eth2 —j SNAT —to-source ваш_ip_карты2
#
#Для совместного использования со сквидом.
iptables —t mangle —A PREROUTING —i eth1 —p tcp —m tcp —dport 80 —d ! 192.168.1.200 —j QUEUE
iptables —I OUTPUT 1 —p tcp —m tcp —s 192.168.1.200 —sport 3128 —d 192.168.1.0/24 —j QUEUE
iptables —t nat —A PREROUTING —i eth1 —p tcp —s 192.168.1.0/24 —d 192.168.1.200 —dport 80 —j ACCEPT
iptables —t nat —A PREROUTING —i eth1 —p tcp —s 192.168.1.0/24 —dport 80 —j REDIRECT —to-ports 3128
#
#Настройка NAT во внутрь сети.
#Настройка портов во внутрь сети.
iptables —t nat —A PREROUTING —p tcp —s any/0 —d ваш_ip_карты —dport 15081 —j DNAT —to-destination 192.168.1.110:15081
iptables —A FORWARD —i eth1 —d 192.168.1.110 —p tcp —dport 15081 —j QUEUE
#
#Блокировка неверных пакетов.
iptables —A INPUT —m state —state INVALID —j DROP
#
#Open connect to server, from global network.
#Открываю себе доступ к консоли. Этот трафик не считаю.
#Ограничения на подключение к ssh.
iptables —A INPUT —i eth3 —p tcp —dport 1981 —m state —state NEW —m recent —name SSH —set
iptables —A INPUT —i eth3 —p tcp —dport 1981 —m state —state NEW —m recent —name SSH —update —seconds 60 —hitcount 2 —j DROP
iptables —A INPUT —i eth3 —p tcp —dport 1981 —m state —state NEW —j ACCEPT
#
#Открываю доступ к ssh из дома.
iptables —A INPUT —p tcp —i eth3 —s any/0 —d ваш_ip_карты —dport 22 —j ACCEPT
iptables —A OUTPUT —p tcp —o eth3 —s ваш_ip_карты —sport 22 —d any/0 —j ACCEPT
#
#Открываю доступ к серверу www.
#Allowing Remote Access to a Local Web Server
iptables —A INPUT —i eth3 —p tcp —s any/0 —sport 1024:65535 —d ваш_ip_карты -dport 80 —j QUEUE
iptables —A OUTPUT —o eth3 —p tcp ! -syn —s ваш_ip_карты -sport 80 —d any/0 —dport 1024:65535 —j QUEUE
#Открываю доступ к серверу www.
#По порту 443.
iptables —A INPUT —i eth3 —p tcp —s any/0 —sport 1024:65535 —d ваш_ip_карты -dport 443 —j QUEUE
iptables —A OUTPUT —o eth3 —p tcp ! -syn —s ваш_ip_карты -sport 443 —d any/0 —dport 1024:65535 —j QUEUE
#
#Настройка ФТП доступа.
#Open connect to FTP, from network.
iptables —A INPUT —p tcp —i eth1 —s 192.168.1.0/24 —sport 40000:65535 —d 192.168.1.200 —dport 21 —m state —state NEW,ESTABLISHED —j ACCEPT
iptables —A OUTPUT —p tcp —o eth1 —s 192.168.1.200 —sport 21 —d 192.168.1.0/24 —dport 40000:65535 —m state —state ESTABLISHED —j ACCEPT
iptables —A INPUT —p tcp —i eth1 —s 192.168.1.0/24 —sport 1024:65535 —d 192.168.1.200 —dport 40000:65535 —m state —state ESTABLISHED,RELATED —j ACCEPT
iptables —A OUTPUT —p tcp —o eth1 —s 192.168.1.200 —sport 40000:65535 —d 192.168.1.0/24 —dport 40000:65535 —m state —state ESTABLISHED —j ACCEPT
iptables —A OUTPUT —p tcp —o eth1 —s 192.168.1.200 —sport 20 —d 192.168.1.0/24 —dport 40000:65535 —m state —state ESTABLISHED,RELATED —j ACCEPT
iptables —A INPUT —p tcp —i eth1 —s 192.168.1.0/24 —sport 40000:65535 —d 192.168.1.200 —dport 20 —m state —state ESTABLISHED —j ACCEPT
#
# DNS client modes (53)
iptables —A OUTPUT —o eth0 —p udp —s ваш_ip_карты -sport 40000:65535 —d 217.150.34.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p udp —s 217.150.34.129 —sport 53 —d ваш_ip_карты -dport 40000:65535 —j QUEUE
iptables —A OUTPUT —o eth0 —p udp —s ваш_ip_карты -sport 40000:65535 —d 217.150.35.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p udp —s 217.150.35.129 —sport 53 —d ваш_ip_карты -dport 40000:65535 —j QUEUE
# TCP client to server requests are allowed by the protocol
# if UDP requests fail. This is rarely seen. Usually, clients
# use TCP as a secondary nameserver for zone transfers from
# their primary nameservers, and as hackers.
iptables —A OUTPUT —o eth0 —p tcp —s ваш_ip_карты -sport 40000:65535 —d 217.150.34.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p tcp ! -syn —s 217.150.34.129 —sport 53 —d ваш_ip_карты -dport 40000:65535 —j QUEUE
iptables —A OUTPUT —o eth0 —p tcp —s ваш_ip_карты -sport 40000:65535 —d 217.150.35.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p tcp ! -syn —s 217.150.35.129 —sport 53 —d ваш_ip_карты -dport 40000:65535 —j QUEUE
# server to server query or response
# Caching only name server uses UDP, not TCP
iptables —A OUTPUT —o eth0 —p udp —s ваш_ip_карты -sport 53 —d 217.150.34.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p udp —s 217.150.34.129 —sport 53 —d ваш_ip_карты -dport 53 —j QUEUE
iptables —A OUTPUT —o eth0 —p udp —s ваш_ip_карты -sport 53 —d 217.150.35.129 —dport 53 —j QUEUE
iptables —A INPUT —i eth0 —p udp —s 217.150.35.129 —sport 53 —d ваш_ip_карты -dport 53 —j QUEUE
#
#Ограничения на forward
#Блокировка неверных пакетов.
iptables —A FORWARD —m state —state INVALID —j DROP
# защита от скрытого сканирования портов
iptables —A FORWARD —p tcp —tcp-flags SYN,ACK,FIN,RST RST —m limit —limit 15/minute —s 192.168.1.0/24 —d any/0 —j QUEUE
#
#Блокируем черезмерно большое кол-во icmp запрсов.
iptables —A FORWARD —p icmp —m limit —limit 250/sec —limit-burst 500 —j QUEUE
iptables —A FORWARD —p icmp —j DROP
#
#Блокировка icq доступа для всех.
iptables —A FORWARD —p tcp —s 192.168.1.0/24 —d 205.188.0.0/16 —dport ! 5190 —j DROP
iptables —A FORWARD —p tcp —s 192.168.1.0/24 —d 64.12.0.0/16 —dport ! 5190 —j DROP
Этот пример, показывает для чего можно использовать traffpro_rule.cfg
Третий конфиг файл /etc/traffpro/addr_port_forward.cfg (может отсутствовать, решается просто создание такого файла)
Конфиг для проброса портов во внутреннюю сеть
Формат:
Каждая строчка должна обязательно содержать
IP_SRC PORT_DEST IP_DEST:PORT_DEST
IP_SRC — ip адрес с которого можно подключиться (для всех 0.0.0.0)
PORT_DEST — порт на внешнем интерфейсе сервера к которому подключаются
IP_DEST — ip во внутренней сети на который перенаправляются подключения
PORT_DEST — Порт на конечном компьютере во внутренней сети на который перенаправляются подключения
В файле не должно быть пустых СТРОК!!!!!!!!!!!
0.0.0.0 80 192.168.0.111:80
/etc/ init.d/traffpro:
Ищем строку:
ps ax | grep billing | grep —v grep | cut –f1 -d ' ' > /var/run/traffpro.pid
Исправляем ее таким образом:
ps ax | grep billing | grep —v grep | cut —f2 -d ' ' > /var/run/traffpro.pid
либо таким
ps ax | grep billing | grep —v grep | awk ‘{print ($1)}’ > /var/run/traffpro.pid
if [ ! -e /var/lock/subsys ];
then
mkdir —p /var/lock/subsys
fi
echo > /var/lock/subsys/TraffPro
MYSQL:
GRANT ALL PRIVILEGES ON office.* TO ‘traffprouser’@’%’ WITH GRANT OPTION;
SET PASSWORD FOR ‘traffprouser’@’%’ = old_password(‘mypass’);FLUSH PRIVILEGES;
DELETE FROM mysql.user WHERE Password=’’;
DROP DATABASE `name_base`;
#!/bin/bash
#Конфиг с настройками Traffpro,
#отсюда берутся имя пользователя, пароль, имя базы.
. /etc/traffpro/traffpro.cfg
echo "Введите путь сохрания дампа базы Traffpro:»
read WAY
mysqldump —B $db_name —user=$db_usr —password=$db_passwd —e > $WAY/office.sql
echo "Создать архив дампа базы Traffpro? y/n»
read CHECK
if [ "$CHECK» == «y» ]; then
tar —czf $WAY/office.tar.gz $WAY/office.sql
echo «Удаляется дамп базы Traffpro, оставляем только архив.»
rm —f $WAY/office.sql
echo "Размер файла»
du —h $WAY/office.tar.gz
echo "Готово!»
fi
insert into user values ('%','root2',old_password('admin'),'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
CRON
------------------------
минута час день_месяца месяц день_недели команда
------------------------
Допустимые значения:
минута от 0 до 59
час от 0 до 23
день_месяца от 1 до 31
месяц от 1 до 12 (можно три буквы из названия месяца,
регистр не имеет значения от jan до dec)
день_недели от 0 до 6 (0 это воскресенье,
можно писать от sun до sat)
Каждое из полей даты и времени может быть обозначено символом * ,будет соответствовать любому возможному значению. Для этих полей можно указывать диапазоны значений, разделенных дефисом, например:
* 5 4—10 0—3 * echo «HELLO» -печать HELLO в 5:00 на 4,5,6,7,8,9,10
дни января, февраля, марта и апреля
пошаговая запись
* */2 * * sat echo «HELLO» -печать HELLO каждый четный час,
каждую субботу
равнозначная предыдущему примеру запись (списком)
* 0,2,4,6,8,10,12,14,16,18,20,22 * * sat echo «HELLO»
-печать HELLO каждый четный
час, каждую субботу
то же самое с указанием диапазона
* 0—23/2 * * sat echo «HELLO» -печать HELLO каждый четный
час, каждую субботу
59 23 31 dec * echo «Happy new year» -без комментариев :),
поздравит с новым годом
Для отладки задания cron, можно перенаправить результат в файл
Пример:
0—59 * * * * /home/user/mail 2 >/tmp/tmp.cron
Настройка Apache2 + SSL + PHP5 + MySQL5 в Ubuntu
Установка всего необходимого для LAMP сервера:
sudo apt-get update |
По необходимости доставляются другие php модули типа php5-gd, php5-imagick, php5-curl и другие.
Конфиг apache2 в убунту организован интересным образом. Вот листинг /etc/apache2/ :
apache2.conf |
В apache2.conf — основная конфигурация веб сервера.
httpd.conf — пустой, оставлен для совместимости.
mods-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной его модуль.
sites-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной виртуал хост.
Чтобы активировать модуль или виртуал хост созданы утилиты a2enmod и a2ensite.
Пример использования:
ulmen@chtulhu:~$ sudo a2enmod php5 |
По сути a2enmod, a2ensite, a2dismod и a2dissite создают или удаляют символический линк конфига из sites-available/ в sites-enabled/ (mods- в случае с модулями).
Добавление виртула хоста:
1. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/example.com
ulmen@chtulhu:~$ cd /etc/apache2/sites-available |
2. Отредактировать example.com
< VirtualHost *:80 > |
3. Создаем каталог для Document Root:
ulmen@chtulhu:~$ mkdir —p /var/httpdocs/example.com
|
Настройка SSL:
1. Создание сертификата:
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem |
(актуально для Feisty, в более старых релизах нужно выполнить apache2-ssl-certificate)
2. Добавить порт 443 в /etc/apache2/ports.conf
Listen 80 |
3. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/ssl,
отредактировать default таким образом:
NameVirtualHost *:80 |
также отредактировать /etc/apache2/sites-avaible/ssl:
NameVirtualHost *:443 |
4. Добавить ssl в examle.com таким же образом как и в файле ssl, пример:
< VirtualHost *:443 > |
5. Активация модуля и сайта:
ulmen@chtulhu:~$ a2enmod ssl |
6. Рестарт веб сервера:
ulmen@chtulhu:~$ sudo /etc/init.d/apache2 restart |
Настройка mysql:
Mysql после установки работоспособна без дополнительных настроек. Так как пользователь базы root без пароля, нужно задать для него пароль:
ulmen@chtulhu:~$ mysqladmin —u root password myPassword
|
Проверка базы:
ulmen@chtulhu:~$ mysql —u root —p
|
Настройка PHP: /etc/php5/apache2/php.ini, после смены настроек нужно перегрузить апач.
Немного об Apache2 + SSL под Debian/Ubuntu ,безопасность.
Далее нам нужно создать.htaccess в /var/www со следующим текстом (данная операция не позволит просмотреть каталог с php файлами если отсутствует index.* файл):
#echo «Options —Indexes» > /var/www/.htaccess
Далее создаем ключ:
#openssl genrsa —des3 —out name.key 1024
genrsa - указывает для библиотеки OpenSSL, что мы хотим сгенерировать пару ключей.
des3 - указывает, что секретный ключ должен быть зашифрован и защищен ключевой фразой (pass phrase).
Опция out указывает, где следует сохранить результаты.
Число 1024 указывает длину генерируемых ключей в битах.
Создаём сертификат
#openssl req —new —key name.key —out name.csr
Вас попросят ввести пароль, который потом будет нужен в дальнейшем при подписи создаваемого сертификата и при запуске apacha2.
На запрос: Country Name (2 letter code) [AU]:
(Выбираем RU)
На запрос: State or Province Name (full name) [Some-State]: (Вводим край или область или… где находимся)
На запрос: Locality Name (eg, city) []: (Вводим наименование города)
На запрос: Organization Name (eg, company) [Internet Widgits Pty Ltd]: (Вводим наименование организации)
На запрос: Organizational Unit Name (eg, section) []: (Вводим наименование вашего подразделения)
На запрос: Common Name (eg, YOUR name) []: (Вводим ваше имя)
На запрос: Email Address []: (вводим ваш электронный адрес)
Далее идут расширенные опции:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
На них можно просто нажать Enter пока программа не создаст name.csr
Сформированный файл запроса подписи сертификата сохранится файле name.csr. Узнать о содержании сертификата можно узнать так — openssl req —noout —text —in name.csr. В идеале, файл запроса подписи сертификата нужно отослать в сертификационную службу для обработки. Verisign и Thawte — две наиболее известные сертификационные службы. Но можно создать само-подписанный сертификат.
Создаем сертификат с личной подписью
#openssl x509 —req —days 700 —in name.csr —signkey name.key —out name.cert
Следует скопировать файл сертификата name.cert (или тот, что возвращен вам сертификационной службой) и файл с ключами secure.home.net.key в пути SSLCertificateFile и SSLCertificateKeyFile соответственно.
Далее создаем директорию где будут храниться наши ключи и сертификаты:
#mkdir /etc/apache2/keys
Далее перемещаем в /etc/apache2/keys наши name.key, name.csr и name.cert:
#mv name.key /etc/apache2/keys && mv name.csr /etc/apache2/keys && mv name.cert /etc/apache2/keys
Далее правим файл в /etc/apache2/sites-available/default-ssl:
#nano default-ssl
Ищем и правим следующее:
< Directory / > … AllowOverride All < /Directory > < Directory /var/www > … AllowOverride All … < /Directory >
Еще ищем следующие строки и редактируем их:
SSLCertificateFile /etcl/apache2/keys/name.cert
SSLCertificateKeyFile /etc/apache2/keys/name.key
После того, как отредактировали этот файл, нам нужно будет включить наш сайт:
#a2ensite default-ssl
Выключить стандартный http:
#a2dissite default
Затем включаем модуль SSL:
#a2enmod ssl
И после всего это нам осталось перезапустить наш Apache2:
#/etc/init.d/apache restart