Подготовка сервера

Главные вкладки

Аватар пользователя EliteMonk EliteMonk 11 апреля 2011 в 22:38

Оглавление

Хостер установил уже Ubuntu Server 10.10 и даже поставил ssh и Apache 2.

Заходим через SSH как root, сразу меняем пароль на нормальный

passwd

Добавляем группу избранных, назовём её raccess

/usr/sbin/groupadd raccess

Открываем файл, для того чтобы нашу группу сделать "избранной"

/usr/sbin/visudo

Добавляем в конец файла, далее если не оговаривается, то всегда вставляется именно в конец.

## Allows people in group raccess to run all commands
%raccess ALL=(ALL) ALL

Добавляем нового пользователя, пускай будет admin, но в теории хорошо как и группу называть по другому, это усложняет взлом подбором.

/usr/sbin/adduser admin

Добавляем его к ранее созданной группе

/usr/sbin/usermod -a -G raccess admin

Добавляем папку для ключей SSH

mkdir ~/.ssh

Генерируем ключи

ssh-keygen -t rsa

Делаем для нашего будущего аккаунта, где вместо нулей подставляем реальный IP адрес

scp ~/.ssh/id_rsa.pub admin@0.0.0.0:
mkdir ~admin/.ssh
mv ~admin/id_rsa.pub ~admin/.ssh/authorized_keys

Назначаем права нашему пользователю

chown -R admin:admin ~admin/.ssh
chmod 700 ~admin/.ssh
chmod 600 ~admin/.ssh/authorized_keys

Настраиваем SSH

vim /etc/ssh/sshd_config

Проверяем значения и меняем или добавляем строки если нет...

Port 10022 # Меняем на что нибудь между 1025 и 65536, это так же усложнит жизнь взломщикам.
Protocol 2
PermitRootLogin no # отключаем запись для root пользователя
UseDNS no
AllowUsers admin # если пользователей несколько через пробел называем всех

В интернете предлагают сделать следующее, я пока не разобрался как потом залогиниться

PasswordAuthentication no

Создаём правила маршрутизации в файлике, чтобы после перезагрузки сервера настройки восстанавливались.

vim /etc/iptables.up.rules

Вставляем следующее, и меняем порт для SSH, который недавно ставили 10022, остальные не трогаем, в комментариях видно для чего они понадобятся.

*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows mysql
-A INPUT -p tcp --dport 3306 -j ACCEPT
# Allows fcgi
-A INPUT -p tcp --dport 9000 -j ACCEPT
-A INPUT -p tcp --dport 8521 -j ACCEPT
# Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 10022 -j ACCEPT
# Allows mail
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT
# Allows ldap
-A INPUT -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT
# Allows memcache
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT
# Allows munin
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4949 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT

Чистим память

/sbin/iptables -F

Применяем наши правила

/sbin/iptables-restore < /etc/iptables.up.rules

Проверяем внимательно особенно наш порт SSH

/sbin/iptables -L

Для восстановления после перезагрузки создаём файл

vim /etc/network/if-pre-up.d/iptables

Вставляем следующее

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

Разрешаем запускать этот файл

chmod +x /etc/network/if-pre-up.d/iptables

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

/etc/init.d/ssh reload

Закрываем Putty, открываем заново поменяв порт. Заходим под admin

Теперь нельзя залогиниться как root...