Архивы по Категориям: linux - Page 4

nginx на Ubuntu – просто!

Задача: построить сервер по технологии front-end back-end (поправьте если я это не так понял)

то есть чтоб nginx занимался работой с посетителями, а апач работал по запросам nginx и отдавал nginx’y хтмл по lo
тем самым не расходуя системных ресурсов зря.
и так у меня есть чистая инсталяция ubuntu-server 8.04

В инете много информации по nginx, но как заставить его работать в паре с apache2 я почему-то не встречал.

Как Апач устанавливать рассказывать не буду, как mysql тоже гугл легко подскажет.

Лишь немного проясню суть.

Качаем nginx
Берём свежую версию тут
http://technokracy.net/nginx/
на момент написания статьи

wget http://technokracy.net/nginx/nginx_0.6.13~grrr-1_i386.deb

Устанавливаем

dpkg -i nginx_*

Также потребуется модуль к Апачу, которого нет в дефолтной поставке

apt-get install libapache2-mod-rpaf

Модуль для трансляции ip адресов, чтоб апач видел не локальные обращения nginx, а ип адреса пользователей.

Теперь сайты, что обслуживает Apache вешаем на локальный интерфейс и на порт например 8080 у меня несколько сайтов на сервере и я их расположил по порядку на 8081 8082 и т.п.

итого в /etc/apache2/ports.conf

Listen 127.0.0.1:8080
Listen 127.0.0.1:8081
Listen 127.0.0.1:8082

в каталоге /etc/apache2/sites-enabled находятся файлы с конфигурациями сайтов.

привожу пример одного из них

ServerAdmin mail@gmail.com
ServerName mysite.net
DocumentRoot /var/www/site1
ServerAlias mysite.net
ErrorLog /var/log/apache2/site1-error.log
CustomLog /var/log/apache2/site1-access.log common
LogLevel error

/etc/nginx/nginx.conf
я не менял ничего
а вот /etc/nginx/sites-enabled
я сделал такой конфиг

server {
listen 80;
server_name mysite.net;

access_log /var/log/nginx/site1-nginx.access.log;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 40m;
client_body_buffer_size 256k;

proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;

proxy_buffer_size 64k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#Static files location
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|html|flv|mp3)$ {
root /var/www/site1; }

}

проверяем конфиг на корректность

# nginx -t
ну и если всё замечательно то

/etc/init.d/nginx start

ну и можно попробовать зайти на http://mysite.net

Дальше отснеффирил заголовки от своего web сервера

HTTP/1.1 200 OK
Server: nginx/0.5.32
Date: Mon, 29 Sep 2008 15:35:42 GMT
Content-Type: text/html
Connection: close
Last-Modified: Mon, 29 Sep 2008 13:53:07 GMT
ETag: “8146-ddb6-458092fd0b6c0”
Accept-Ranges: bytes
Content-Length: 56758

значит всё работает.

чтоб nginx стартовал автоматически я добавил в /etc/rc.local
строчку перед exit 0

/usr/local/bin/nginx

хотя можно было через rc-update (когда писал ман, почему пришла такая идея 🙂 )

Отправил будущий сервер в ребут для проверки, как он поднялся, так всё заработало.

Если есть замечания прошу отписывать 🙂

iptables Ограничить досуп

Не пускаем на определённый порт никого кроме перечисленных подсетей
[cc lang=”bash”]iptables -A INPUT -s 10.0.0.0/10 -p tcp -m tcp –dport 411 -j ACCEPT
iptables -A INPUT -s 89.105.128.0/22 -p tcp -m tcp –dport 411 -j ACCEPT
iptables -A INPUT -p tcp –dport 411 -j DROP[/cc]
например так

ну а как в автозагрузку добавить идём в гугл 🙂

для ленивых есть ip клькулятор для расчёта масок и сетей
http://ipcalc.dewil.ru/

Файлообменник для офиса (автоматическое удаление через 7 дней)

Нужна была общая папка, в которую бы, каждый мог зайти и кинуть пару файлов для коллеги.
Но такая папка довольно быстро забивается мусором.

smb.conf

[exchange]
path = /var/exchange
comment = Обменник
; available = yes
; browsable = yes
public = yes
writable = yes
hosts allow = 192.168.100.1/16

