Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 12603|Resposta: 2

[Linux] Veja como meu Linux protege contra ataques SYN

[Copiar link]
Publicado em 12/12/2015 00:04:58 | | | |

Quando cheguei à empresa esta manhã, me senti bastante lento ao fazer login no site oficial da empresa, acessar o servidor para verificar o status de acesso do site oficial:

[root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

     172 FUNDADOS

     59 CONECTADOS

    589 SYN_RECV

     15 STREAM

O SYN é realmente tão alto, continue rastreando o SYN enviado por esses IPs:

[root@tweb ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{imprimir $1}' | Ordenar | uniq -c | ordenar -nr | Mais

570 x.x.x.x   

(O IP não é escrito, é um IP da Shandong Zaozhuang Unicom), mas esse IP enviou tantas conexões de requisição SYN, e a concorrência do nosso servidor web não é muito alta, então as solicitações normais dos usuários não podem ser correspondidas, nem a página pode ser aberta. Como o firewall de hardware é gerenciado pelo departamento de TI do grupo, não tenho autoridade, então só posso tomar algumas medidas no servidor local para mitigar parcialmente o ataque SYN.

Primeiramente, vamos falar sobre o princípio de ataque do SYN:

No protocolo TCP/IP, o protocolo TCP fornece serviços de conexão confiáveis usando um handshake de três vias para estabelecer uma conexão.

Primeiro aperto de mão: Ao estabelecer uma conexão, o cliente envia um pacote syn (syn=j) para o servidor e entra no estado SYN_SEND, aguardando a confirmação do servidor.

O segundo aperto de mão: Quando o servidor recebe o pacote SYN, ele deve confirmar o SYN do cliente (ack=j+1) e também enviar um pacote SYN (syn=k), ou seja, pacote SYN+ACK, momento em que o servidor entra no estado SYN_RECV.

Terceiro handshake: O cliente recebe o pacote SYN+ACK do servidor e envia o pacote de confirmação ACK (ack=k+1) para o servidor. Após três apertos de mão, o cliente e o servidor começam a transmitir dados.


Se o usuário iniciar uma solicitação de conexão com o servidor apenas para apertar a mão pela segunda vez e não responder ao servidor, o servidor continuará aguardando a confirmação do usuário. Portanto, fazemos as seguintes alterações diretamente da conexão SYN:

Verifique a configuração padrão do SYN no Linux:

[root@web ~]# sysctl -a | GREP _syn

net.ipv4.tcp_max_syn_backlog = 1024

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog é o comprimento da fila SYN, e aumentar o comprimento da fila SYN pode acomodar mais conexões de rede esperando para serem conectadas. tcp_syncookies é um interruptor para ativar a função de cookies SYN, que pode prevenir ataques parciais SYN. tcp_synack_retries e tcp_syn_retries definem o número de conexões de retentativa para o SYN e reduzem os parâmetros padrão para controlar o número de conexões SYN o máximo possível.

A seguir estão os parâmetros que modifiquei, que podem ser modificados de acordo com a situação real do meu servidor:

[root@web ~]# mais /etc/rc.d/rc.local

#!/lixo/sh

# Este scrip{filter}t será executado *depois* de todos os outros scrip{filter}ts de init.

# Você pode colocar suas próprias coisas de inicialização aqui se não colocar

# quero fazer o estilo completo de init estilo Sys V.

touch /var/lock/subsys/local

ulimit -HSn 65535

/usr/local/apache2/bin/apachectl start

#####

sysCTL -w net.ipv4.tcp_max_syn_backlog=2048

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

Para que a configuração entre em vigor imediatamente sem reiniciar o servidor, ela pode ser realizada

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048

#sysctl -w net.ipv4.tcp_syncookies=1

#sysctl -w net.ipv4.tcp_synack_retries=3

#sysctl -w net.ipv4.tcp_syn_retries=3

Algumas pessoas gostam de usar listas de controle de acesso para prevenir ataques SYN, o que retarda os ataques SYN até certo ponto:

Ataque de inundação syn

#iptables -A ENTRADA -p tcp --syn -m limite --limite 1/s -j ACEITAR

--limite 1/s limita o número de concorrências syn a 1 vez por segundo

Varredura anti-porta

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -limite --limite 1/s -j ACEITAR

Sinal da morte

# iptables -A FORWARD -p icmp --tipo icmp-tipo echo-request -m limite --limite 1/s -j ACEITAR

#>iptables-save >/etc/sysconfig/iptables

Para ver, #iptables -L

ACEITAR tcp -- em qualquer lugar, qualquer lugar flags de tcp: FIN, SYN, RST, ACK/SYN limite: média de 1/segundo rajada 5

ACCEPT tcp -- em qualquer lugar, qualquer lugar flags de tcp: FIN, SYN, RST, ACK/RST limite: média de 1/segundo rajada 5

ACEITAR icmp -- em qualquer lugar, em qualquer lugar limite de requisição de eco ICMP: média de 1/segundo rajada 5

Verifique a conexão syn novamente:

[root@web ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{imprimir $1}' | Ordenar | uniq -c | ordenar -nr | Mais

     20 10.92.10.220

      1 125.43.36.199

Obviamente, o número de conexões SYN diminuiu.






Anterior:"Desculpe, você não está instalando um app genuíno, o instalador não pode continuar a fazer discuz" solução alternativa
Próximo:SC Create cria um serviço de sistema Windows
Publicado em 13/12/2015 10:53:04 |
Que visual poderoso
Publicado em 14/12/2015 15:55:43 |
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com