Здравствуйте. Я на форуме впервые и как раз зарегистрировался так как будут возникать вопросы, которые нахрапом не гуглятся.
Расстановка сил такая, что взяли недавно на одном хостинге dedicated сервер с Ubutnu 11.10 на борту. И хотя написали в заявке чтобы там была привычная связка mysql+apache+php, однако когда нам его всучили кроме SSH там в общем то ничего настроено не было.
Однако сразу скажу - в linux я не такой уж и новичок, даже можно сказать уверенный пользователь и неуверенный администратор, и связку apache2+mysql5+php5 настроил сам без особых сложностей.
Встал вопрос файреволла. Тут надо сделать лирическое отступление - до того мы на том же хостинге брали виртуальный выделенный сервер с CentOS на борту. Так вот видимо т.к. его ставили сразу из образа VM, то он был умеренно настроен. Потыкавшись там я уже знаю что самый встроенный файрволл - это iptables.
Что тут следует сказать про сам сервер - у него одна сетевая плата, которая сразу торчит в интернет, т.е. там роутером-мостом он не является, просто надо ограничить возможность сетевых атак на всё что потенциально может быть и не быть, а разрешить только для нужных вещей - SSH, HTTP и FTP ну и пинги.
Начав курить мануалы по iptables я понял что углубится можно не только с головой, а еще глубже, поэтому поскакав во основным вещам родил такое решение:
с вышеупомянутого сервера CentOS взял файл с настройками iptables, тот, который как оказалось суть формат iptables-restore и тупо перенес его на сервер с Ubuntu.
Выглядит он следующим образом:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-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 --dport 5353 -d 224.0.0.251 -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 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Вопрос 1:
Насколько я понимаю строчки с портами 5353 и 631 - лишние для моей задачи? Гугление говорит что второе это про принтеры, а первое - вообще что-то невразумительное. Так что собираюсь смело грохнуть - не зря ли?
Вопрос 2:
Описанная конфигурация действительно прикрывает всё что возможно, кроме icmp, веб, ссш и фтп? Нет ли каких "пробоин"? Не стоит ли запретить всё что связано с FORWARD?
Вопрос 3:
Если на CentOS данный файл хранился в определенном файле (где-то в чём то наподобие /etc/sysparams/), то на Ubuntu я не смог найти аналога. Хотя везде пишется что iptables хранит записи в трёх файлах (filter и сотоварищи), но если я задаю эти правила через ту же iptables-restore, то после перезагрузки iptables -L опять выдаёт девственно чистые таблицы.
Потыкавшись в инете я обошел это так - в /etc/rc.local прописал вызов iptables-restore /путь-к-этому-файлу. Вроде работает. Но нет ли более корректного или "native"-ного решения?