Правило iptables для входящих с определенного ip и порта

406
MajAfy

У меня есть 2 сервера, один для веб-запросов (я назвал его web), а другой для базы данных (я назвал его db). Оба сервера являются CentOS 7.

Я хочу сделать эти правила в iptables:

  • все запросы к dbсерверу должны быть заблокированы (все IP на всех портах);
  • просто webserver ( y.y.y.y) может обращаться к dbсерверу по портам 5432и 6379;
  • просто статический ip ( x.x.x.x) может получить доступ к порту 22.

Поэтому я написал эти правила, но я не уверен, что они верны

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -p tcp --dport 5432 -s y.y.y.y -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -s y.y.y.y -j ACCEPT iptables -A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT 
0

1 ответ на вопрос

0
Mr Shunz

Хотя эти правила выглядят правильно (при условии, что они идут на dbсервер), вы упускаете важное правило:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

Без этого правила, и по умолчанию INPUTполитики, как DROP, ваш dbсам сервер не сможет получить доступ к сети, например, для установки обновлений или ping/ tracerouteпроверки достижимости и т.д.

Таким образом, полный iptablesнабор правил должен быть

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 5432 -s y.y.y.y -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -s y.y.y.y -j ACCEPT iptables -A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT 

Пожалуйста, не делайте iptables -P INPUT DROPчерез, так sshкак это заблокирует вас от вашего сервера.

Спасибо, так что я должен использовать мои правила плюс ваше правило? MajAfy 6 лет назад 0
@MajAfy Я обновил свой ответ с полным набором правил. Mr Shunz 6 лет назад 0
Спасибо буду проверять MajAfy 6 лет назад 0

Похожие вопросы