Показаны сообщения с ярлыком Debian. Показать все сообщения
Показаны сообщения с ярлыком Debian. Показать все сообщения

понедельник, 11 февраля 2013 г.

Защита серверов на Debian Squeeze от брутфорса посредством fail2ban

Ставим:
apt-get install -y fail2ban
Сервис сразу же запустится и будет добавлен в автозапуск.

Также fail2ban сразу создаст свою цепочку, через которую будет пропускать трафик (забаниваемые адрес) конкретного сервера (и как следвствие - крайне низкий оверхед, что плюс):

sudo iptables -nvL
Chain INPUT (policy ACCEPT 845 packets, 149K bytes)
 pkts bytes target     prot opt in     out     source               destination      
    0     0 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination      
Chain OUTPUT (policy ACCEPT 815 packets, 336K bytes)
 pkts bytes target     prot opt in     out     source               destination      
Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination      
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           



Открываем конфиг:
vi /etc/fail2ban/jail.conf

Там будет ряд блоков с заголовками вида - [ssh], это блоки правил, описывающих, какие именно сервисы контролируются и защищаются от брутфорса. Стандартно включен лишь один - ssh, он нам и нужен. Обращаю внимание! Что здесь нужно исправить порт, если он у Вас отличается от стандартного (я рекомендую это сделать!).


[ssh]
enabled = true
port    = 1022
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6


Теперь самое важное - внесите свой IP адрес (если он постоянный) в белый список fail2ban, это делается в том же файле в блоке:
ignoreip = 127.0.0.1 178.xx.yy.zz

Применяем измененный конфиг (если внесли туда коррективы):

/etc/init.d/fail2ban restart

Лог работы сервиса fail2ban можно смотреть так:

tail -f /var/log/fail2ban.log

Теперь настало время проверить fail2ban в деле - пробуем 6 раз ввести неверно ssh пароль со внешнего хоста, чтобы нас забанило.

Забаненые айпи можно смотреть вот так (либо в фаероволле):

sudo fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list: /var/log/auth.log
|  |- Currently failed: 1
|  `- Total failed: 7
`- action
   |- Currently banned: 1
   |  `- IP list: 188.40.74.10
   `- Total banned: 1

Раазбанивать ошибочно забаненых юзеров вот так (криво, да, но прямой механизм в fail2ban появится лишь к 0.9 версии, да и-то не факт):

sudo iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 77613 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination      
1      974 75898 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 1022
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination      
Chain OUTPUT (policy ACCEPT 75761 packets, 30M bytes)
num   pkts bytes target     prot opt in     out     source               destination      
Chain fail2ban-ssh (1 references)
num   pkts bytes target     prot opt in     out     source               destination      
1       25  2596 DROP       all  --  *      *       188.xx.xx.xx         0.0.0.0/0        
2      949 73302 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Разбаниваем (очень аккуратно, чтобы ):

sudo iptables -D fail2ban-ssh 1


Источник: http://debianclusters.cs.uni.edu/index.php/Fail2Ban:_Preventing_Brute_Force_SSH

пятница, 23 марта 2012 г.

firmware: requesting rtl_nic/rtl8168d-1.fw

dmesg| grep rtl
[62227.714606] r8169 0000:01:00.0: firmware: requesting rtl_nic/rtl8168d-1.fw
[62227.733729] r8169 0000:01:00.0: eth0: unable to load firmware patch rtl_nic/rtl8168d-1.fw (-2)

Для фикса проблемы нужно активировать репозиторий non-free и поставить оттуда пакет с прошивкой:
apt-get install -y firmware-realtek

Автоматизация установки Debian 6 Squeeze

Официальное описание возможности: http://wiki.debian.org/DebianInstaller/Preseed

Раздел мануала по установке:
http://www.debian.org/releases/stable/amd64/apb.html.en

Пример конфиг-файла:
http://www.debian.org/releases/squeeze/example-preseed.txt

четверг, 22 марта 2012 г.

Создание загрузочного USB диска Debian 6 Squeeze на Linux

