Я думаю о настройке скромного веб-сервера с использованием старого оборудования и Ubuntu 12.04 или Debian 6. Я знаю, что, выставляя машину в моей локальной сети напоказ внешнему миру, я становлюсь уязвимым для нарушений безопасности и атак. Учитывая это, и поскольку у меня почти нет опыта в защите компьютеров с использованием Linux, я хотел бы попросить несколько рекомендаций о том, что мне следует сделать для защиты этого веб-сервера, особенно с учетом того, что в моей домашней локальной сети есть и другие компьютеры, которые содержат конфиденциальную информацию (о счетах домашнего банка и т. д.). Большое спасибо.
решение1
Во-первых, вы, вероятно, знаете об этом, но если у вас динамический IP, вам понадобится динамический DNS, такой как DynDNS илиDNSexit.
Что касается безопасности, я думаю, что использование iptables
(или графического интерфейса брандмауэра, напримерПоджигатель(если предпочитаете) открытия только порта 80 для входящих подключений достаточно для домашнего сервера, если вам не нужно открывать порт ssh (порт 22) или ftp (21) и вы не будете устанавливать почтовый сервер.
Если на вашем сайте есть страница входа или вам нужно открыть ssh, ftp или smtp, я бы рекомендовал по крайней мере установить что-то вродеfail2banдля блокировки IP-адресов, которые безуспешно пытаются подключиться, чтобы они не пытались вечно.
Важно отметить, что вам необходимо просматривать свои журналы, чтобы следить за ними и легко устанавливатьlogwatch
(должны быть в ваших репозиториях по умолчанию в Debian и Ubuntu), чтобы оповещать вас по почте ежедневно или еженедельно. Вы быстро научитесь находить, что не так, читая их часто.
Если вам необходимо подключиться извне для администрирования сервера, используйте VPN и в любом случае всегда обновляйте ОС!
Обновление: для SSH и sftp, я думаю, fail2ban + только ключи ssh (или ключи + пароль, но не только пароль) — это необходимый минимум (и не разрешайте доступ root).
Если машины, которые вы используете для подключения, имеют фиксированный IP-адрес, откройте брандмауэр только для этих входящих IP-адресов.
Зашифрованный VPN (я используюопенвпн) также помогает защитить ваш доступ.
Посмотрите здесь для«быстрый» официальный урок, через 15-30 минут у вас будет рабочий VPN сервер для одного клиента - один сервер. Для лучшей настройкис аутентификацией клиентского сертификата и CA(ваш бесплатный собственный CA) вам придется потратить еще несколько минут :D
Если вашим сайтам требуется MySQL или по какой-либо другой причине вам нужно администрировать MySQL (или другую базу данных) из Интернета, если вы не используете VPN, используйте туннель ssh, чтобы подключиться к локальному порту на вашем компьютере, а туннель зашифрует соединение с сервером, чтобы вам не нужно было открывать порт базы данных, взгляните на аргументы -L
и -D
в man ssh
.
Я бы не стал устанавливать phpmyadmin для прослушивания на публичном IP, так как это откроет вашу базу данных для всего мира. Если вам нужно, я могу выложить пример скрипта для туннеля здесь.