별의 공부 블로그 🧑🏻‍💻
728x90
728x170

sysctl

  • 커널 매개 변수(Kernel Parameter)의 값을 제어하여 시스템을 최적화할 수 있는 명령
  • /proc/sys 디렉터리에 존재하는 매개 변수를 제어하는 명령
    • /proc/sys : 리눅스 커널 제어를 위한 매개 변수(Parameter)가 존재하는 디렉터리
  • sysctl에서 매개 변수를 호출하는 형식
    • /proc/sys최상위 디렉터리(root)로 인식하고, 하위 디렉터리의 구분은 .로 대체하여 명령을 수행한다.
  • sysctl 명령으로 커널 매개 변수값을 확인하거나 변경하는 것이 가능하지만, 재부팅하면 초기화된다.

 

예 : sysctl 명령에서의 커널 매개 변수 호출
/proc/sys/net/ipv4/icmp_echo_ignore_all → net.ipv4.icmp_echo_ignore_all

 

  • 해당 설정을 재부팅 시에도 반영하여 지속적으로 적용 하는 방법
    • /etc/sysctl.conf 파일에 등록

 

사용법

# sysctl [option] 변수
# sysctl [option] 변수=값

 

주요 옵션

옵션 설명
-a, -A - 커널 매개 변수모두 출력
- (--all)
-p [파일명] - 환경 변수 파일에 설정된 값을 읽어 들여서 반영하고 출력함.
- 파일명을 지정하지 않으면 /etc/sysctl.conf 파일의 내용이 출력됨.
- (--load=파일명)
-n - 특정 매개 변수에 대한 값을 출력할 때 사용
- (--values)
-w 변수=값 - 매개 변수값 설정
- (--write)

 

사용 예

예 1
  • 적용된 커널 매개 변수와 값을 전부 출력
# sysctl -a

 

예 2
  • /etc/sysctl.conf 파일의 내용 출력
# sysctl -p

 

예 3
  • /proc/sys/net/ipv4/icmp_echo_ignore_all의 값 출력
# sysctl -n net.ipv4.icmp_echo_ignore_all

 

예 4
  • /proc/sys/net/ipv4/icmp_echo_ignore_all의 값을 0으로 설정
# sysctl -w net.ipv4.icmp_echo_ignore_all=0

 

예 5
  • /etc/sysctl.conf 를 비롯하여 커널 매개 변수와 연관된 환경 설정 파일을 읽어 들여서 적용함.
# sysctl --system

 

(참고) 주요 항목 분석

더보기
항목 설명
/proc/sys/net/ipv4/icmp_echo_ignore_all - ping과 같은 ICMP 패킷에 대한 응답 여부를 결정하는 매개 변수
- 0 : 응답
- 1 : 응답을 하지 않음.
/proc/sys/net/ipv4/tcp_syncookies - SYN Flooding 공격을 막을 때 유용한 항목
- SYN 패킷의 도착 빈도가 일정한 횟수보다 많을 때, 해당 요청을 허용하지 않을 경우에 사용함.
- 보안을 위해서 기본값을 1로 설정함.
/proc/sys/net/ipv4/tcp_max_syn_backlog
- TCP 프로토콜에서 하나의 소켓이 동시에 SYN 요청을 처리하기에는 한계가 있는데, 이 한계를 백로그(Backlog) 라고 함.
- 백로그(Backlog) : 연결 요청이 아직 완전히 처리되지 아니한 대기 상태에 있는 큐의 길이
- 이 백로그 큐가 꽉 차게 되면 이후 들어오는 SYN 요청은 무시됨.
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts - Bad ICMP 패킷을 무시할 때 사용하는 매개 변수
- 보안을 위해 1로 설정함.
/proc/sys/net/ipv4/conf/all/accept_secure_route - 라우팅과 라우팅 프로토콜은 몇 가지 문제점을 생성함.
- 목적지 경로에 대한 세부적인 내용을 담고 있는 IP 소스 라우팅은 목적지 호스트에서도 같은 경로를 따라 반응을 해야 한다는 문제점이 있음.
- 해커가 특정 네트워크 소스 라우팅 패킷을 보낼 수 있다면, 돌아오는 반응을 가로채서 상대방의 호스트와 신뢰받는 호스트인 것처럼 속일 수 있게 됨.
- 이 기능을 사용하지 못하게 하기 위해 값을 0으로 설정함.
/proc/sys/net/ipv4/conf/all/rp_filter - IPv4 는 인증 매커니즘을 가지고 있지 않기 때문에 Source IP Address 를 조작할 수 있음.
- 1 : rp_filter가 패킷이 들어오는 인터페이스와 나가는 인터페이스가 같은지를 검사하도록 설정
/proc/sys/net/ipv4/conf/all/log_martians - 스푸핑 패킷과 Redirect 된 패킷의 기록을 남길 지 여부를 지정하는 변수
- 0 : 기록을 남기지 않음.
- 1 : 패킷을 기록함.
/proc/sys/net/ipv4/tcp_fin_timeout - TCP 세션 종료 후에 얼마나 세션 연결을 유지하고 있을지를 초 단위로 설정함.
- telnet이나 ftp 등을 이용하여 서버에 접속하다가 예기치 못한 상태에서 연결이 종료되는 경우, TCP 세션의 연결 상태 지속 여부를 결정하는 값
/proc/sys/net/ipv4/tcp_keepalive_time - TCP 연결 상태를 계속 유지시키기 위한 시간 설정
- 단위 : 초(Second)
- 트래픽이 없는 상태에서의 Timeout 값
/proc/sys/net/ipv4/ip_forward - 인터넷 공유나 IP 매스커레이드 등 하나의 서버에서 IP를 공유하여 포워딩을 가능하게 할 것인지 여부를 지정하는 파일
- 1 : 가능
- 0 : 불가능
/proc/sys/net/ipv4/ip_local_port_range 시스템에서 TCP 및 UDP를 이용하여 클라이언트 포트로 사용할 수 있는 포트 범위의 값을 설정하고 있는 파일
/proc/sys/net/ipv4/tcp_timestamps - 외부에서 서버의 날짜 정보를 확인 가능하게 할 것인지를 지정하는 변수
- 1 : 확인 가능
- 0 : 확인 불가능
/proc/sys/net/ipv4/conf/all/accept_redirects - ICMP Redirect 관련 패킷을 허가할 것인지를 결정하는 변수
- 1 : 허가
- 0 : 불허
- ICMP Redirect 패킷은 서버의 라우팅(Routing) 경로를 확인하는 역할을 하는데, 이러한 패킷을 차단할 수 있음.
/proc/sys/net/ipv4/conf/all/send_redirects - 서버에서 나가는 ICMP Redirect 패킷을 허가할 것인지를 결정하는 파일
- 기본값 : 1(허가)
- 0 : ICMP Redirect 가 나가는 것을 막을 수 있음.
/proc/sys/fs/file-max 커널에서 최대로 사용 가능한 파일 수를 지정하는 파일

 

728x90
그리드형(광고전용)

'System Software > Linux' 카테고리의 다른 글

[리눅스 명령어] lsattr  (0) 2022.03.15
[리눅스 명령어] sudo / visudo  (0) 2022.03.15
[리눅스 명령어] ssh-keygen  (0) 2022.03.15
[리눅스 명령어] ssh  (0) 2022.03.15
[리눅스 명령어] logger  (0) 2022.03.15
[리눅스 명령어] dmesg  (0) 2022.03.15
[리눅스 명령어] lastb  (0) 2022.03.15
[리눅스 명령어] lastlog  (0) 2022.03.15
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