в крон добавил строку (#crontab -e)

01 0 * * * find /var/exchange/ -type f -mtime +7 -exec rm -f {} \;

01 0 * * * find /var/exchange/ -type d -mtime +7 -exec rm -r {} \;

Каждую ночь находить в /var/exchange/ файлы (вторая строка папки) что созданы ранее чем 7 дней назад и удалять найденные.

ubuntu hasp server

Ранее я писал ман http://forum.ubuntu.ru/index.php?topic=14194.msg153951
НО
Случилось горе, умер системный винт, и в экстренном порядке начал переставлять hasp на дополнительный сервер.

Действия проводил на ubuntu 7.10, как буду переносить на 8.04 отпишусь.

Качаем драйвер aksparlnx-1.7-i386.tar.gz

распаковываем и запускаем buid.sh

да кстати у вас должены стоят linux-headers

У меня собралось без каких либо проблем.

Далее искал менеджер лицензий оказалась задача не из лёгких. ранее он был на http://ftp.freesources.info но теперь его там не стало.
в итоге нашёл его на ftp://ftp.linux.kiev.ua/pub/mirrors/ftp.etersoft.ru/WINE@Etersoft-1.0/WINE/Ubuntu/7.10/

Взял 2 файла
haspd-modules_2.0-1_i386.deb
haspd_2.0-1_i386.deb

Оба успешно устанавливаются.
Дальше старт демону
/etc/init.d/haspd start
На все пунктах DONE-e
Ну и всё 🙂

О защите Linux от взлома или как меня сломали

Вот собственно столкнулся я с проникновением на мой сервер. расскажу что и как было.
утро
По началу счётчик моей страницы зашкаливал за 50 000 хитов, когда обычно было от 10 000 до 20 000.
Сразу заглянул в лог апача, ничего плохого не заметил, поехал на работу… на рабоче много читал про DDoS понял, что бороться смысла нет. собсвенно и забил.. чуть позже решил проверить логи других демонов. и был в шоке как обнаружил что с 23го марта кто-то постоянно ломился в мой шел, тут я ещё раз вспомнил что всех юзеров, что я создавал в системе я создавал по всем правилам, тоесть кому не надо отбирал шел и пароле использовал генеренные.
Вижу в логах как бессмыслено подбирают пароль к различным юзерам, apache mysql ftp root support djohn. И тут виже удачный логин для пользователя support
Далее выкладываю лог действия

Mar 23 04:30:35 krasbid sshd[18290]: reverse mapping checking getaddrinfo for 79-118-206-123.rdsnet.ro [79.118.206.123] failed – POSSIBLE BREAK-IN ATTEMPT!
Mar 23 04:30:37 krasbid sshd[18290]: Accepted password for support from 79.118.206.123 port 2859 ssh2
Mar 23 04:30:37 krasbid sshd[18292]: pam_unix(ssh:session): session opened for user support by (uid=0)
Mar 23 04:31:49 krasbid passwd[18339]: pam_unix(passwd:chauthtok): password changed for support
Mar 23 04:32:47 krasbid useradd[18365]: new user: name=system, UID=0, GID=0, home=/home/system, shell=/bin/sh
Mar 23 04:32:53 krasbid passwd[18366]: pam_unix(passwd:chauthtok): password changed for system
Mar 23 04:33:02 krasbid sshd[18367]: reverse mapping checking getaddrinfo for 79-118-206-123.rdsnet.ro [79.118.206.123] failed – POSSIBLE BREAK-IN ATTEMPT!
Mar 23 04:33:04 krasbid sshd[18367]: Accepted password for system from 79.118.206.123 port 2862 ssh2
Mar 23 04:33:04 krasbid sshd[18370]: pam_unix(ssh:session): session opened for user system by system(uid=0)
Mar 23 04:41:38 krasbid sshd[18367]: syslogin_perform_logout: logout() returned an error

Главный момент это успешный логин, я начал вспомниать когда и как создавался юзер суппорт, и тут всплыли подробности, что в тот момент я настраивал почтовый сервер и долго не мог добиться отправления писем, я пытался и права суппорту дать повыше и другие необдуманные действия, так у меня получился юзер в групе рута с паролем 123123 (тут подумайте ещё раз и не повторяйте таких ошибок)
Собсвенно как видим попутно создался юзер system
Первые его поиски в файле passwd не увенчались успехом.
тут пришло на ум самое страшное, руткит
Поставил 2 сканера и один из них выдал мне чудо

# chkrootkit -q

The following suspicious files and directories were found:
/usr/lib/firefox/.autoreg
/lib/modules/2.6.22-14-generic/volatile/.mounted

/usr/lib/security
/usr/lib/security/classpath.security
eth0: PACKET SNIFFER(/usr/local/games/.play/echo[18415])

Последняя строчка бурно заинтересовала.
в каталоге /usr/local/games/.play/ лежало 3 файла
echo mig и текстовый лог.
Файлы сами выложу чть позже. но почитав содержимое бинарников, я немного успокоился.
Насколько я понял это был сниффер который модифицировал траффик.
В бинарниках юыл замечен hltml, который накручивал рекламу на определённом сайте.
тоесть это обычный бот который ломится в шел попадая делает вот это, значит не человек.

далее я немного изменил настройки безопасности. сделал что-то вроде смены порта демону шела.
Ограничил доступ по ипам убил сниффера, убил юзера из под которого он работал, сменил пароли,

пошёл дальше читать маны.

Сегодня ваяю скрипт который бы при успешной авториции по ssh слал бы мне смс мол кто-то там есть..
и много думаю…