Skip to content


Как сделать open-relay из sendmail

sendmail - open-relay howto

Это я, почтальон Печкин!


Иногда очень утомляет делать одно и то же по сути рутинное действие больше одного раза. Например, разрешать пересылку почты через почтовый сервер с установленным sendmail для определённого IP-адреса сначала на уровне firewall-а, а потом еще и в конфигах самого sendmail-а. Поэтому я принял ответственное решение разрешить sendmail-у relaying для всех, но firewall-ом пускать только избранных, чтобы всякие ушлые спамеры не поимели наш сервер. Далее расписано как это делать, поскольку процедура оказалась слегка не очевидная.

  1. В файл access добавить строчку
    *.* RELAY
  2. В sendmail.mc найти строчку "dnl FEATURE(`relay_mail_from')dnl" и поменять её, чтобы она выглядела так:

    FEATURE(promiscuous_relay)dnl
  3. Выполнить команду make и перезапустить sendmail:
    make ; service sendmail restart

Вся эта последовательность действий может быть выполнена следующим bash-скриптом:

cd /etc/mail
cp -p sendmail.mc sendmail.mc.bak
grep -E "^FEATURE\(promiscuous_relay\)" sendmail.mc || sed -i "/use_ct_file/ aFEATURE(promiscuous_relay)dnl" sendmail.mc
sed -i "/127.0.0.1/ a# WARNING! FEATURE(promiscuous_relay) was set. Be careful!" access
make
diff sendmail.mc.bak sendmail.mc || service sendmail restart

На всякий случай: мой Makefile из директории /etc/mail можно скачать по этой ссылке.

ПРЕДУПРЕЖДЕНИЕ: если Вы захотите сделать вышеописанное у себя, обязательно убедитесь, что сервер не открыт для всего Интернета. Иначе об этом быстро узнают спамеры и будут слать через него свою нечисть, Ваш сервер попадёт в чёрные списки и в самом худшем случае провайдер может вообще прекратить предоставление сервиса.

Posted in *nix, Howto.

Tagged with .


Свежий local root exploit в linux

В ядре Linux обнаружена уязвимость, позволяющая получить root-доступ произвольному пользователю. Проблему усложняет то, что ошибка существовала на протяжении последних 2-3 лет и существует во всех ядрах начиная с 2.6.37 и включая 3.8.10.

Проблема присутствует в коде PERF_EVENTS, которая должна быть активирована для успешной эксплуатации уязвимости. Пользователям RHEL 6 и CentOS, несмотря на использование ядра 2.6.32, также светят проблемы – проблемный код был успешно бэкпортирван Red Hat в пакет с ядром, поставляемом в RHEL.

Эксплоит уже доступен публично:

bash-4.1# gcc -O2 exploit.c
bash-4.1# chmod 777 a.out
bash-4.1# su nobody -s /bin/bash
bash-4.1$ id
uid=99(nobody) gid=99(nobody) groups=99(nobody)
 
bash-4.1$ cd /
bash-4.1$ ls
a.out  bin  boot  dev  etc  exploit.c  home  lib  lib64  media....
 
bash-4.1$ ./a.out
2.6.37-3.x x86_64
 
sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),99(nobody)

Источник: http://www.opennet.ru/opennews/art.shtml?num=36933

UPDATE от 2013-05-15
А вот и небольшой workaround подоспел (правда, есть подозрение, что помогает оно только конкретно от этого эксплойта, а сам баг в ядре можно и по-другому проэксплуатировать):

