Как правильно настроить iptables с fail2ban на VPS (debian 7)?

Добрый день.

Как-то совсем не работал с iptables, теперь решил настроить все правильно и добавил еще и fail2ban.

На данный момент:
#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere


# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN


Перелопатил кучу статей и у каждого свои правила. По сути мне надо только:

Запретить весь внешний трафик, кроме ping, 22(ssh), 80 (http)

И сделать чтоб после перегрузки сервера правила сохранялись. Говорят что появились стандартные утилиты чтоб сохранять правила?

спасибо
  • Вопрос задан
  • 8210 просмотров
Решения вопроса 1
@evgenyks
Устанавливаем:
apt-get install iptables-persistent
Система предложит сохранить имеющиеся iptables-правила в файлы /etc/iptables/rules.v4 для IPv4 и /etc/iptables/rules.v6 для IPv6 - сохраняем.
Открываем файл /etc/iptables/rules.v4 очищаем и вставляем:
*filter

# входящие запрещены
:INPUT DROP [0:0]

# перенаправления запрещены
:FORWARD DROP [0:0]

# исходящие разрешены
:OUTPUT ACCEPT [0:0]

# локально разрешено всё
-A INPUT -i lo -j ACCEPT

# пинг и прочие icmp ответы сервера разрешены
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 3 -j ACCEPT

# разрешены только установленные соединения
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# некорретные/ненужные пакеты запрещены
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP

# открываем доступ к ssh-порту, 80 порту и какие вам нужно
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

COMMIT

Применяем правила:
iptables-restore < /etc/iptables/rules.v4
Перезапускаем fail2ban:
service fail2ban restart
Проверяем правила:
iptables -L
Извиняюсь где взял не помню!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы