Защита от хакеров Linux Ubuntu

Чем интересней ресурс, тем выше вероятность того, что взломают сервер. Поэтому, приходится бороться со взломами, искать процессы и т.п.


1. Есть подозрение, что кто-то подключился к рабочему столу

Смотрим:
who

r        tty7         2013-03-11 06:52 (:0)
r        pts/2        2013-04-03 05:21 (192.168.3.62)
r        pts/6        2013-04-03 08:27 (192.168.3.62)
r        pts/5        2013-04-03 07:58 (192.168.3.62)
(unknown) tty8         2013-04-03 06:16 (:1)
(unknown) tty9         2013-04-03 08:28 (:2)
(unknown) tty10        2013-04-03 08:47 (:3)


Прежде всего, обращаем внимание на подозрительных пользователей. Так, например, пользователь (unknown) - это странное явление. Значит, нужно его выкинуть и закрыться от возможности его подключения.
Выполняем:

who -a -p
           завантаження системи 2013-03-11 06:54
           рівень виконання 2 2013-03-11 06:54
ВХІД   tty4         2013-03-11 06:54              1575 id=4
ВХІД   tty5         2013-03-11 06:54              1581 id=5
ВХІД   tty2         2013-03-11 06:54              1588 id=2
ВХІД   tty3         2013-03-11 06:54              1589 id=3
ВХІД   tty6         2013-03-11 06:54              1593 id=6
r        + tty7         2013-03-11 06:52  да        4824 (:0)
ВХІД   tty1         2013-03-11 06:52              5937 id=1
           pts/2        2013-03-11 06:57                 0 id=/2    термінал=0 вихід=0
r        + pts/2        2013-04-03 05:21 01:26        2104 (192.168.3.62)
r        + pts/6        2013-04-03 08:27   .           409 (192.168.3.62)
           pts/7        2013-03-11 11:45                 0 id=/7    термінал=0 вихід=0
           pts/8        2013-04-03 09:21             15957 id=ts/8  термінал=0 вихід=0
           pts/10       2013-04-03 09:13             14507 id=s/10  термінал=0 вихід=0
           pts/12       2013-03-11 10:18             19235 id=s/12  термінал=0 вихід=0
           pts/14       2013-03-11 10:31             21030 id=s/14  термінал=0 вихід=0
r        + pts/5        2013-04-03 07:58 00:05       23871 (192.168.3.62)
           pts/3        2013-04-03 07:36              5537 id=ts/3  термінал=0 вихід=0
           pts/7        2013-04-03 09:17             10140 id=ts/7  термінал=0 вихід=0
           pts/9        2013-04-03 09:14             14013 id=ts/9  термінал=0 вихід=0
           pts/11       2013-03-19 18:33              6218 id=s/11  термінал=0 вихід=0
           pts/13       2013-03-11 22:14             17281 id=s/13  термінал=0 вихід=0
           pts/15       2013-03-11 22:33             18853 id=s/15  термінал=0 вихід=0
           pts/17       2013-03-11 21:52             19310 id=s/17  термінал=0 вихід=0
           pts/6        2013-03-25 07:43                 0 id=/6    термінал=0 вихід=0
           pts/8        2013-03-25 07:43                 0 id=/8    термінал=0 вихід=0
(unknown) + tty8         2013-04-03 06:16  да        5873 (:1)
(unknown) + tty9         2013-04-03 08:28  да         813 (:2)
           tty10        2013-04-03 09:10              7691 id=:3    термінал=0 вихід=0


Убиваем злодея:
kill 5873 813

После того, как убили, анализируете, ищите, как он мог войти. Убираете возможность подключения не прошенных гостей.


2. Запрет удаленного подключения к X11 через ssh
По умолчанию, ssh разрешает запускать x11 через ssh. Т.е. можно запускать графические приложения linux на сервере, используя протокол ssh.
Как это делается, написано в статье: http://d51x.ru/page/udalennyj-dostup-x11-forwarding

Но, вопреки этому, советую все же данную возможность отключать.
Редактируем файл: /etc/ssh/sshd_config 
Меняем выражение:
X11Forwarding    no

Перезагружаем ssh:

/etc/init.d/ssh restart


3. Ограничиваем доступ по ssh
Редактируем все тот же конфигурационный файл для ssh: /etc/ssh/sshd_config 
Желательно, сменить номер порта ssh (чтоб никто не знал, что там находится ssh :):
Port 22

Так же, можно изменить адрес, на котором слушает демон:
ListenAddress 0.0.0.0

Разрешаем вход по ssh только определенным пользователям:
AllowUsers user1 user2 user3


Перезагружаем ssh:

/etc/init.d/ssh restart

4. Настраиваем файервол

Устанавливаем расширение (настройки) для iptables:
apt-get install arno-iptables-firewall

Конфигурируем порты /etc/arno-iptables-firewall/conf.d 
Например:

EXT_IF="eth0 ppp0"
EXT_IF_DHCP_IP=1

# 3343,4434 - Порты для администрирования svn
# 9000 - порт для darkstat
# 3389 - терминал Windows
# 1500 - ???
# 8080 - порт для доступа к svn
# 1500 - ISP админка
# 440 - новый номер порта для ssh
# 22 - был ssh УБРАН

OPEN_TCP="80,443,21,6543,47,3343,4434,8080,1500,440"

# 110,25,995

OPEN_UDP=""
INT_IF="eth1"
NAT=0
INTERNAL_NET="192.168.3.0/24"
NAT_INTERNAL_NET="eth1"
OPEN_ICMP=1
LAN_OPEN_TCP="80,443,21,6543,1723,47,3389,1500,9000,5900,440"



Перезагружаем:
invoke-rc.d arno-iptables-firewall restart


5. Из sudo удаляем лишних пользователей
Редактируем файл: /etc/sudoers


Комментарим root, перечисляем наших пользователей-админов и комментарим доступ к sudo для груп администраторов и т.п.

Вот пример, того, что у меня получилось:


# User privilege specification
#root    ALL=(ALL:ALL) ALL
r           ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
#%sudo<>ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d


6. Делаем сложный пароль для пользователя root
Хакеры пытаются подобрать пароль супер-пользователя root простым перебором. Поэтому, делайте пароль для данного пользователя не менее 12 символом и посложнее.

Для изменения пароля пользователя root, выполняем:
passwd root

7. Защита дыр в Apache.
Выполните команду:
curl -I -H "Request-Range: bytes=0-1,0-2,0-3,0-4,0-5,0-6" -s Ваш домен/robots.txt | grep Partial

Если у Вас выдастся ответ 206 Partial Content, то это означает, что Ваш Apache имеет не плохую уязвимость.

Для того, чтоб убрать данную уязвимость, выполните:
sudo a2enmod headers

В Nginx пропишите:
proxy_set_header Range "";
proxy_set_header Request-Range "";


В Apache пропишите:
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
RequestHeader unset Request-Range


Перезагрузите веб-сервис:
/etc/init.d/apache2 restart



Комментарии

Популярные сообщения