Linux ETC

1. 서버의 날짜 정보 유출 막기

"tcp_timestamps" 값이 1로 설정 되어있는 경우, 외부에서 서버의 날짜 절보를 확인할 수 있게 됩니다. 서버의 날짜 저보는 서버의 해킹을 위한 정보로 이용되는 경우가 있습니다.


[root@jhp_test ~]# cat /proc/sys/net/ipv4/tcp_timestamps

1


따라서 이 파일의 설정 값을 0으로 두는 것으로 날짜정보 유출을 막을 수 있습니다. 기본 값이 1로 설정되어있으므로 확인해보고 필요할 경우 0으로 설정하는 것이 좀 더 안전할 수 있습니다.



2. SYN_FLOODING 공격 막기
SYN Flooding 공격은 TCP 세션의 연결시에 존재하는 취약성을 이용하는 공격입니다. 원리만 안다면 누구나 간단히 할 수 있는 일종의 DoS 공격이 되겠습니다. TCP 세션을 맺 위해서는 패킷을 보낼 서버와 받을 서버 간에 3-way hand shaking 등의 몇 단계 확인 작업을 거치게 되는데 여기에서 서버들은 ACK패킷이라고 하는 정보를 이용하여 송수신 준비 확인을 하게 됩니다. SYN 패킷을 받은 목적지 서버는 SYN와 ACK 패킷을 보낸 후에 소스서버에서 ACK 패킷을 보내기를 기다리게 됩니다. 이 때 계속적으로 기다리는 것이 아니라 백로그큐(backlog queue)가 허용하는 공간에 연결 정보를 보관하게 됩니다. 이러한 상태가 수도 없이 많이 쌓이게 되면 목적지 서버의 서비스가 정상적으로 이루어지지 않는 서비스 다운 상태가 될 수 있으며 이것이 SYN_Flooding 공격입니다. 이 공격을 차단하기 위해서 아래 예시와 같이 두 가지 설정이 필요합니다. 하나는 tcp_syscookies 값을 1로 설정하는 것, 다른 하나는 backlog queue의 사이즈를 늘려주는 것 입니다.

[root@jhp_test ~]# cat /proc/sys/net/ipv4/tcp_syncookies
1
[root@jhp_test ~]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
1024

위의 설정과 같이 tcp_syncookies 값을 1로 설정하게 되면 TCP 세션 연결시에 소스서버에서 정상적인 ACK패킷이 도달하지 않을 경우 TCP 세션 연결을 위한 자원낭비를 하지 않게 됩니다.