Сначала скачиваем обычный установочный CD: debian-6.0.4-amd64-CD-1.iso. После этого, подключаем USB флеш-диск к машине и смотрим, как он определился:
dmesg|tail
[ 1585.583845] usb-storage: device scan complete
[ 1586.111281] scsi 7:0:0:0: Direct-Access Freecom DATABAR 1100 PQ: 0 ANSI: 0 CCS
[ 1586.112143] sd 7:0:0:0: [sdc] 15728640 512-byte logical blocks: (8.05 GB/7.50 GiB)
[ 1586.112891] sd 7:0:0:0: [sdc] Write Protect is off
[ 1586.112893] sd 7:0:0:0: [sdc] Mode Sense: 43 00 00 00
[ 1586.112894] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 1586.115266] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 1586.115328] sdc: sdc1
[ 1586.117758] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 1586.117820] sd 7:0:0:0: [sdc] Attached SCSI removable disk

После этого копируем данные ISO образа прямо на устройство флеш диска:
cat debian-6.0.4-amd64-CD-1.iso > /dev/sdc
sync

Все, после перезагрузки система корректно запустит установку с USB :)

Рейтинг самых популярных пакетов в Debian

http://popcon.debian.org/

пятница, 7 октября 2011 г.

вторник, 13 сентября 2011 г.

Работа с geoip из Perl в Debian

Устанавливаем ПО:
apt-get install -y libgeo-ip-perl

Вызываем из кода:
perl -e 'use Geo::IP; my $gi = Geo::IP->open("/usr/share/GeoIP/GeoIP.dat", GEOIP_STANDARD); print $gi->country_code_by_addr("81.21.yy.xx");'

В ответ скриптом будет выдан

понедельник, 30 мая 2011 г.

Debian, MySQL 5.1 Perocna и работа с СУБД по tcp/ip сети: увеличивается Aborted_Connects

Имеем вот такой тестовый скрипт, запущенный на машине, которая подключается к удаленному MySQL серверу mysqlremoteserver.ru по сети:
for i in `seq 1 1000`; do echo -n "try $i"; mysqladmin ping -h mysqlremoteserver.ru -uv1 -pqwerty; if [ $? -ne 0 ]; then echo "not ok" ; fi ; done | grep -v 'alive'

И при запуске имеем следующие ошибки:
mysqladmin: connect to server at 'hostingmysqlserver' failed
error: 'Can't connect to MySQL server on 'hostingmysqlserver' (4)'
Check that mysqld is running on hostingmysqlserver and that the port is 3306.
You can check this by doing 'telnet hostingmysqlserver 3306'
try 12not ok
mysqladmin: connect to server at 'hostingmysqlserver' failed
error: 'Can't connect to MySQL server on 'hostingmysqlserver' (4)'
Check that mysqld is running on hostingmysqlserver and that the port is 3306.
You can check this by doing 'telnet hostingmysqlserver 3306'
try 199not ok
mysqladmin: connect to server at 'hostingmysqlserver' failed
error: 'Can't connect to MySQL server on 'hostingmysqlserver' (4)'
Check that mysqld is running on hostingmysqlserver and that the port is 3306.
You can check this by doing 'telnet hostingmysqlserver 3306'
try 201not ok
^Cmysqladmin: connect to server at 'hostingmysqlserver' failed
error: 'Can't connect to MySQL server on 'hostingmysqlserver' (4)'
Check that mysqld is running on hostingmysqlserver and that the port is 3306.
You can check this by doing 'telnet hostingmysqlserver 3306'


При этом увеличивается счетчик Aborted_connects:
show global status like 'Aborted%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Aborted_clients | 4 |
| Aborted_connects | 113 |
+------------------+-------+
2 rows in set (0.00 sec)

Как отладить данную проблему и понять, почему происходит сброс коннекта?

В первую очередь стоит включить лог предупреждений, это делается путем добавления в блок [mysqld] файла /etc/mysql/my.cnf ниже указанного параметра и последующей перезагрузки mysql демона:
log-warnings

После этого открываем лог mysql демона и ждем появления ошибок про Abort_connect:
tail -f /var/log/daemon.log -n 1000

Со временем должны появится примерно такие записи:
May 30 12:32:55 mysql1 mysqld: 110530 12:32:55 [Warning] Aborted connection 87982 to db: 'dbsome' user: 'tesuser' host: 'domain.ru' (Got an error reading communication packets)

