И снова cron

waldi

Новичок
Работаю в linux debian lenny
На сервере из-под рута редактирую
#crontab -u root -e

*/10 * * * * /sbin/iptables -F
#/etc/init.d/cron restart
Мне это нужно для отладки, ЭТО РАБОТАЕТ.
Но если туда же
#crontab -u root -e
для отладки пытаюсь вставить строчку вызова кроном исполняемого скрипта пхп типа
*/10 * * * * /tmp/script.php
то глухо, ничего не происходит, хотя сам скрипт успешно работает при вызове из командной строки bash, я уже поставил выдачу на экран отладки, звука.
Попытался вставить типа отладки
#crontab -u root -e
*/10 * * * * /tmp/script.php 2>/var/log/error.log
Тоже глухо,не работает. С правами на папки все вроде нормально, везде рут.
Господа гуру, помогите, что не так, уже облазил массу инфы в нете, пишут, что должно работать, а не работает!!
 

waldi

Новичок
Спасибо! Логи не писались, сейчас включу, посмотрю, что делается. Их в ленни, оказывается, надо включать.
 

zerkms

TDD infected
Команда форума
mod_telepathy: после последней строки в файле есть пустая строка?

ps: крон рестартовать не нужно, он перечитывает конфигурационный файл каждую минуту.
 

Активист

Активист
Команда форума
А еще есть такая замечательная штука, как /etc/cron.*/ , и mailto пользователю.

> /sbin/iptables -F
Не правильно, крайне неправильно.

Код:
#
# reset the default policies in the filter table.
#
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
# reset the default policies in the nat table.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# reset the default policies in the mangle table.
#
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

#
# flush all the rules in the filter and nat tables.
#
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

