Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

Базовая безопасность в linux (часть 1)

02.10.2011 22:05 | Просмотров: 1717 | Доход: 58.95 руб. | Комментариев: 2
[Администрирование ] 
Рейтинг: 3/1

Жизнь опасная штука :) После установки свежего дистрибутива необходимо задуматься о безопасности. Разные операционные системы по-разному находят компромисс между производительностью, поддержкой программного обеспечения и защищенностью. Сейчас сложно найти компьютер не подключенный к интернету. Интернет предоставляет злоумышленнику огромный арсенал способов проникновения в компьютер и чем больше приложений установлено, тем больше шансов на успех. Таким образом нужно четко представлять какая программа за что отвечает и блокировать все лишнее. Лучший подход - запрещено все что не разрешено. Итак, первое на что необходимо обратить внимание - это сетевая безопасность. Под Linux я не нашел краткого руководства, которое на мой взгляд охватыватывало бы все основные аспекты.

Прежде всего необходимо выяснить какие порты прослушиваются программами и нужны ли они. Первым делом я всегда ставлю nmap. (Как всегда буду описывать на примере Debian, но данное руководство подойдет к любому дистрибутиву.)

#apt-get install nmap

Чтобы узнать какие программы в данное время слушают порты, выполните

#nmap [ip]

Starting Nmap 5.00 ( http://nmap.org ) at 2011-10-02 21:07 ALMT
Interesting ports on [ip]:
Not shown: n closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
111/tcp   open  rpcbind
1521/tcp  open  oracle
8080/tcp  open  http-proxy
...

Если в этом списке присутствуют службы которые Вы видете в первые - смело их удаляйте. Лучше всего запретить root логиниться к sshd и сменить порт на нестандартный к примеру на 2022, предварительно убедитесь что данный порт не зарезервирован другой службой:

#cat /etc/services |grep 2022

меняем порт в конфиге и перезапускаем sshd

vim /etc/ssh/ssh_config
# Port 2022
/etc/init.d/ssh restart

Проверяем:

#nmap [ip]|grep ssh
2022/tcp    open  ssh

Далее ставим fail2ban в качестве защиты от брутфорса. основной конфиг  лежит тут /etc/fail2ban/jail.conf. Пароли ко всем службам, а также к учеткам не должны быть сгенерированы случайным образом и быть не менее 8 символов разным регистром и содержать несколько цифр. Запрещаем неавторизованно изменять конфиг (добавление\удаление сервисов) chattr +i /etc/services

Теперь немного теории про iptables. Смотрим где у нас исполняемый файл iptables:

#which iptables
/sbin/iptables

Создаем скрипт, который запускаем при старте системы:

#!/bin/sh
iptables="/sbin/iptables"
eth="eth0"
uports="1024:65535"

#если пакет в состоянии INVALID, то блокируем его
$iptables -A INPUT -m state --state INVALID -j DROP
$iptables -A FORWARD -m state --state INVALID -j DROP

# разрешаю пинговать любые ip
$iptables -A INPUT -p icmp -m icmp -i eth0 --icmp-type echo-reply -j ACCEPT
$iptables-A OUTPUT -p icmp -m icmp -o eth0 --icmp-type echo-request -j ACCEPT
# полный доступ локально
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT

# эту строчку оставляем если нужна прокся 3128, аналогично с SMTP, IMAP, POP3, FTP
$iptables -A OUTPUT -p tcp -m tcp -o $eth --dport 3128 --sport $uports -j ACCEPT
$iptables -A INPUT -p tcp -m tcp -i $eth --dport $uports --sport 3128 -j ACCEPT ! --syn  

# SSH клиент (22)
$iptables -A OUTPUT -p tcp -m tcp -o $eth --dport 22 --sport $uports -j ACCEPT
$iptables -A INPUT -p tcp -m tcp -i $eth --dport $uports --sport 22 -j ACCEPT ! --syn
$iptables -A OUTPUT -p tcp -m tcp -o $eth --dport 22 --sport 1020:1023 -j ACCEPT
$iptables -A INPUT -p tcp -m tcp -i $eth --dport 1020:1023 --sport 22 -j ACCEPT ! --syn

# HTTP/HTTPS клиент (80, 443)
$iptables -A OUTPUT -p tcp -m tcp -m multiport -o $eth --sport $uports -j ACCEPT --dports 80,443
$iptables -A INPUT -p tcp -m tcp -m multiport -i $eth --dport $uports -j ACCEPT --sports 80,443 ! --syn

# Палитика по умолчанию на исходящие пакеты цепочки OUTPUT таблицы filter (удалять исходящие пакеты по умолчанию)
$iptables -P OUTPUT DROP
# Палитика по умолчанию на входящие пакеты цепочки INPUT таблицы filter (удалять входящие пакеты по умолчанию)
$iptables -P INPUT DROP

Описывать каждый параметр думаю не имеет смысла, они есть в man'е. Если вдруг понадобиться дать кому-то полный доступ, то

$iptables -A INPUT -s [ip] -j ACCEPT
$iptables -A OUTPUT -d [ip] -j ACCEPT

На данном этапе нас уже не видно и не слышно, т.к. наша ось даже не пингуется(icmp), пока мы сами этого не захотим. Отключить все правила если что-то сделали не верно в iptables можно командами:

/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -F
/sbin/iptables -X

 Теперь о командах которые стоит взять на вооружение. "lastlog" - желательно время от времени контролировать кто и когда авторизовывался в системе. А также кто в данный момент авторизован в системе - команда "who", по pts которой можно выяснить все процессы запущенные этим пользователем "ps -A | grep pts/1" и выкинуть в случае чего kill -9 [pid]. Не стоит забывать про логи, например с помощью "cat /var/log/auth.log|grep failure"  можно просмотреть попытки неудачного входа в систему и определить пресек брутфорс наш установленный fail2ban или нет.

Время от времени контролируем что выполняется при старте системы

~/.kde/Autostart
/etc/rc.local
~/xsession
~/.profile
 
P.S.: предлагаю в комментах описывать моменты которые я упустил и кто что еще использует чтобы обезопасить свою систему.

 

ждите часть 2 ;)


© GM
| Комментировать статью |
  • jdev +62 (07.10.2011 21:45)
    Сразу после установки ОС первым делом надо выдернуть сетевой шнур! :)
    | Ответить |
    • Аноним 0 (16.10.2011 13:53)
      выдерни шнур, выдави стекло
      | Ответить |