이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12603|회답: 2

[리눅스] 제 리눅스가 SYN 공격으로부터 어떻게 보호하는지 확인해 보세요

[링크 복사]
게시됨 2015. 12. 12. 오전 12:04:58 | | | |

오늘 아침 회사에 도착했을 때, 공식 웹사이트에 로그인하고 서버에 접속해 공식 웹사이트 접근 상태를 확인할 때 꽤 느린 느낌이 들었습니다:

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

     172개 설립

     59 연결

    589 SYN_RECV

     15 스트림

SYN이 실제로 매우 높으니, 해당 IP에서 보내는 SYN을 계속 추적해 보세요:

[root@tweb ~]# 넷스타트 -안 | 그렙 신 | awk '{print $5}' | awk -F: '{print $1}' | 정렬 | Uniq -c | 정렬 -nr | 더 보기

570 X.X.X.X   

(IP는 작성된 것이 아니라 산둥 자오좡 유니콤의 IP입니다) 하지만 이 IP가 너무 많은 SYN 요청 연결을 보냈고, 우리 웹 서버의 동시성이 높지 않아 일반 사용자 요청이 불가능하고 페이지도 열리지 않습니다. 하드웨어 방화벽은 그룹 IT 부서에서 관리하기 때문에 권한이 없어서 로컬 서버에서 SYN 공격을 부분적으로 완화할 수 있는 조치만 취할 수 있습니다.

우선, SYN의 공격 원리에 대해 이야기해 봅시다:

TCP/IP 프로토콜에서는 3자 핸드셰이크를 통해 연결을 구축함으로써 신뢰할 수 있는 연결 서비스를 제공합니다.

첫 번째 핸드셰이크: 연결을 설정할 때 클라이언트는 syn 패킷(syn=j)을 서버에 보내고 SYN_SEND 상태에 들어가 서버의 확인을 기다립니다.

두 번째 핸드셰이크: 서버가 SYN 패킷을 받으면 고객의 SYN (ack=j+1)를 확인하고, SYN 패킷(syn=k)도 보내야 하며, 이 경우 서버는 SYN_RECV 상태에 들어갑니다.

세 번째 핸드셰이크: 클라이언트는 서버로부터 SYN+ACK 패킷을 받고 확인 패킷 ACK (ack=k+1)를 서버에 전송합니다. 세 번의 핸드셰이크 후, 클라이언트와 서버가 데이터를 전송하기 시작합니다.


사용자가 두 번째 악수만 하고 서버에 응답하지 않는 경우, 서버는 사용자의 확인을 계속 기다립니다. 그래서 SYN 연결에서 직접 다음과 같은 변경을 합니다:

리눅스에서 기본 SYN 구성을 확인하세요:

[root@web ~]# sysctl -a | 그렙 _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는 SYN 큐의 길이이며, SYN 큐 길이를 늘리면 연결을 기다리는 네트워크 연결을 더 많이 수용할 수 있습니다. tcp_syncookies SYN 쿠키 기능을 켜는 스위치로, 부분적인 SYN 공격을 방지할 수 있습니다. tcp_synack_retries와 tcp_syn_retries는 SYN의 재시도 연결 수를 정의하고, 기본 매개변수를 줄여 SYN 연결 수를 최대한 제어합니다.

다음은 제가 수정한 매개변수이며, 서버 상황에 따라 조정할 수 있습니다:

[root@web ~]# 더 많은 /etc/rc.d/rc.local

#!/빈/쉬

# 이 scrip{filter}t는 다른 모든 init scrip{filter}ts 이후에 실행됩니다.

# 네가 안 하면 네 초기화 자료를 여기 넣어도 돼

# Sys V 스타일의 완전 이니트 스타일을 하고 싶어.

터치 /var/lock/subsys/local

유리미트 -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

서버를 재시작하지 않고 즉시 설정이 적용되도록 하려면 다음을 수행할 수 있습니다

#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

일부 사람들은 SYN 공격을 막기 위해 접근 제어 목록을 사용하는데, 이는 SYN 공격을 어느 정도 느리게 만듭니다:

신 플러드 공격

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

--1/s 제한: 동시 동시성 횟수를 초당 1회로 제한합니다

안티포트 스캐닝

# iptables -A FORWARD -p tcp --tcp-tcp-flags SYN, ACK, FIN,RST RST -M LIMIT --LIMIT 1/s -j ACCEPT

죽음의 신호

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

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

보기 위해, #iptables -L

ACCEPT tcp -- 어디서나 TCP 플래그: FIN, SYN, RST, ACK/SYN 한도: 평균 1/초 버스트 5

ACCEPT TCP -- 어디서나 TCP 플래그: FIN, SYN, RST, ACK/RST 제한: 평균 1/초 버스트 5

ACCEPT icmp -- 어디서나 ICMP 에코 요청 한도: 평균 1/초 버스트 5

Syn 연결을 다시 확인해 보세요:

[root@web ~]# 넷스타트 -안 | 그렙 신 | awk '{print $5}' | awk -F: '{print $1}' | 정렬 | Uniq -c | 정렬 -nr | 더 보기

     20 10.92.10.220

      1 125.43.36.199

분명히 SYN 연결 수가 줄어들었습니다.






이전의:"죄송합니다, 진짜 앱을 설치하지 않으셨습니다. 설치 프로그램이 계속 디스쿠즈를 실행할 수 없습니다" 우회 방법
다음:SC Create는 Windows 시스템 서비스를 생성합니다
게시됨 2015. 12. 13. 오전 10:53:04 |
정말 강렬한 표정이네요
게시됨 2015. 12. 14. 오후 3:55:43 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com