#
# erase all chains that's not default in filter and nat table.
#
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
Код:
serv002:~# crontab -l
MAILTO="[email protected]"
10      0       *       *       *       /usr/local/ispmgr/sbin/cron.sh sbin/mgrctl -m ispmgr task.daily
1       *       *       *       *       /usr/local/ispmgr/sbin/rotate
15      2       *       *       *       /usr/local/ispmgr/sbin/traffic.pl
28      1       *       *       *       /usr/local/ispmgr/sbin/cron.sh sbin/update.sh ispmgr
23      00      *       *       *       /usr/local/ispmgr/sbin/pbackup backup 1
00      *       *       *       *       /etc/init.d/sphinx
*/15    *       *       *       *       /etc/init.d/startdaemons >/dev/null 2>&1
> Их в ленни, оказывается, надо включать.
Ложь.
Код:
serv002:~# cat /var/log/syslog | grep CRON
Dec 14 06:30:01 serv002 /USR/SBIN/CRON[12335]: (root) CMD (/usr/bin/wget http://search.web.local/?action=cron -o /dev/null -O /dev/null --http-user=iserver --http-password=cron)
Dec 14 06:40:01 serv002 /USR/SBIN/CRON[14285]: (root) CMD (/usr/bin/wget http://search.web.local/?action=cron -o /dev/null -O /dev/null --http-user=iserver --http-password=cron)
Dec
 

zerkms

TDD infected
Команда форума
Активист
Код:
for table in nat mangle filter; do
    iptables -t $table --flush
    iptables -t $table --delete-chain
done
Я так чищу их
 

waldi

Новичок
да, в tmp запихнул наобум для отладки.
В логах крона вижу следующее
Dec 14 07:10:01 server1 /USR/SBIN/CRON[4255]: (root) CMD (/tmp/script.php)
Dec 14 07:20:01 server1 /USR/SBIN/CRON[4255]: (root) CMD (/tmp/script.php)
То есть, запускается каждые 10 мин как и нужно
Пробовал вставить cтрочку в
#crontab -u root -e
*/10 * * * * export DISPLAY=:0 && /tmp/script.php
так крон и ее в лог пишет
Dec 14 08:20:01 server1 /USR/SBIN/CRON[4657]: (root) CMD (export DISPLAY=:0 && /tmp/script.php)
сам текст скрипта script.php:
#/bin/sh/
echo "any text"
printf "\a"
 

waldi

Новичок
А еще есть такая замечательная штука, как /etc/cron.*/ , и mailto пользователю.

> /sbin/iptables -F
Не правильно, крайне неправильно.

Код:
#
# reset the default policies in the filter table.
#
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
# reset the default policies in the nat table.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# reset the default policies in the mangle table.
#
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

#
# flush all the rules in the filter and nat tables.
#
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

#
# erase all chains that's not default in filter and nat table.
#
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
Код:
serv002:~# crontab -l
MAILTO="[email protected]"
10      0       *       *       *       /usr/local/ispmgr/sbin/cron.sh sbin/mgrctl -m ispmgr task.daily
1       *       *       *       *       /usr/local/ispmgr/sbin/rotate
15      2       *       *       *       /usr/local/ispmgr/sbin/traffic.pl
28      1       *       *       *       /usr/local/ispmgr/sbin/cron.sh sbin/update.sh ispmgr
23      00      *       *       *       /usr/local/ispmgr/sbin/pbackup backup 1
00      *       *       *       *       /etc/init.d/sphinx
*/15    *       *       *       *       /etc/init.d/startdaemons >/dev/null 2>&1
> Их в ленни, оказывается, надо включать.
Ложь.
Код:
serv002:~# cat /var/log/syslog | grep CRON
Dec 14 06:30:01 serv002 /USR/SBIN/CRON[12335]: (root) CMD (/usr/bin/wget http://search.web.local/?action=cron -o /dev/null -O /dev/null --http-user=iserver --http-password=cron)
Dec 14 06:40:01 serv002 /USR/SBIN/CRON[14285]: (root) CMD (/usr/bin/wget http://search.web.local/?action=cron -o /dev/null -O /dev/null --http-user=iserver --http-password=cron)
Dec

Возможно, я делаю неправильно, делаю впервые.
Администрирую удаленно сервер, хочу настроить iptables от брутфорс атак, подбирают логин и пароль юзера ssh каждые несколько секунд. Так вот, чтобы при отладке фильтров iptables не заблокировать себя по ошибке, пытаюсь настроить крон, чтобы он эти самые правила iptables каждые 10 мин удалял пока я не буду уверен, что фильтры работают правильно.
Не подскажете ли код файла правил /etc/iptables.up.rules, чтобы был открыт порт 22 для ssh через eth0, максим. количество подключений к ssh, например, не более 8 в мин, и еще, как запретить для подключения перечень ip, пытающихся ломать.
 

zerkms

TDD infected
Команда форума
Поставь fail2ban
А на период тестов - исключение на свой текущий ip
Плюс перевешай ssh на другой порт
Плюс забери у рута возможность логиниться через ssh
 

Активист

Активист
Команда форума
Немного дополню:
> А на период тестов - исключение на свой текущий ip
т.е., первым правилом поставь
$IPTABLES -A INPUT -p ALL -s your_pc_ip -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -d your_pc_ip -j ACCEPT

Хотя самое лучше - это подключить IP-KVM и юзать его для флаша фаирвола.

Конкретно по твоему вопросу:
Dec 14 08:20:01 server1 /USR/SBIN/CRON[4657]: (root) CMD (export DISPLAY=:0 && /tmp/script.php)
1. Крон выполняется, если нет mailto, то все echo идут в /dev/null
2. Убери скрипт из tmp, т.к., при первой перезагрузки - убьет.
3. Засунь скрипт флаша фаирвола (полный), например, мой или zerkms в sh скрипт, и запускай его, на PHP.

ПС
Я писал вот такой скрипт
Код:
#!/bin/bash

stats="/etc/iptables/auth/stats.txt"
blacklist="/etc/iptables/auth/blacklist.txt"
whitelist="/etc/iptables/auth/whitelist.txt"


limit=100

cat /var/log/auth.log | egrep "Failed password for invalid user ([a-z_-]+) from" |awk '{print $13;}' |cut -d: -f1 | sort | uniq -c | sort -rnk1 > $stats


# Ckeckin states
cat $stats | while read num ip
do
    if (( "$num" >= "$limit" )); then
        cat $stats |grep "$ip"| while read numb suspect
        do allowed=`grep $suspect $whitelist`
            if [ "$suspect" != "$allowed" ]; then
                exist=`grep $suspect $blacklist|awk '{print $1}'`
                if [ "$suspect" != "$exist" ]; then
                    /bin/echo -e $suspect >> $blacklist
                    /bin/echo "Anti scan system: detected server scan from host: $suspect (count: $num). Adding to blacklist" > /etc/iptables/auth/message.txt
                    /usr/bin/mail -s "Detected server scan" [email protected] < /etc/iptables/auth/message.txt
                    /usr/bin/mail -s "Detected server scan" [email protected] < /etc/iptables/auth/message.txt
                    /sbin/iptables -A ddos -p TCP -s $suspect -j DROP
                fi
            fi
        done
    fi
done
            linux-debian-1:~#
А потом забил и удалил его, ибо похер, что сканируют ком, всю время сканируют, от этого не холодно не жарко.
 

zerkms

TDD infected
Команда форума
Активист
Чтобы не писать штуки типа "cat /var/log/auth.log | egrep "Failed password for invalid user ([a-z_-]+) from" |awk '{print $13;}' |cut -d: -f1 | sort | uniq -c | sort -rnk1 > $stats" с обвесом в виде отправки почты, и прочих действий - как раз и придумали fail2ban ;-)
 

waldi

Новичок
Поставь fail2ban
А на период тестов - исключение на свой текущий ip
Плюс перевешай ssh на другой порт
Плюс забери у рута возможность логиниться через ssh

А если мой провайдер(городская сеть)имеет динамический ip ,меняет его часто,ложится часто и достучаться к нему в случае чего невозможно?
Логинюсь я не через рут,
А перевесить ssh на другой порт - это значит откорректировать в файле /etc/ssh/sshd_config директиву Port 'другой_порт'?
Если да, то какой порт тут надо указывать?
Я новичок. Cмотрю на сервере логи и вижу,что при подключении по ssh на сервере генерируются значения порта пятизначные, если не ошибаюсь, каждый раз новые,
Что это может значить?
 

Активист

Активист
Команда форума
waldi
Сначала мы хотели бы услышать твое мнение по этому поводу.
 
Сверху