Сегодня, когда я в очередной раз просматривал stackoverflow в поисках готового рецепта для iptables, который бы делал то, что мне нужно, а не что-то другое (к сожалению, я так и не осилил iptables настолько, чтобы самостоятельно составлять правила, и не так часто им пользуюсь, чтобы просто запомнить их), мне попалось упоминание о UFW — Uncomplicated Firewall. Сразу отмечу, что статья предназначена скорее не для суровых администраторов, а для обычных веб-разработчиков, которым нужно закрыть неиспользуемые порты на VPS-сервере, который им самим и приходится настраивать.
Этот скрипт на Python, разработанный в Canonical, является надстройкой над iptables, позволяющей быстро задавать нужные правила из командной строки. Замечу, что на Хабре UFW уже упоминали, но во-первых, вскользь, а во-вторых, без упоминания важного момента, о котором я напишу ниже.
Использование на вашем сервере с сайтами
Предполагается, что у вас Ubuntu не старше 12.04 LTS или Debian Wheezy.
Устанавливаем:
sudo apt-get install usw
В первую очередь, перед закрытием лишних портов, открываем 22-й порт для ssh, иначе соединение с сервером у нас сразу же закроется и заново подключиться к нему мы не сможем:
sudo ufw allow ssh/tcp
Включаем фаервол (не открытые специально порты при этом закрываются для доступа извне):
sudo ufw enable
Теперь можно открыть порты для веб-сервера, например:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Важная деталь
Если оставить это, как есть, после перезагрузки правила исчезнут, т.к. автоматически они не сохраняются. Поэтому, чтобы сохранить их, выполним
sudo invoke-rc.d iptables-persistent save
Удивительно, но во всех туториалах к UFW эту деталь опускают, так что многие забывают это сделать, в результате после ближайшего рестарта их система оказывается незащищенной.
Теперь можно спокойно спать по ночам, т.к. никто не будет пытаться подключиться к MySQL на вашем сервере или обращаться напрямую, без проксирования nginx-ом, к вашему приложению на node.js.
UFW покрывает и другие популярные юзкейсы фаервола, например, ограничение скорости соединений, но это я не вижу смысла описывать, т.к. в man-странице все кратко и понятно написано.
ссылка на оригинал статьи http://habrahabr.ru/post/201764/
Добавить комментарий