По которым можно будет сделать хоть какие-то выводы о том, где источник проблемы.

понедельник, 2 мая 2011 г.

Debian 6 в OpenVZ: insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!

apt-get install -y puppet
Reading package lists... Done
Building dependency tree
Reading state information... Done
puppet is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up puppet (2.6.2-4) ...
insserv: warning: script 'S10vzquota' missing LSB tags and overrides
insserv: warning: script 'vzquota' missing LSB tags and overrides
insserv: There is a loop between service vzquota and single if started
insserv: loop involving service single at depth 11
insserv: loop involving service vzquota at depth 10
insserv: loop involving service mountnfs at depth 8
insserv: There is a loop between service vzquota and single if started
insserv: loop involving service sysklogd at depth 14
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting vzquota depends on single and therefore on system facility `$all' which can not be true!
insserv: Max recursions depth 99 reached
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
dpkg: error processing puppet (--configure):
subprocess installed post-installation script returned error exit status 1
configured to not write apport reports
Errors were encountered while processing:
puppet
E: Sub-process /usr/bin/dpkg returned an error code (1)

Фикс:
vi /etc/init.d/vzquota

и под строкой "#!/bin/sh" добавляем:
### BEGIN INIT INFO
# Provides: vzquota
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start vzquota at the end of boot
# Description: This command is used to configure and see disk quota statistics for Containers.
### END INIT INFO

После этого повторяем предыдущую команду ( apt-get ).

Источник: http://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg230965.html

воскресенье, 1 мая 2011 г.

Активация расширенного Bash completion в Debian

С тем, что Bash дополняет имя команды знаком каждый, например, написав apt-и нажав tab мы получим ряд вариантов:
apt-[TAB]
apt-cache apt-config apt-ftparchive apt-key apt-sortpkgs
apt-cdrom apt-extracttemplates apt-get apt-mark

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

Устанавливаем нужный пакет:
apt-get install -y bash-completion

Активируем возможность автокомплита для всех пользователей системы глобально, добавляем строки перед строкой export PATH:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi


После этого отключаемся от ssh, подключаемся заново и пробуем новую функцию в деле:

test:~# apt-get up[TAB]
update upgrade
test:~# apt-get[TAB]
autoclean build-dep clean dselect-upgrade purge source upgrade
autoremove check dist-upgrade install remove update

Не правда ли, прекрасная фича? :)

Источники: http://www.howtoforge.com/how-to-add-bash-completion-in-debian и http://habrahabr.ru/blogs/sysadm/71525/

воскресенье, 24 апреля 2011 г.

Tomcat, Debian: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

Вот с такой ошибкой можно столкнуться при использовании Tomcat и Debian:
cat /var/log/daemon.log
Apr 19 18:30:37 Debian-50-lenny-64-minimal jsvc.exec[24539]: Apr 19,
2011 6:30:37 PM org.apache.catalina.core.AprLifecycleListener
lifecycleEvent#012INFO: The Apache Tomcat Native library which allows
optimal performance in production environments was not found on the
java.library.path:
/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Фиксится она достаточно просто:
apt-get install -y libtcnative-1

вторник, 8 февраля 2011 г.

Проксирование Confluence посредством Nginx на Debian

Стаивм Nginx:
apt-get install -y nginx

После этого очищаем следующий конфиг:
vi /etc/nginx/sites-enabled/default

И вносим в него следующие строки:
server {
listen 80;
server_name wiki.domain.ru;

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

location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8180;
}
}


Применяем настройки:
/etc/init.d/nginx restart

Источник: http://serverfault.com/questions/118592/can-i-get-advice-on-my-nginx-configuration-as-a-proxy-in-front-of-jira-and-confl

суббота, 5 февраля 2011 г.

PHP Warning: PHP Startup: eAccelerator: Unable to initialize module

Вот такая ошибка:
php -m
PHP Warning: PHP Startup: eAccelerator: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0

Может возникать тогда, когда новому PHP (допустим, 5.3) было подложено бинарное расширение, собранное под старую версию PHP (допустим, 5.2).

Для фикса нужно пересобрать eAccelerator и / или сменить путь в конфиге php.ini.