Linux: Мои первые 15 минут на сервере CentOS 7

Прошло почти 4 года с моего поста Linux: Мои первые 15 минут на сервере. Время идет, уже давно вышел в свет CentOS 7, инструкция в целом актуальна, но требует обновления в связи с особенностями дистрибутива.

Поехали…

Как настроить сеть, было постом ниже Centos 7: Настройка сети

Centos 7: Пользователи

Повторяем все тоже самое что и прошлый раз:

#Меняем пароль root:
passwd root

#Добавляем дополнительного пользователя:
adduser username
usermod -a -G wheel username

#Разрешаем вновь созданному пользователю sudo:
/bin/sed -ie "s/# %wheel\tALL=(ALL)\tNOPASSWD: ALL/%wheel\tALL=(ALL)\tNOPASSWD: ALL/g" /etc/sudoers
# проверяем
grep "NOPASSWD: ALL" /etc/sudoers

#Добавляем к ранее созданному пользователю публичный ключ

mkdir /home/username/.ssh
echo "my_public_key" >>/home/username/.ssh/authorized_keys
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
chown username:username /home/username/.ssh -R

Centos 7: Репозитории

Epel и Remi ставятся в 2 команды:

sudo yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Проверяем:

#yum check-update
Loaded plugins: fastestmirror
epel/x86_64/metalink                                                                                                               |  28 kB  00:00:00
epel                                                                                                                               | 4.3 kB  00:00:00
remi-safe                                                                                                                          | 2.9 kB  00:00:00
(1/4): epel/x86_64/group_gz                                                                                                        | 170 kB  00:00:00
(2/4): epel/x86_64/updateinfo                                                                                                      | 843 kB  00:00:00
(3/4): remi-safe/primary_db                                                                                                        | 1.1 MB  00:00:00
(4/4): epel/x86_64/primary_db              

Centos 7: SSH

/bin/sed -ie "s/#PermitRootLogin yes/PermitRootLogin no/g"  /etc/ssh/sshd_config
/bin/sed -ie "s/#PasswordAuthentication yes/PasswordAuthentication no/g"  /etc/ssh/sshd_config

# Делаем проверку
grep RootLogin /etc/ssh/sshd_config
grep PasswordAut /etc/ssh/sshd_config

#Если все хорошо, то
service sshd restart

Чтобы нас не сканировали, вешаем SSH на другой порт:

sudo vi /etc/ssh/sshd_config
#
Port 2224
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Если при рестарте видим предупреждение:

# service sshd restart
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

Oct 20 14:18:18 tvh5-test-1 sshd[27599]: error: Bind to port 2224 on 0.0.0.0 failed: Permission denied.
Oct 20 14:18:18 tvh5-test-1 sshd[27599]: error: Bind to port 2224 on :: failed: Permission denied.

Значит необходимо добавить порт в selinux:

yum install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 2224

Если включен файрвол, то добавляем правило и в него:

sudo firewall-cmd --permanent --zone=public --add-port=2224/tcp
sudo firewall-cmd --reload

Перезапускаем сервис и проверяем доступность:

#sudo systemctl restart sshd.service
#ss -tnlp | grep ssh
LISTEN          0                128                              *:2224 *:*                                     users:((“sshd”,10783,3))
LISTEN          0               128                              :::2224 :::*                                     users:((“sshd”,10783,4))

# ИЛИ

# netstat -antp | grep ss
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:2224            0.0.0.0:*               LISTEN      27789/sshd

Если есть необходимость оставить порт, то стоит настроить хотя бы fail2ban.

Centos 7: fail2ban

Ставим пакет:

sudo yum install epel-release
sudo yum install fail2ban

Настраиваем мониторинг перебора паролей SSH:

sudo vi /etc/fail2ban/jail.local

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

Рестартуем службу и проверяем статус:

sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
sudo fail2ban-client status

Status
|- Number of jail:      1
`- Jail list:   sshd

Centos 7: Nginx

Подключаем репозитарий:

#vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

Ставим Nginx:

sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

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

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Проверяем доступность:

# netstat -tulpn | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1392/nginx: master

Centos 7: История команд Linux

Для правильного сохранения истории команд со временем и без перетирания данных, в «~/.bashrc» добавляем строки:

#Учитывать дату и время выполнения команды
export HISTSIZE=10000
export HISTTIMEFORMAT="%h %d %H:%M:%S "
#Дописывает файл .history
PROMPT_COMMAND='history -a'
export HISTIGNORE="ls:ll:history:w"

Centos 7: Кто использует память?

Неожиданно в процессе настройки кончилась память, хотя на похожей конфигурации память есть и с запасом. Решил посмотреть, кто использует память:

#ps -eo size,pid,user,command | awk '{ hr=$1/1024 ; printf("%13.6f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | sort -g

1   97.144531 Mb /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
2   142.906250 Mb php-fpm: pool www
3   145.253906 Mb /usr/sbin/rsyslogd -n
4   151.503906 Mb /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b
5   217.613281 Mb /usr/sbin/NetworkManager --no-daemon
6   297.339844 Mb /usr/bin/python -Es /usr/sbin/tuned -l -P
7   440.273438 Mb /usr/lib/polkit-1/polkitd --no-debug

Можно было сделать проще, но мы не ищем легких путей:

#ps aux --sort -vsz | head

5,6 и 7 процесс явно кандидаты на вылет. А вот с rsyslogd все в порядке, просто новая версия стала кушать память примерно в 2 раза больше.

#ps -L -C rsyslogd -o command,vsize,rss,%mem,size
COMMAND                        VSZ   RSS %MEM  SIZE
/usr/sbin/rsyslogd -n       210280  3448  0.3 148740
/usr/sbin/rsyslogd -n       210280  3448  0.3 148740
/usr/sbin/rsyslogd -n       210280  3448  0.3 148740

Продолжение следует…

Вы можете оставить комментарий ниже.