[root@serv ~]# /sbin/sysctl -w kernel.perf_event_paranoid=2
kernel.perf_event_paranoid = 2
[root@serv ~]# /sbin/sysctl -w kernel.perf_event_max_sample_rate=-1
kernel.perf_event_max_sample_rate = -1
[root@serv ~]# exit
[avz@serv ~]$ ./a.out
exploit: semtex.c:51: sheep: Assertion `!close(fd)' failed.
Aborted
[avz@serv ~]$

Кстати, быстро определить какие известные баги есть в вашем ядре можно с помощью такого one-liner-а:

(uname -s; uname -m; uname -r; uname -v) | curl https://uptrack.api.ksplice.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @-

Posted in *nix.


К счёту в системе "Яндекс.Деньги" теперь может быть привязана карта MasterCard Gold

Банковская карта Яндекс.Деньги

Банковская карта Яндекс.Деньги

Яндекс.Деньги своместно с банком "Тинькофф Кредитные Системы" анонсировали выпуск специального платежного средства - банковской карты Яндекс.Денег класса MasterCard Gold. На ней указаны имя и фамилия держателя, номер, срок действия и код CVC. При этом счет карты — это счет в Яндекс.Деньгах.

Карта выпускается бесплатно сроком на три года. Стоимость доставки карты: 149 рублей по России, 199 рублей — во все остальные страны. Обязательным условием выпуска карты является привязка к счёту мобильного телефона. На банковской карте Яндекс.Денег есть и чип, и магнитная полоса, ею можно расплачиваться в любых магазинах, где принимают MasterCard. Также предусмотрена возможность выпуска пин-кода, что позволяет также снимать деньги и в банкоматах. Комиссия при этом составит 3% от суммы + 15 рублей (но не менее 100 рублей). За платежи с карты комиссии нет. А статус Gold позволяет иногда получить дополнительные бонусы. Например — скидки в некоторых магазинах. К каждому счету в Яндекс.Деньгах можно выпустить только одну карту.

Порядок получения банковской карты Яндекс.Денег

  1. Заходим на сайт Яндекс.Денег под своим логином и паролем. Открываем «Управление счетом».
  2. В блоке «Банковские карты» выбираем пункт «Банковская карта Яндекс.Денег» и заполняем анкету. Поля «Имя» и «Фамилия» нужно заполнить так, чтобы не возникало потом проблем ни при получении заказного письма на почте, ни при платеже в магазинах. Для этого проще всего переписать эти данные с паспорта.
  3. Нажимаем кнопку «Выпустить». Если в анкете были заполнены все необходимые поля, то откроется страница, где нужно будет подтвердить платеж за доставку.
  4. Вводим платежный пароль, после чего стоимость доставки списывается со счёта и отобразится сообщение о том, что платеж успешно выполнен. После этого через 1—5 рабочих дней карта будет отправлена на указанный ранее почтовый адрес адрес ценным письмом. Одновременно на email будет выслан почтовый идентификатор. Его можно ввести на сайте почты России, чтобы узнать, где находится посылка.

Как активировать банковскую карту Яндекс.Денег

  1. Заходим на сайт Яндекс.Денег под своим логином и паролем. На главной странице переходим по ссылке в блоке «Незавершенные процессы».
  2. Заполняем нужные поля на открывшейся странице: потребуется указать последние 8 цифр номера карты и срок окончания ее действия.
  3. Нажимаем кнопку «Активировать». Если всё было указано правильно, появится сообщение об успешной активации карты. После этого картой можно расплачиваться в любых магазинах, где принимают MasterCard.

Как выпустить пин-код

Чтобы подтверждать платежи в некоторых магазинах, нужен PIN-код. Для получения PIN-кода следует позвонить по номеру 8 800 555 2530 с телефона, который привязан к счёту Яндекс.Денег, и ответить на вопросы оператора. Для звонков из-за пределов России, нужно набирать номер +7 (495) 645 5919. После того, как робот продиктует пин-код, нужно обязательно ответить «Да» (если этого не сделать, пин-код будет уничтожен).

Банковская карта Яндекс.Деньги :)

Банковская карта Яндекс.Деньги

Posted in Money.


Проблемы с обновлением MySQL с версии 5.5 на 5.6

Жил да был себе один mysql-сервер с версией 5.5.13. В один прекрасный солнечный весенний день возникла необходимость обновить его до версии 5.6.10. Остановил mysql, удалил старые rpm-ки, поставил новые. Но вот после команды "/sbin/service mysql start" ждал меня следующий облом в error.log-е:

130319 11:10:54 mysqld_safe Number of processes running now: 0
130319 11:10:54 mysqld_safe mysqld restarted
2013-03-19 11:10:57 9319 [Note] Plugin 'FEDERATED' is disabled.
2013-03-19 11:10:57 9319 [Note] InnoDB: The InnoDB memory heap is disabled
2013-03-19 11:10:57 9319 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2013-03-19 11:10:57 9319 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-03-19 11:10:57 9319 [Note] InnoDB: CPU does not support crc32 instructions
2013-03-19 11:10:57 9319 [Note] InnoDB: Using Linux native AIO
2013-03-19 11:10:57 9319 [Note] InnoDB: Initializing buffer pool, size = 150.0G
2013-03-19 11:11:11 9319 [Note] InnoDB: Completed initialization of buffer pool
2013-03-19 11:11:11 9319 [Note] InnoDB: Highest supported file format is Barracuda.
2013-03-19 11:11:14 9319 [Note] InnoDB: Log scan progressed past the checkpoint lsn 810321211776
2013-03-19 11:11:14 9319 [Note] InnoDB: Database was not shutdown normally!
2013-03-19 11:11:14 9319 [Note] InnoDB: Starting crash recovery.
2013-03-19 11:11:14 9319 [Note] InnoDB: Reading tablespace information from the .ibd files...
2013-03-19 11:11:14 9319 [Note] InnoDB: Restoring possible half-written data pages 
2013-03-19 11:11:14 9319 [Note] InnoDB: from the doublewrite buffer...
InnoDB: Doing recovery: scanned up to log sequence number 810321211796
InnoDB: Last MySQL binlog file position 0 864691679, file name ./serv4-bin.000427
2013-03-19 11:11:20 9319 [Note] InnoDB: 128 rollback segment(s) are active.
2013-03-19 11:11:20 9319 [Note] InnoDB: Waiting for purge to start
2013-03-19 11:11:20 9319 [Note] InnoDB: 1.2.10 started; log sequence number 810321211796
2013-03-19 11:11:20 9319 [Note] Recovering after a crash using serv4-bin
2013-03-19 11:11:20 9319 [Note] Starting crash recovery...
2013-03-19 11:11:20 9319 [Note] Crash recovery finished.
2013-03-19 11:11:20 9319 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3309
2013-03-19 11:11:20 9319 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
2013-03-19 11:11:20 9319 [Note] Server socket created on IP: '0.0.0.0'.
2013-03-19 11:11:20 9319 [Warning] Info table is not ready to be used. Table 'mysql.slave_master_info' cannot be opened.
2013-03-19 11:11:20 9319 [Warning] Info table is not ready to be used. Table 'mysql.slave_relay_log_info' cannot be opened.
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.events_waits_current is wrong. Expected 19, found 16. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.events_waits_history is wrong. Expected 19, found 16. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.events_waits_history_long is wrong. Expected 19, found 16. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_host_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Incorrect definition of table performance_schema.events_waits_summary_by_thread_by_event_name: expected column 'THREAD_ID' at position 0 to have type bigint(20), found type int(11).
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_user_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_account_by_event_name' has the wrong structure
11:11:20 UTC - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.
 
key_buffer_size=33554432
read_buffer_size=2097152
max_used_connections=0
max_threads=10000
thread_count=2
connection_count=0
It is possible that mysqld could use up to 
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 61607924 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
 
Thread pointer: 0x2ad3330edb90
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 43cd0930 thread_stack 0x30000
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.file_summary_by_event_name is wrong. Expected 23, found 5. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.file_summary_by_instance is wrong. Expected 25, found 6. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'host_cache' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Incorrect definition of table performance_schema.mutex_instances: expected column 'LOCKED_BY_THREAD_ID' at position 2 to have type bigint(20), found type int(11).
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x8ff785]
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'objects_summary_global_by_type' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Incorrect definition of table performance_schema.rwlock_instances: expected column 'WRITE_LOCKED_BY_THREAD_ID' at position 2 to have type bigint(20), found type int(11).
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'setup_actors' has the wrong structure
/usr/sbin/mysqld(handle_fatal_signal+0x3e8)[0x66e9b8]
/lib64/libpthread.so.0[0x304880eb10]
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'setup_objects' has the wrong structure
/usr/sbin/mysqld[0x694995]
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'table_io_waits_summary_by_index_usage' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'table_io_waits_summary_by_table' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'table_lock_waits_summary_by_table' has the wrong structure
/usr/sbin/mysqld(_Z11mysql_grantP3THDPKcR4ListI11st_lex_userEmbb+0x525)[0x6987c5]
2013-03-19 11:11:20 9319 [ERROR] Column count of mysql.threads is wrong. Expected 14, found 3. Created with MySQL 50513, now running 50610. Please use mysql_upgrade to fix this error.
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_current' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_history' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_history_long' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_summary_by_thread_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_summary_by_account_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_summary_by_user_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_summary_by_host_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_stages_summary_global_by_event_name' has the wrong structure
/usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0x5a85)[0x6f0545]
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_current' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_history' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_history_long' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_thread_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_account_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_user_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_host_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_global_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_digest' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'users' has the wrong structure
/usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x318)[0x6f1858]
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'accounts' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'hosts' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'socket_instances' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'socket_summary_by_instance' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'socket_summary_by_event_name' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'session_connect_attrs' has the wrong structure
2013-03-19 11:11:20 9319 [ERROR] Native table 'performance_schema'.'session_account_connect_attrs' has the wrong structure
/usr/sbin/mysqld(_ZN15Query_log_event14do_apply_eventEPK14Relay_log_infoPKcj+0x60b)[0x89676b]
/usr/sbin/mysqld(_ZN9Log_event11apply_eventEP14Relay_log_info+0x74)[0x8907a4]
/usr/sbin/mysqld(_Z26apply_event_and_update_posPP9Log_eventP3THDP14Relay_log_info+0x18a)[0x8d33fa]
/usr/sbin/mysqld[0x8d3f68]
/usr/sbin/mysqld(handle_slave_sql+0xd14)[0x8d5314]
/usr/sbin/mysqld(pfs_spawn_thread+0x13b)[0x9790cb]
/lib64/libpthread.so.0[0x304880673d]
/lib64/libc.so.6(clone+0x6d)[0x30480d3f6d]
 
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (2ad3330f87b5): is an invalid pointer
Connection ID (thread ID): 2
Status: NOT_KILLED
 
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.

И так по кругу – mysqld пытается взлететь, у него не получается, он в конвульсиях пишет в лог всё вышепроцитированное, дохнет, mysqld_safe пытается перезапустить его заново... Поскольку основная ругань была на базу performance_schema, то я попробовал запустить mysql вот так:

/usr/sbin/mysqld --defaults-file=/etc/my4.cnf --basedir=/usr --datadir=/var/lib/mysql4 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql4/error.log --open-files-limit=65536 --pid-file=/var/lib/mysql4/mysql-4.pid --socket=/var/lib/mysql4/mysql.sock --port=3309 --skip-performance-schema --read-only --skip-networking --skip-slave-start

Параметров так много, потому что на сервере крутится несколько экземпляров mysql на разных портах, каждый со своими базами. Ключевым параметром здесь является --skip-performance-schema. После этого mysql таки успешно взлетел и у меня появилась возможность выполнить команду

mysql_upgrade --socket=/var/lib/mysql4/mysql.sock

которая починила все ошибки в таблицах, связанные с изменением их структуры в новой версии. Далее тушим аккуратно этот экземпляр:

mysqladmin shutdown --socket=/var/lib/mysql4/mysql.sock

И запускаем его уже штатным образом:

/etc/init.d/mysql4 start

И наслаждаемся в полной мере новыми фичами версии 5.6 :)

торрент трекер - Burn.cd

Posted in Howto.

Tagged with .