Содержание
Первичная настройка, обживание и тюнинг linux сервера на базе CentOS7
Первичная настройка
Знакомимся с сервером
Узнаем версию системы
cat /etc/redhat-release
И ответ
CentOS release 5.7 (Final)
Копаем дальше разрядность и версия
uname -a
В ответ получаем:
Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Дать свое имя
Переименуем машину как нам надо
Ищем и дописываем в файл /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 109.120.135.58 main.magnes.su
/etc/sysconfig/network
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=main.magnes.su GATEWAY=109.120.135.57
/etc/hostname
main.magnes.su
Еще можно так
hostname main.magnes.su
Тут я обычно перезагружаюсь, чтоб применилось имя сервера. Позволяет избежать лишних глюков в будущей настройке. /n
Еще хорошо бы к этому моменту уже иметь глобальную запись DNS на сервер.
reboot либо shutdown -r now
Проверим имя
uname -n hostname -a hostname -s hostname -d hostname -f hostname
Убираем ip и firewalld
Отказываемся от нововведений ip и firewalld
Ставим привычный ifconfig
yum install net-tools
ставим iptables
yum install iptables-services iptables
Добавляем iptables в автозагрузку
systemctl enable iptables
Добавляем свои правила в iptables
Настройка сети, защита
Закрываемся от всего, доступ только с работы
cat iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :FORWARD DROP [0:0] :INPUT DROP [0:0] :OUTPUT DROP [0:0] # 85- работа , 77-сервер -A INPUT -s 85.113.43.250 -d 77.221.139.146 -j ACCEPT -A OUTPUT -s 77.221.139.146 -d 85.113.43.250 -j ACCEPT COMMIT # Generated by webmin *mangle :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed # Generated by webmin *nat :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed
Или вот полный вариант, который еще недоточил до конца
#Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT DROP [0:0] :RH-Firewall-1-INPUT - [0:0] :OUTPUT ACCEPT [0:0] :FORWARD DROP [0:0] :BlockList - [0:0] :BlockRulz - [0:0] :LocOutput - [0:0] :LocInput - [0:0] -A FORWARD -j RH-Firewall-1-INPUT -A INPUT -j BlockList -A INPUT -j BlockRulz -A INPUT -j LocInput -A INPUT -j RH-Firewall-1-INPUT -A OUTPUT -j LocOutput # 67:68/udp DHCP requests from the Outside of our network -A BlockList -p udp -m udp -d 255.255.255.255 --dport 67:68 -j DROP # 135:139/tcp 135:139/udp NetBIOS Session -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 135:139 -j REJECT --syn -A BlockList -p udp -m udp -d 77.221.139.0/25 --dport 135:139 -j REJECT # 389/tcp 389/udp Ldap -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 389 -j REJECT --syn # 445/tcp microsoft-ds -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 445 -j REJECT --syn # 636/tcp 636/udp Ldap over SSL -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 636 -j REJECT --syn # 1433/tcp 1433/udp MS-SQL Server Monitor -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 1433:1434 -j REJECT --syn -A BlockList -p udp -m udp -d 77.221.139.0/25 --dport 1433:1434 -j REJECT # 1512/tcp 1512/udp WINS -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 1512 -j REJECT --syn # 1026,1058,3004,3062,3063,3065,3066,3072,3128,3131/tcp WinRPC services -A BlockList -p tcp -m multiport -m tcp -d 77.221.139.0/25 -j REJECT --dports 1026,1058,3004,3062,3063,3065,3066,3072,3128,3131 --syn # 3128/tcp Proxy server -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 3128 -j REJECT --syn # 3389/tcp Terminal Service -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 3389 -j REJECT --syn # 8080/tcp MS ISA Server/PROXY -A BlockList -p tcp -m tcp -d 77.221.139.0/25 --dport 8080 -j REJECT --syn # ANTI Syn-flood: -A BlockRulz -p tcp -m tcp -m limit -d 77.221.139.0/25 --limit 25/second -j ACCEPT --syn # ANTI Ports scan -A BlockRulz -p tcp -m tcp -m limit -d 77.221.139.0/25 --tcp-flags SYN,ACK,FIN,RST RST --limit 13/second -j ACCEPT # ANTI Ping of death -A BlockRulz -p icmp -m icmp -m limit -d 77.221.139.0/25 --icmp-type echo-request --limit 3/s -j ACCEPT # ANTI IDENT probes -A BlockRulz -p tcp --dport 113 -j REJECT --reject-with tcp-reset # SSH local SSH session from 89.186.251.10 #-A LocInput -p tcp -m tcp -s 89.186.251.10 --dport 5225 -j ACCEPT # 89.186.251.10 #-A LocOutput -p tcp -m tcp -m state -d 89.186.251.10 --sport 5225 --state ESTABLISHED -j ACCEPT # SSH access from 89.186.251.5 #-A LocInput -p tcp -m tcp -s 89.186.251.5 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 89.186.251.5 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from 89.186.251.5 - 85.113.43.250 -A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 22 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from 85.113.43.250 #-A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 5225 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 5225 --state ESTABLISHED -j ACCEPT # SSH access from world -A LocInput -p tcp -m tcp --dport 5225 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 5225 --state ESTABLISHED -j ACCEPT # Seahub access from world (web) - nginx rewrite proxy - for client list sync #-A LocInput -p tcp -m tcp --dport 8000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp --sport 8000 --state ESTABLISHED -j ACCEPT # Sea-client-deamon access from world - desctop #-A LocInput -p tcp -m tcp --dport 8082 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp --sport 8082 --state ESTABLISHED -j ACCEPT # Sea-client access from world - desctop -A LocInput -p tcp -m tcp --dport 10001 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 10001 --state ESTABLISHED -j ACCEPT # Sea-client-deamon access from world - desctop -A LocInput -p tcp -m tcp --dport 12001 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 12001 --state ESTABLISHED -j ACCEPT # SSH access from H0ME 80.234.40.26; 80.234.95.124 #-A LocInput -p tcp -m tcp -s 80.234.95.124 --dport 5225 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 80.234.95.124 --sport 5225 --state ESTABLISHED -j ACCEPT # SSH access from H0ME 80.234.40.26; 80.234.95.124 line life #-A LocInput -p tcp -m tcp -s 109.169.186.42 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 109.169.186.42 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from eQuantum 80.252.19.90, 193.219.125.133 #-A LocInput -p tcp -m tcp -s 80.252.19.90 --dport 5225 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 80.252.19.90 --sport 5225 --state ESTABLISHED -j ACCEPT #-A LocInput -p tcp -m tcp -s 193.219.125.133 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 193.219.125.133 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from eQuantum home 85.236.190.134 #-A LocInput -p tcp -m tcp -s 85.236.190.134 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 85.236.190.134 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from moodleman 194.165.20.1 #-A LocInput -p tcp -m tcp -s 194.165.20.1 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 194.165.20.1 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from lineman 94.231.130.29 #-A LocInput -p tcp -m tcp -s 94.231.130.29 --dport 22 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 94.231.130.29 --sport 22 --state ESTABLISHED -j ACCEPT # Web SERVER -A LocInput -p tcp -m tcp --dport 80 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 80 --state NEW,ESTABLISHED -j ACCEPT # local apache #-A LocInput -p tcp -m tcp -s 89.186.251.5 --dport 8080 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 89.186.251.5 --sport 8080 --state NEW,ESTABLISHED -j ACCEPT # SyncThingWorkGUI -A LocInput -p tcp -m tcp -s 89.186.251.5 --dport 51808 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 89.186.251.5 --sport 51808 --state NEW,ESTABLISHED -j ACCEPT # SyncThingWork -A LocInput -p tcp -m tcp --dport 22000 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 22000 --state NEW,ESTABLISHED -j ACCEPT # Webmin work -A LocInput -p tcp -m tcp -s 89.186.251.5 --dport 10000 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 89.186.251.5 --sport 10000 --state NEW,ESTABLISHED -j ACCEPT # Webmin work2 #-A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 10000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 10000 --state NEW,ESTABLISHED -j ACCEPT # Webmin home -A LocInput -p tcp -m tcp -s 5.164.166.223 --dport 10000 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 5.164.166.223 --sport 10000 --state NEW,ESTABLISHED -j ACCEPT # Usermin moodleman #-A LocInput -p tcp -m tcp -s 194.165.20.1 --dport 20000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 194.165.20.1 --sport 20000 --state NEW,ESTABLISHED -j ACCEPT # Usermin lineman #-A LocInput -p tcp -m tcp -s 94.231.130.29 --dport 20000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 94.231.130.29 --sport 20000 --state NEW,ESTABLISHED -j ACCEPT # usermin all #-A LocInput -p tcp -m tcp --dport 20000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp --sport 20000 --state NEW,ESTABLISHED -j ACCEPT # WWW out-request -A LocOutput -p tcp -m multiport -m tcp -s 77.221.139.146 --sport 1024: -j ACCEPT --dports 80,443 -A LocInput -p tcp -m multiport -m state -m tcp -d 77.221.139.146 --dport 1024: --state ESTABLISHED -j ACCEPT --sports 80,443 #-A LocInput -p tcp -m tcp -s 89.186.251.5 --dport 21 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 89.186.251.5 --sport 21 --state ESTABLISHED -j ACCEPT # ICMP samin input -A LocInput -p icmp -s 89.186.251.0/25 -j ACCEPT # ICMP samin input #-A LocInput -p icmp -s 85.113.43.250 -j ACCEPT # ICMP 0 = Echo Reply -A LocInput -p icmp -m icmp --icmp-type 0 -j ACCEPT # ICMP 3 = Port Unreachable -A LocInput -p icmp -m icmp --icmp-type 3 -j ACCEPT # ICMP 8 = Source host isolated (obsolete) -A LocInput -p icmp -m icmp --icmp-type 8 -j ACCEPT # ICMP 11 = Network unreachable for TOS -A LocInput -p icmp -m icmp --icmp-type 11 -j ACCEPT # ICMP samin output -A LocOutput -p icmp -d 89.186.251.0/25 -j ACCEPT # ICMP samin output -A LocOutput -p icmp -d 85.113.43.250 -j ACCEPT -A LocOutput -p icmp -m icmp --icmp-type 0 -j ACCEPT -A LocOutput -p icmp -m icmp --icmp-type 3 -j ACCEPT -A LocOutput -p icmp -m icmp --icmp-type 8 -j ACCEPT -A LocOutput -p icmp -m icmp --icmp-type 11 -j ACCEPT # TRACEROUTE -A LocOutput -p udp -m udp --dport 33435:33525 -j ACCEPT -A LocInput -p udp -m udp --dport 33435:33525 -j ACCEPT # DNS local input/output EXTERNAL DNS (77.221.130.254) - infobox dns #-A LocOutput -p udp -m udp -d 77.221.130.254 --dport 53 -j ACCEPT #-A LocInput -p udp -m state -m udp -s 77.221.130.254 --sport 53 --state ESTABLISHED -j ACCEPT #-A LocOutput -p tcp -m tcp -d 77.221.130.254 --dport 53 -j ACCEPT #-A LocInput -p tcp -m state -m tcp -s 77.221.130.254 --sport 53 --state ESTABLISHED -j ACCEPT # KEXON - DNS (77.221.140.254) - infobox 2 #-A LocOutput -p udp -m udp -d 77.221.140.254 --dport 53 -j ACCEPT #-A LocInput -p udp -m state -m udp -s 77.221.140.254 --sport 53 --state ESTABLISHED -j ACCEPT #-A LocOutput -p tcp -m tcp -d 77.221.140.254 --dport 53 -j ACCEPT #-A LocInput -p tcp -m state -m tcp -s 77.221.140.254 --sport 53 --state ESTABLISHED -j ACCEPT # Free - DNS (208.67.222.222) - free -A LocOutput -p udp -m udp -d 208.67.222.222 --dport 53 -j ACCEPT -A LocInput -p udp -m state -m udp -s 208.67.222.222 --sport 53 --state ESTABLISHED -j ACCEPT -A LocOutput -p tcp -m tcp -d 208.67.222.222 --dport 53 -j ACCEPT -A LocInput -p tcp -m state -m tcp -s 208.67.222.222 --sport 53 --state ESTABLISHED -j ACCEPT # Free - DNS (208.67.220.220) - free -A LocOutput -p udp -m udp -d 208.67.220.220 --dport 53 -j ACCEPT -A LocInput -p udp -m state -m udp -s 208.67.220.220 --sport 53 --state ESTABLISHED -j ACCEPT -A LocOutput -p tcp -m tcp -d 208.67.220.220 --dport 53 -j ACCEPT -A LocInput -p tcp -m state -m tcp -s 208.67.220.220 --sport 53 --state ESTABLISHED -j ACCEPT # SMTP SMTP Send #-A LocOutput -p tcp -m tcp -s 77.221.142.170 --dport 25 --sport 1024: -j ACCEPT #-A LocInput -p tcp -m state -m tcp -d 77.221.142.170 --dport 1024: --sport 25 --state ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -i lo -j ACCEPT #-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # -A RH-Firewall-1-INPUT -p tcp -m tcp -m state --dport 22 --state NEW -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state -s 80.234.40.26 --dport 22 --state NEW,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state -s 89.186.251.5 --dport 22 --state NEW,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state -s 80.234.40.26 --dport 10000 --state NEW -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state -s 89.186.251.5 --dport 10000 --state NEW -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state -s 89.186.251.10 --dport 10000 --state NEW,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state --dport 80 --state NEW,ESTABLISHED -j ACCEPT # vpn -A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited # ftp overport #-A LocInput -s 89.186.251.5 -j ACCEPT COMMIT # Generated by webmin *mangle :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed # Generated by webmin *nat #vpn :PREROUTING ACCEPT [4:614] :POSTROUTING ACCEPT [18:936] :OUTPUT ACCEPT [18:936] -A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE #vpn end :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # перенаправление портов с 8000 на 80 #-A PREROUTING -p tcp -m tcp -d 77.221.139.149 --dport 80 -j REDIRECT --to-ports 8000-8000 --to-port 8000 COMMIT # Completed
После чего проверяем наличие правил
iptables -S
И наконец запускаем iptables чем удобнее
systemctl start iptables /etc/init.d/iptables start service iptables start
Проверка состояния iptables
systemctl status iptables /etc/init.d/iptables status service iptables start
А теперь останавливаем и отключаем с автозагрузки firewalld
systemctl stop firewalld systemctl disable firewalld
–
Настраиваем окружение под себя
Ставим mc
yum install mc
Ставим webmin
Способ быстрый установка rpm
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.620/webmin-1.620-1.noarch.rpm?r=http%3A%2F%2Fwebmin.com%2F&ts=1361186030&use_mirror=citylan http://www.webmin.com/rpm.html rpm -U webmin-1.620-1.noarch.rpm
Способ правильный, добавление repo
cd /etc/yum.repos.d touch webmin.repo [Webmin] name=Webmin Distribution Neutral #baseurl=http://download.webmin.com/download/yum mirrorlist=http://download.webmin.com/download/yum/mirrorlist enabled=1 wget http://www.webmin.com/jcameron-key.asc rpm --import jcameron-key.asc yum install webmin
Если нечего не менять и открыть 10000 порт в iptables, то мы получим рули к серверу по адресу
http://localhost:10000/
Свои порты, ковыряем iptables, ssh
Переносим ssh на свой порт, чтоб не перебирали все кому не лень.
Готовимся к настройке ssh.
Включим webmin-морду. Таким образом обезопасим себя от отключения при правках iptables, касающихся настройки ssh
Откроем ssh на стандартном порту для себя же с одного IP и для всех с другого
/ets/sysconfig/iptables
# SSH access from 89.186.251.5 - 85.113.43.250 -A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 22 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 22 --state ESTABLISHED -j ACCEPT # SSH access from 85.113.43.250 #-A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 5225 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 5225 --state ESTABLISHED -j ACCEPT # SSH access from world -A LocInput -p tcp -m tcp --dport 5225 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 5225 --state ESTABLISHED -j ACCEPT
Откроем webmin для своего
# Webmin work -A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 10000 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 10000 --state NEW,ESTABLISHED -j ACCEPT
Добавим нужный порт в конфиг sshd (подробная настройка шела позднее)
/etc/ssh/sshd_config
Port 22 Port 5225
Перезапустим ssh
service sshd reload service sshd restart
Не катит, потому что 5225 порт не отдает selinux - надо еще статью про его настройку - semanage - нету по умолчанию в CO7!!!
Знакомимся с SELinux
SELinux - система принудительного контроля доступа. По умолчанию в CentOS работает строгое что не разрешено - запрещено (Enforcing)
Проверить режим работы можно командой
# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
# chcon -Rv –type=httpd_sys_content_t /html
Разрешить нестандартный порт
# semanage port -a -t http_port_t -p tcp 81
Посмотреть все порты
# semanage port -l
Посмотреть все переменные
# getsebool -a
Поменять что-то
# setsebool -P httpd_can_network_connect on
Теперь практика.
Беда в том, что пакет управления политиками в минимальном конфиге не стоит.
И наша задача найти его и установить.
Поищем
yum provides /usr/sbin/semanage Загружены модули: fastestmirror Loading mirror speeds from cached hostfile * Webmin: webmin.mirror.somersettechsolutions.co.uk * base: mirror.corbina.net * extras: mirror.corbina.net * updates: ftp.funet.fi policycoreutils-python-2.2.5-11.el7.x86_64 : SELinux policy core python utilities Источник: base Совпадения с: Имя файла : /usr/sbin/semanage policycoreutils-python-2.2.5-11.el7_0.1.x86_64 : SELinux policy core python utilities Источник: updates Совпадения с: Имя файла : /usr/sbin/semanage
Поставим
yum install policycoreutils-python
Теперь можно пользоваться semanage
удачи
man semanage
Задача перевесить порт ssh еще и на 5225
ищем как зовется в sshd
#semanage port -l | grep ssh ssh_port_t tcp 22
Оказалось все просто
Разрешаем ssh наш спецефичный порт
# semanage port -a -t ssh_port_t -p tcp 5225
Проверяем
#semanage port -l | grep ssh ssh_port_t tcp 22, 5225
Все ок
Теперь перезапустить sshd и проверить как оно работается.
systemctl restart sshd
Хорошо оно работается, осталось закрыть 22 для мира, оставить только для работы на всякий.
/etc/sysconfig/iptables
# SSH access from world -A LocInput -p tcp -m tcp --dport 5225 -j ACCEPT -A LocOutput -p tcp -m state -m tcp --sport 5225 --state ESTABLISHED -j ACCEPT # SSH access from 89.186.251.5 - 85.113.43.250 -A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 22 -j ACCEPT -A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 22 --state ESTABLISHED -j ACCEPT
systemctl restart iptables
Хоть это и непоследовательно звучит, но сначала мы настроим webmin по ssl
Официальная инструкция тут
http://www.webmin.com/ssl.html
Панель webmin - webmin-configuration-ssl
openSSL у меня строял изначально
Есть замечательная ссылка, которая ставим нам необходимые пакеты. (perl SSLeay)
Ее вывод
nstalling Perl module Net::SSLeay from package perl-Net-SSLeay .. Installing package(s) with command yum -y install perl-Net-SSLeay .. Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * Webmin: webmin.mirror.somersettechsolutions.co.uk * base: mirror.awanti.com * extras: mirror.corbina.net * updates: mirror.corbina.net Resolving Dependencies --> Running transaction check ---> Package perl-Net-SSLeay.x86_64 0:1.55-3.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: perl-Net-SSLeay x86_64 1.55-3.el7 base 285 k Transaction Summary ================================================================================ Install 1 Package Total download size: 285 k Installed size: 990 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : perl-Net-SSLeay-1.55-3.el7.x86_64 1/1 Verifying : perl-Net-SSLeay-1.55-3.el7.x86_64 1/1 Installed: Complete! .. install complete.
Получение SSL сертификата на домен
Это отдельная и большая тема.
Оформление может затянуться.
Самоподписанный сертификат
Будем считать, что у нас нету никаких валидных ssl, а подключение будем пользоваться только мы и без финансовых операций.
Поэтому создаем и подписываем сертификат самопально.
webmin-webmin-configuration-ssl-self-sgned- Certificate
Заполняем поля и создаем сертификат
Server name magnes.su Email address esa@magnes.su Department IT Magnes Organization MAGNES ORG City or locality Samara State 443 Country code RU RSA key size Default (2048) bits Days before expiry 1825
Ключ будет жить тут
/etc/webmin/miniserv.pem
После чего нам покажут сам ключ
Successfully generated the following SSL key :
-----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDDz1cwmL/YLTOB ... ... ... ... Se6QazAcolNij1AbxJxNQppshbskwRijke9Hg6RnysHPUflsxMG8S629iTKY2hib TkfPQAgld/pe7+sBa+RpjnGjTGkNCyxO3xya8dIwZHv3Y1/efmgykZnOU91E81J3 zwAdpsCrW7qtnjMfnGy2vFeDcw== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- LnN1MRwwGgYJKoZIhvcNAQkBFg1lc2FAbWFnbmVzLnN1MB4XDTE1MDIxMDA5NTMw MVoXDTIwMDIwOTA5NTMwMVowgYcxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDAM0NDMx ... ... ... ... AMKS535b78wWDp9fvrV9uXZO1fIDND4XAFGo7Ole8Ua5VeZfhBGL -----END CERTIFICATE-----
На первой вкладке включаем
Enable SSL?
И, собственно, пользуемся.
При первом заходе ругнется на самоподписанный сертификат, но мы его примем и все будет хорошо
Webmin Two-Factor Authentication + Google
Не настроено
Усложняем себе жизнь и прикручиваем двухфакторную авторизацию к webmin'у и вообще к shell'у.
т.е. теперь мы будем входить в систему без пароля, но с пинами.
Заходим в webmin-configuration - Two-factor-Auth
Выбираем google
Выпадает ошибка, мол нет перла
Failed to save two-factor authentication : The Perl module Authen::OATH needed for two-factor authentication is not installed. Use the Perl Modules page in Webmin to install it.
Переходим по ссылке и ставим необходимые модули
Installing Perl module Authen::OATH from package perl(Authen::OATH) .. Installing package(s) with command yum -y install perl(Authen::OATH) .. Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * Webmin: webmin.mirror.somersettechsolutions.co.uk * base: mirror.awanti.com * extras: mirror.corbina.net * updates: mirror.corbina.net No package perl(Authen::OATH) available. Error: Nothing to do .. install failed! Some modules failed to install from packages, trying installation from source instead.. Downloading http://www.cpan.org/modules/02packages.details.txt.gz (1.56 MB) .. Received 1024 bytes (0 %) Received 160 kB (10 %) Received 319 kB (20 %) Received 478 kB (30 %) Received 637 kB (40 %) Received 797 kB (50 %) Received 956 kB (60 %) Received 1.09 MB (70 %) Received 1.24 MB (80 %) Received 1.40 MB (90 %) Received 1.56 MB (100 %) .. download complete. Downloading http://www.cpan.org/authors/id/S/SI/SIFUKURT/Authen-OATH-v1.0.0.tar.gz (5.02 kB) .. Received 1024 bytes (19 %) Received 2 kB (39 %) Received 3 kB (59 %) Received 4 kB (79 %) Received 5 kB (99 %) Received 5.02 kB (100 %) .. download complete.
Нехорошо, webmin не нашел в репах centos perl(Authen::OATH) и скачал исходник.
Собирать из исходников на боевом сервере не совмем корректно.
Попробуем подключить доверенные репы для этого пакета
Отменил такой подход, возможно позднее буду рассматривать его
Установка nginx
Конвертер apache
https://winginx.com/ru/htaccess
Официальный ман
http://wiki.nginx.org/Install
https://www.nginx.com/resources/wiki/start/topics/tutorials/install/
Создаем /etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
В моем случае так:
baseurl=http://nginx.org/packages/centos/7/x86_64/
Проверим
yum repolist
Ставим
yum install nginx
Запускаем
service nginx start
Вписываем в автозагрузку
systemctl enable nginx
либо так
chkconfig --levels 235 nginx on
Установка MySQL (epel, remi)
Подключаем необходимые репозитории с актуальными версиями пакетов
Epel (Extra Packages for Enterprise Linux):
yum install epel-release
REMI
Содержит самые последние версии php и mysql. Зависит от Epel.
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm sudo rpm -Uvh remi-release-7*.rpm
Проверить все
yum repolist
Если нет - то ручками залезть в файл /etc/yum.repos.d/remi.repo
и проверить
enabled=1
Ставим MariaDB
etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos6-amd64 >!!! gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
yum install MariaDB-server MariaDB-client
/etc/init.d/mysql start
Изменить модуль в webmin
So click module configuration and change: Command to start MySQL server: /etc/init.d/mysql start Command to stop MySQL server: /etc/init.d/mysql stop MySQL configuration file: /var/lib/mysql/my.cnf
Запустить скрипт безопасности - задание пароля для баз, убрать гостя и тп
sudo mysql_secure_installation
Ставим MySQL
yum install mysql-server
И оно не находится. А все потому что в 7 версии перешли на более свободную MariaDB - она форк MySQL, свободный от претензий Oracle.
Но мне надо именно MySQL, поэтому поехали:
Качаем мета-пакет wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm ставим rpm -ivh mysql-community-release-el7-5.noarch.rpm
Появился новый репозиторий
/etc/yum.repos.d/mysql-community.repo
[mysql-connectors-community] name=MySQL Connectors Community baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql-tools-community] name=MySQL Tools Community baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.5 [mysql55-community] name=MySQL 5.5 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.6 [mysql56-community] name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Note: MySQL 5.7 is currently in development. For use at your own risk. # Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/ [mysql57-community-dmr] name=MySQL 5.7 Community Server Development Milestone Release baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Все, теперь можно ставить как обычно
yum install mysql-server
Тестить так тестить
Снес MySQL - поставим марию. Снес не все, а community client & server
yum install mariadb mariadb-server net-tools mariadb-client
Пропишем сервис в автозагрузку и запустим
systemctl enable mariadb.service systemctl start mariadb.service
Ставим PHP
Нас интересует версия, что работает с nginx напрямую - PHP FastCGI Process Manager
Ставим всякие нужные штуки толпой
yum install php-fpm php-cli php-mysql php-gd php-mbstring php-pdo php-common
Тоже полезные, но не ставим, а помним про них
php-ldap php-odbc php-pecl-memcache php-pear php-xml php-xmlrpc imagemagic
Затем создадим ссылки на автозагрузку для php-fpm и запустим:
systemctl enable php-fpm.service systemctl start php-fpm.service
или так
chkconfig php-fpm on
Установим кешер
install -y php-pecl-apc
PHP-FPM является процессом (со скриптом init /etc/init.d/php-fpm), который запускает FastCGI сервер на порте 9000.
Сессии PHP
После обновления бывает слетают права на сессии. Лечиться так
chown nginx:nginx /var/lib/php/wsdlcache chown nginx:nginx /var/lib/php/session
Конфигурация nginx
/etc/nginx/nginx.conf
# в два раза больше чем ядер worker_processes 4; # можно побольше, но без фанатизма keepalive_timeout 65;
Базовая настройка хоста
/etc/nginx/conf.d/default.conf
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/html/magnes.su/main; #root /var/www/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /var/www/html/magnes.su/main; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock; try_files $uri =404; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
Через unix-socket
/etc/php-fpm.d/www.conf
#listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php5-fpm.sock
Затем перезагрузим PHP-FPM:
systemctl restart php-fpm.service
и перезапускаем nginx
systemctl restart nginx.service
Ставим Seafile
http://manual.seafile.com/deploy/using_mysql.html
4.4.1 64bit (beta)
Через php=fpm не пускал в nginx
Ошибка в логе seahub.error.log
2015/10/06 21:54:29 [crit] 11261#0: *13 connect() to 127.0.0.1:8000 failed (13: Permission denied) while connecting to upstream, client: 5.164.175.22, server: clouds.magnes.su, request: "GET /56756756 HTTP/1.1", upstream: "fastcgi://127.0.0.1:8000", host: "clouds.magnes.su"
Лечил так
I checked for errors in the SELinux logs:
sudo cat /var/log/audit/audit.log | grep nginx | grep denied
And found that running the following commands fixed my issue:
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
Вышло так
mynginx.te module mynginx 1.0; require { type httpd_t; type soundd_port_t; class tcp_socket name_connect; } #============= httpd_t ============== #!!!! This avc can be allowed using the boolean 'httpd_can_network_connect' allow httpd_t soundd_port_t:tcp_socket name_connect;
и открываем дырку в SELinux для порта 8082
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx2 sudo semodule -i mynginx2.pp module mynginx2 1.0; require { type httpd_t; type us_cli_port_t; class tcp_socket name_connect; } #============= httpd_t ============== #!!!! This avc can be allowed using the boolean 'httpd_can_network_connect' allow httpd_t us_cli_port_t:tcp_socket name_connect;
Клиент для дома
http://download.opensuse.org/repositories/Cloud:/Seafile/openSUSE_13.2/
https://groups.google.com/forum/#!topic/seafile/uKEt6l9OafU
Помогло
Далее
Разобраться с
#-A LocInput -p tcp -m tcp -s 85.113.43.250 --dport 10000 -j ACCEPT #-A LocOutput -p tcp -m state -m tcp -d 85.113.43.250 --sport 10000 --state NEW,ESTABLISHED -j ACCEPT и -A LocOutput -p tcp -m multiport -m tcp -s 109.120.135.58 --sport 1024: -j ACCEPT --dports 80,443 -A LocInput -p tcp -m multiport -m state -m tcp -d 109.120.135.58 --dport 1024: --state ESTABLISHED -j ACCEPT --sports 80,443
Пускает всех в вебмин
- Тюнинг ssh, вход по ключу, удаленные X
- Туннелирование
- Настройка vpn
- Установка софта для веб-сервера. Потом возвращаемся на этап тюнинга всяких служб
- Минимальная работоспособность.
-+–
Упорядочить статью по времени.
Еще не ставил nginx epel и тд
imagem
Мысли
- Отдельный пользователь для ssh
- Монтирование папок под другим с fuse (из мега статьи по ssh)
webmin https- TF Google надо?
- Синхронизация времени обязательно
Перед всеми изменениями открыть webmin
Страницы в догонку
http://help.ubuntu.ru/wiki/ssh http://vds-admin.ru/ssh/bezopasnyi-setevoi-protokol-ssh-nastroika-ssh-klienta-ispolzovanie https://ru.intel.com/business/community/?automodule=blog&blogid=10662&showentry=4260 http://habrahabr.ru/post/186376/ http://blogosys.ru/2011/12/dvuhfaktornaya-avtorizatsiya-na-osnove-google-authenticator/ http://www.8host.com/blog/dvuxfaktornaya-autentifikaciya-ssh/ http://mhs.in.ua/articles/nastrojka-dvuhjetapnoj-autentifikacii-ssh-na-centos-5 http://rascal.su/blog/2012/12/22/%D0%B4%D0%B2%D1%83%D1%85%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-ssh/ http://www.linuxspace.org/archives/5034 - дельная http://www.tecmint.com/ssh-two-factor-authentication/ http://www.kodkast.com/linux-package-installation-steps?pkg=perl-Authen-OATH.noarch http://kiteplans.info/2012/04/06/two-factor-ssh-virtualmin-authentication-google-authenticator/ https://www.virtualmin.com/node/30597 http://spod.cx/blog/two-factor-ssh-auth-with-pam_oath-google-authenticator.shtml http://blog.nowherelan.com/2014/01/04/two-step-authentication-for-ssh-on-centos-6-using-google-authenticator/ http://www.cyberciti.biz/open-source/howto-protect-linux-ssh-login-with-google-authenticator/ http://wiki.vps.net/vps-net-features/cloud-servers/two-factor-authentication-for-ssh-in-centos-6-using-google-authenticator/ http://www.linux.com/community/blogs/133-general-linux/783135-securing-ssh-with-two-factor-authentication-using-google-authenticator http://www.tecmint.com/ssh-two-factor-authentication/ https://monotok.org/webmin-google-authenticator/ http://stackoverflow.com/questions/22676508/how-to-disable-two-factor-authentication-in-webmin Мега штука по ssh http://habrahabr.ru/post/122445/ http://mydebianblog.blogspot.ru/2006/12/ssh.html http://myscrapbook.narod.ru/sb/ScrapbookLinux/data/20091121195240/index.html http://www.komtet.ru/lib/tech/vhod-po-ssh-bez-parolya http://www.skleroznik.in.ua/2013/06/17/ssh-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B1%D0%B5%D0%B7-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F-%D0%B8%D0%BB%D0%B8-%D0%BF%D0%BE-%D0%BA%D0%BB%D1%8E%D1%87%D1%83/ https://keepout.cn/ru/%D0%98%D0%A2/Linux/SSH_%D0%B1%D0%B5%D0%B7_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F http://pm4u.narod.ru/ssh.htm http://matt.might.net/articles/ssh-hacks/ Сертификат http://habrahabr.ru/post/127643/ http://habrahabr.ru/post/181320/ VPN http://pm4u.narod.ru/vpn.htm
Запретить использовать пароли PasswordAuthentication no + запретить входить по паролю для рута semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
Приводим конфиг к такому виду
Protocol 2 PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding yes GatewayPorts no AllowTcpForwarding yes LoginGraceTime 50 KeepAlive yes Port 5225 ListenAddress 0.0.0.0:5225
Обновление пакетов
yum list updates
yum update
–
Добавить spoiler в вики
php-fpm на сокете
Problem:
PHP-FPM support for nginx will not start when attempted in Tools & Settings > Services Management
Check error log:
#tail /var/log/php-fpm/error.log
ERROR: unable to bind listening socket for address '/var/www/vhosts/system/domain.tld/php-fpm.sock': Permission denied (13)
Possible problem:
SELinux may be preventing it. To test this do:
#setenforce 0
Now try and start PHP-FPM support again in Tools & Settings > Services Management
If that now starts you know what the problem is. Go to «Fix» below
If it didnt work, you have a different issue. Turn SELinux back on while you figure it out:
#setenforce 1
Fix:
The following worked for me but i know very little about SELinux - corrections welcome:
## Turn SELinux to permissive
# setenforce 0
## In Plesk panel start PHP-FPM support in Tools & Settings > Services Management
# grep php-fpm /var/log/audit/audit.log | audit2allow -m php-fpmlocal > php-fpm.te
## You can vi/cat/nano php-fpm.te and see the custom policy that will be created. When done, execute it with:
# grep php-fpm /var/log/audit/audit.log | audit2allow -M php-fpmlocal
## now load the policy
# semodule -i php-fpmlocal.pp
## Turn SElinux back on
#setenforce 1
## In Plesk panel start PHP-FPM support in Tools & Settings > Services Management
## Still not working. Sorry - good luck finding the problem.
Reference page
http://wiki.centos.org/HowTos/SELinux
Настройка SELinux для Apache в CentOS
Май 7, 2016 admin
SELinux это модуль ядра Linux, который предоставляет дополнительный механизм определения прав доступа к папкам и файлам. Иногда он создает немалые проблемы при расположении файлов сайта и логов в нестандартных папках.
Особым успехом эти грабли пользуются у новоиспеченных админов и разработчиков, которые не понимают, почему сайт возвращает 404-ю ошибку, при том, что пользователь apache или www-data является владельцем папки с файлами сайта.
Самым популярным способом проблемы является отключение selinux, что не совсем правильно. Даже админы из второй линии поддержки популярных хостингов пользуются этим способом решения проблемы, что, как минимум, странно.
Дело в том, что selinux определяет не столько права доступа к файлам, сколько что и какому демону можно делать (читать файлы, редактировать файлы). Очень часто сервера ломают используя уязвимости в CMS сайтов. При этом злоумышленник получает доступ к папкам и файлам, к которым имеет доступ web-сервер.
Используя selinux, можно запускать web-сервер хоть от имени пользователя root, но при этом быть спокойным.
Проверить состояние selinux в CentOS/RedHat можно с помощью следующей команды:
getenforce
Для управления правилами нам понадобятся дополнительные утилиты:
yum install -y policycoreutils-python setroubleshooting
Selinux по структуре конфига напоминает iptables. У него имеются свои таблицы доступа к файла. Для того что бы selinux разрешил процессу apache запись в определенный каталог - нужно этот каталог включить в «таблицу» httpd_sys_rw_content_t, папку с логами нужно добавить в «httpd_log_t» и т.д.
Следующие команды приводятся как пример или шпаргалка. В этом случае папки сайтов лежат в /home/webapps.
Разрешаем apache читать файлы в каталоге и подкаталогах /home/webapps (httpd_sys_content_t):
semanage fcontext -a -t httpd_sys_content_t "/home/webapps(/.*)?"
Разрешаем apache писать логи нестандартном месте (httpd_log_t):
semanage fcontext -a -t httpd_log_t "/home/webapps/logs(/.*)?"
Отдельная директива в selinux отведена для mod_cache. Если Вашему серверу нужно использовать произвольное хранилище для кэша - добавьте его в httpd_cache_t:
semanage fcontext -a -t httpd_cache_t "/home/webapps/cache(/.*)?"
Для того что бы разрешить запись - добавте путь к папке в httpd_sys_rw_content_t:
semanage fcontext -a -t httpd_sys_rw_content_t "/home/webapps/*/public_html/uploads(/.*)?"
Для применения изменений выполните следующую команду:
restorecon -Rv /home/webapps
На этом этапе apache может работать с каталогами всех сайтов, которые буду созданы в /home/webapps/ и писать файлы в каталоги uploads каждого сайта.
Список использованой литературы:
Включаем отправку почты с php
sendmail: fatal: chdir /var/spool/postfix: Permission denied
showing up in /var/log/httpd/error_log. This was caused by the apache user not having SELinux permission to send email. This could also occur on other distributions which use SELinux (particularly Fedora and CentOS, but possibly others as well), if it is set to «Enforcing».
You can check this by using
Code: [Select]
/usr/sbin/getsebool httpd_can_sendmail
which will report
Code: [Select]
httpd_can_sendmail –> {on|off}
and if it is off, you can turn it on using
Code: [Select]
sudo setsebool -P httpd_can_sendmail 1
Настройка ssl от Let’s Encrypt
Шел по статье
https://habrahabr.ru/post/301558/
и оф дока
https://certbot.eff.org/#centosrhel6-nginx
В CentOS7 - можно из пакетов, но в шестой пришлось качать
sudo yum install epel-release sudo yum install certbot
Установка
Проще так
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto
Получение сертификата
Далее следует команда непосредственно получения сертификата:
# ./certbot-auto certonly –webroot –agree-tos –email mypost@my-domain.ru -w /home/bitrix/www/ -d my-domain.ru -d www.my-domain.ru
–webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ;
–agree-tos — соглашаемся с лицензионным соглашением;
–email mypost@my-domain.ru — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта;
-w /home/bitrix/www — указываем корневую директорию сайта;
-d my-domain.ru — наш домен. так же можно указывать и поддомены, например -d site.my-domain.ru.
После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём.
Если всё завершится успешно, вы увидите сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/my-domain.ru/fullchain.pem. Your cert will expire on 2016-08-21. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to mypost@my-domain.ru. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Сертификаты установлены, осталось только указать nginx'у, где они лежат.
Настройка
Открываем конфигурационный файл ssl.conf:
# vim /etc/nginx/bx/conf/ssl.conf
Если у вас уже были установлены сертификаты, удаляем или комментируем строки с ними и вставляем новые:
ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem;
Не забываем включить ssl, если этого не было сделано ранее:
ssl on; keepalive_timeout 70; keepalive_requests 150; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
После этого перезапускаем nginx:
# service nginx reload
Если он не выдал никаких ошибок, значит всё в порядке. Можно зайти на сайт и посмотреть что получилось.
Обновление
Сертификат выдается на 90 дней, так что после этого срока нужно будет его обновить. Делается это командой:
# certbot-auto renew
Обновляем
/var/local/
wget https://dl.eff.org/certbot-auto
просто вот это
./certbot-auto renew service nginx restart
а так было раньше
./certbot-auto certonly --webroot --agree-tos --email esa@magnes.su -w /var/www//html/zakaz.cloud/samart -d zakaz.samart.ru service nginx restart chmod a+x certbot-auto
Для тех, где бот не работает - сначала сделаем сертификат без проверок well-know, и вставим его после
./certbot-auto certonly --webroot --agree-tos --email esa@magnes.su -w /var/www//html/zakaz.cloud/www -d zakaz.cloud ./certbot-auto --nginx Заказать wildcard ./certbot-auto -d 3book.ru -d *.3book.ru --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly В консоле выведет инфу, которую надо добавить в dns txt запись Меняем на селектеле в dns и проверяем, чтоб она обновилась dig -t txt _acme-challenge.3book.ru Запускаем ./certbot-auto на этот домен еще раз - готово, теперь осталось перезапустить nginx Тоже на три месяца =(
Инструменты страницы
