리눅스 커널/네트워크 매개변수 설정
페이지 정보
본문
Subject : [스마일서브] 보안공지2차 안내메일입니다.
안녕하세요
(주)스마일서브 기술지원팀입니다.
최근 다양한 공격방법으로 인해 보안사고가 많아 2차 보안권고 공지드립니다.
고객님들의 서버가 최소한의 설정만으로도 보안사고를 막을 수 있었던 문제가 많아
참고하실수 있도록 기술문서와 사례문서를 보내드리오니 참고하시어 보안에 더욱 관심을 가지셔서
보안에 취약한 문제가 없으시길 바랍니다.
이번 4월에는 이것만은 꼭 설정합시다.
아래와 같이 리눅스서버는 커널/네트워크 매개변수 설정이며,
윈도우서버는 보안패치 및 sql 사용시 각 sql에 맞는 서비스팩 설치를 꼭 설치 합시다.
1. 리눅스 커널/네트워크 매개변수 설정
1) /etc/sysctl.conf 파일 수정
vi /etc/sysctl.conf -> 마지막줄부터 아래 내용 추가
################### 복사 시작 ####################
# icmp redirects를 보내지 않는다.
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# proxy arp를 설정하지 않는다.
net.ipv4.conf.eth0.proxy_arp=0
net.ipv4.conf.lo.proxy_arp=0
net.ipv4.conf.default.proxy_arp=0
net.ipv4.conf.all.proxy_arp=0
# 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위해 설정한다.
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
# 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다.
# 소스 라우팅을 허용할 경우 악의적인 공격자가 IP 소스 라우팅을 사용해서 목적지의
# 경로를 지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다. 이러한 소스 라우팅이
# 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클라이언트인 것처럼 위장할 수 있는 것이다.
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
# Broadcast로부터 오는 핑을 차단함(Smurt 공격을 차단함).
net.ipv4.icmp_echo_ignore_broadcasts=1
# IP 나 TCP 헤더가 깨진 bad icmp packet을 무시한다.
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 자신의 네트워크가 스푸핑된 공격지의 소스로 쓰이는 것을 차단한다.
# 모든 인터페이스에서 들어오는 패킷에 대해 reply를 하여 들어오는 인터페이스로 나가지 못하는 패킷을 거부한다.
net.ipv4.conf.eth0.rp_filter=2
net.ipv4.conf.lo.rp_filter=2
net.ipv4.conf.default.rp_filter=2
net.ipv4.conf.all.rp_filter=2
# bootp 패킷을 허용하지 않는다.
net.ipv4.conf.eth0.bootp_relay=0
net.ipv4.conf.lo.bootp_relay=0
net.ipv4.conf.default.bootp_relay=0
net.ipv4.conf.all.bootp_relay=0
# 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다.
net.ipv4.conf.eth0.log_martians=1
net.ipv4.conf.lo.log_martians=1
net.ipv4.conf.default.log_martians=1
net.ipv4.conf.all.log_martians=1
# 1/100초에 받아들이는 igmp "memberships"의 수
net.ipv4.igmp_max_memberships=1
# 매우 복잡한 사이트에서는 이 값을 늘리는 것도 가능하지만 64로 두는 것이 적당하며
# 더 늘렸을 경우에는 큰 문제가 발생할 수도 있다.
net.ipv4.ip_default_ttl=64
# 게이트웨이 서버가 아닌 이상 패킷을 포워딩 할 필요는 없다.
net.ipv4.ip_forward=0
# fragmented packet이 메모리에 존재하는 시간을 15초로 설정한다.
net.ipv4.ipfrag_time=15
# SYN_Flooding 공격에 대한 대비로 백로그큐(Backlog Queue)가 가득차면 다른 접속 요구를 받아들이지 못한다.
net.ipv4.tcp_max_syn_backlog = 1024
# TCP 연결에서 Three-way Handshake가 성공적으로 이루어지지 않으면 더 이상 소스 경로를 거슬러 올라가지 않도록한다.
# 따라서 적절한 연결 요청에 대해서만 연결을 맺는다.
# syncookies가 작동할 때 SYN Flooding 공격이 있으면 messages 파일에 아래와 같은 내용이 출력된다.
# possible SYN flooding on port 80. Sending cookies.
net.ipv4.tcp_syncookies = 1
# 일정한 시간과 IP별로 보내고 받는 SYN 재시도 횟수를 3회로 제한한다.
# 이 옵션은 스푸핑된(위조된) 주소로 오는 SYN 연결의 양을 줄여준다.
# 기본 값은 5(180 초에 대응)이며 255를 넘지 않아야 한다.
net.ipv4.tcp_syn_retries = 3
# passive TCP 접속시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보다 높
# 게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다.
net.ipv4.tcp_synack_retries = 3
# 무언가 문제가 있을 때 연결을 위해 재시도 할 횟수, 최소 값과 기본 값은 3이다.
net.ipv4.tcp_retries1=3
# TCP 연결을 끊기 전에 재시도할 횟수.
net.ipv4.tcp_retries2=7
# 연결을 종료시 소요되는 시간을 줄여준다(기본 설정값: 60).
net.ipv4.tcp_fin_timeout=20
# 동시에 유지 가능한 timewait 소켓의 수이다.
# 만약 지정된 숫자를 초과하였을 경우에는 timewait 소켓이 없어지며 경고 메시지가 출력된다.
# 이 제한은 단순한 DoS 공격을 차단하기 위해 존재하는데, 임의로 이 값을 줄여서는 안되며
# 메모리가 충분하다면 적절하게 늘려주는 것이 좋은데, 64M 마다 180000으로 설정하면 된다.
# 따라서 256M일 경우에는 256/4=4 4*180000=720000
# 64M -> 180000
# 128M -> 360000
# 256M -> 720000
# 512M -> 1440000
# 1G -> 2880000
# 2G -> 5760000
#net.ipv4.tcp_max_tw_buckets = 180000
# 연결이 끊어졌다고 판단할 때까지, 얼마나 keepalive probe 를 보낼지 결정. 기본값 9회
# 간단한 DoS 공격을 막아준다.
net.ipv4.tcp_keepalive_probes=2
# keepalive 가 활성되 되어 있을 경우, 얼마나 자주 TCP 가 keepalive 메세지를 보
# 내게 할 것인지를 설정.
net.ipv4.tcp_keepalive_time=30
# keepalive_probes 를 보낼 간격을 정함. probe 를 보낸 후, probes * intvl 의 시
# 간이 지나도록 응답이 없으면 연결이 해제된 것으로 간주하게 됨. 기본 값의 사용
# 시 11분 15초 동안 재시도를 하고 연결을 취소함. 값은 초단위
net.ipv4.tcp_keepalive_intvl = 10
# 서버 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 기본 값은 7 로
# RTO 50 초에서 16 분 사이에 해당한다. 웹 서버가 운영 중 이라면 이 값을 줄여서
# 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있다.
net.ipv4.tcp_orphan_retries = 2
# SYN 패킷을 전송한 후에 로스가 발생을 하여 ACK 를 일부 받지 못했을 경우, 선택
# 적으로 (selected) 받지못한 ACK 만 받도록 요청하는 것을 허락한다. 로스가 많은
# 네트워크에서는 상당히 중요한 역할을 한다.
net.ipv4.tcp_sack = 1
################### 복사 마지막줄 #######################
2) 복사 완료후 확인 (설정이 완료되면 아래와 같이 나와야합니다)
안녕하세요
(주)스마일서브 기술지원팀입니다.
최근 다양한 공격방법으로 인해 보안사고가 많아 2차 보안권고 공지드립니다.
고객님들의 서버가 최소한의 설정만으로도 보안사고를 막을 수 있었던 문제가 많아
참고하실수 있도록 기술문서와 사례문서를 보내드리오니 참고하시어 보안에 더욱 관심을 가지셔서
보안에 취약한 문제가 없으시길 바랍니다.
이번 4월에는 이것만은 꼭 설정합시다.
아래와 같이 리눅스서버는 커널/네트워크 매개변수 설정이며,
윈도우서버는 보안패치 및 sql 사용시 각 sql에 맞는 서비스팩 설치를 꼭 설치 합시다.
1. 리눅스 커널/네트워크 매개변수 설정
1) /etc/sysctl.conf 파일 수정
vi /etc/sysctl.conf -> 마지막줄부터 아래 내용 추가
################### 복사 시작 ####################
# icmp redirects를 보내지 않는다.
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# proxy arp를 설정하지 않는다.
net.ipv4.conf.eth0.proxy_arp=0
net.ipv4.conf.lo.proxy_arp=0
net.ipv4.conf.default.proxy_arp=0
net.ipv4.conf.all.proxy_arp=0
# 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위해 설정한다.
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
# 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다.
# 소스 라우팅을 허용할 경우 악의적인 공격자가 IP 소스 라우팅을 사용해서 목적지의
# 경로를 지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다. 이러한 소스 라우팅이
# 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클라이언트인 것처럼 위장할 수 있는 것이다.
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
# Broadcast로부터 오는 핑을 차단함(Smurt 공격을 차단함).
net.ipv4.icmp_echo_ignore_broadcasts=1
# IP 나 TCP 헤더가 깨진 bad icmp packet을 무시한다.
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 자신의 네트워크가 스푸핑된 공격지의 소스로 쓰이는 것을 차단한다.
# 모든 인터페이스에서 들어오는 패킷에 대해 reply를 하여 들어오는 인터페이스로 나가지 못하는 패킷을 거부한다.
net.ipv4.conf.eth0.rp_filter=2
net.ipv4.conf.lo.rp_filter=2
net.ipv4.conf.default.rp_filter=2
net.ipv4.conf.all.rp_filter=2
# bootp 패킷을 허용하지 않는다.
net.ipv4.conf.eth0.bootp_relay=0
net.ipv4.conf.lo.bootp_relay=0
net.ipv4.conf.default.bootp_relay=0
net.ipv4.conf.all.bootp_relay=0
# 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다.
net.ipv4.conf.eth0.log_martians=1
net.ipv4.conf.lo.log_martians=1
net.ipv4.conf.default.log_martians=1
net.ipv4.conf.all.log_martians=1
# 1/100초에 받아들이는 igmp "memberships"의 수
net.ipv4.igmp_max_memberships=1
# 매우 복잡한 사이트에서는 이 값을 늘리는 것도 가능하지만 64로 두는 것이 적당하며
# 더 늘렸을 경우에는 큰 문제가 발생할 수도 있다.
net.ipv4.ip_default_ttl=64
# 게이트웨이 서버가 아닌 이상 패킷을 포워딩 할 필요는 없다.
net.ipv4.ip_forward=0
# fragmented packet이 메모리에 존재하는 시간을 15초로 설정한다.
net.ipv4.ipfrag_time=15
# SYN_Flooding 공격에 대한 대비로 백로그큐(Backlog Queue)가 가득차면 다른 접속 요구를 받아들이지 못한다.
net.ipv4.tcp_max_syn_backlog = 1024
# TCP 연결에서 Three-way Handshake가 성공적으로 이루어지지 않으면 더 이상 소스 경로를 거슬러 올라가지 않도록한다.
# 따라서 적절한 연결 요청에 대해서만 연결을 맺는다.
# syncookies가 작동할 때 SYN Flooding 공격이 있으면 messages 파일에 아래와 같은 내용이 출력된다.
# possible SYN flooding on port 80. Sending cookies.
net.ipv4.tcp_syncookies = 1
# 일정한 시간과 IP별로 보내고 받는 SYN 재시도 횟수를 3회로 제한한다.
# 이 옵션은 스푸핑된(위조된) 주소로 오는 SYN 연결의 양을 줄여준다.
# 기본 값은 5(180 초에 대응)이며 255를 넘지 않아야 한다.
net.ipv4.tcp_syn_retries = 3
# passive TCP 접속시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보다 높
# 게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다.
net.ipv4.tcp_synack_retries = 3
# 무언가 문제가 있을 때 연결을 위해 재시도 할 횟수, 최소 값과 기본 값은 3이다.
net.ipv4.tcp_retries1=3
# TCP 연결을 끊기 전에 재시도할 횟수.
net.ipv4.tcp_retries2=7
# 연결을 종료시 소요되는 시간을 줄여준다(기본 설정값: 60).
net.ipv4.tcp_fin_timeout=20
# 동시에 유지 가능한 timewait 소켓의 수이다.
# 만약 지정된 숫자를 초과하였을 경우에는 timewait 소켓이 없어지며 경고 메시지가 출력된다.
# 이 제한은 단순한 DoS 공격을 차단하기 위해 존재하는데, 임의로 이 값을 줄여서는 안되며
# 메모리가 충분하다면 적절하게 늘려주는 것이 좋은데, 64M 마다 180000으로 설정하면 된다.
# 따라서 256M일 경우에는 256/4=4 4*180000=720000
# 64M -> 180000
# 128M -> 360000
# 256M -> 720000
# 512M -> 1440000
# 1G -> 2880000
# 2G -> 5760000
#net.ipv4.tcp_max_tw_buckets = 180000
# 연결이 끊어졌다고 판단할 때까지, 얼마나 keepalive probe 를 보낼지 결정. 기본값 9회
# 간단한 DoS 공격을 막아준다.
net.ipv4.tcp_keepalive_probes=2
# keepalive 가 활성되 되어 있을 경우, 얼마나 자주 TCP 가 keepalive 메세지를 보
# 내게 할 것인지를 설정.
net.ipv4.tcp_keepalive_time=30
# keepalive_probes 를 보낼 간격을 정함. probe 를 보낸 후, probes * intvl 의 시
# 간이 지나도록 응답이 없으면 연결이 해제된 것으로 간주하게 됨. 기본 값의 사용
# 시 11분 15초 동안 재시도를 하고 연결을 취소함. 값은 초단위
net.ipv4.tcp_keepalive_intvl = 10
# 서버 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 기본 값은 7 로
# RTO 50 초에서 16 분 사이에 해당한다. 웹 서버가 운영 중 이라면 이 값을 줄여서
# 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있다.
net.ipv4.tcp_orphan_retries = 2
# SYN 패킷을 전송한 후에 로스가 발생을 하여 ACK 를 일부 받지 못했을 경우, 선택
# 적으로 (selected) 받지못한 ACK 만 받도록 요청하는 것을 허락한다. 로스가 많은
# 네트워크에서는 상당히 중요한 역할을 한다.
net.ipv4.tcp_sack = 1
################### 복사 마지막줄 #######################
2) 복사 완료후 확인 (설정이 완료되면 아래와 같이 나와야합니다)
- 이전글리눅스 설치후 초기 보안셋팅 21.02.10
- 다음글apache + Mysql + php 설치 (ssl 인증서 포함) - APM설치하기 21.02.10
댓글목록
등록된 댓글이 없습니다.