KOROMOON

착한 사마리아인이 되고 싶습니다.

6/26/2019

리눅스 sysctl 명령어


( 1 ) 설명


sysctl 명령어는 런타임(Runtime) 중에 /proc/sys 하위 디렉토리에 대한 커널 매개변수 값을 변경할 때 사용하는 명령어임.
리눅스 커널에 대한 설정값 변경 및 조회가 가능하며 커널 튜닝을 위한 명령어로 생각하면 됨.
시스템 관리자라면 sysctl 명령어를 알아둬야 하며 DDoS 방어를 위해서 네트워크 트래픽 관련된 커널 매개변수들은 필수로 숙지해야 함.
/proc/sys 하위 디렉토리에 존재하는 디렉토리를 구분하는 '/' 는 sysctl 명령어 이용시 '.' 으로 대체함.



( 2 ) 옵션 설명

root@kali:~# sysctl -h

기본형식:

sysctl [options] [variable[=value] ...]

옵션:

  -a, --all            모든 변수를 표시
  -A                   alias of -a
  -X                   alias of -a
      --deprecated     목록에 사용되지 않는 매개 변수를 포함
  -b, --binary         새로운 라인없이 값 출력
  -e, --ignore         알 수 없는 변수 오류를 무시
  -N, --names          값 없이 변수 이름만 출력
  -n, --values         특정 변수 값만 출력
  -p, --load[=<file>]  파일에서 값 읽기
  -f                   alias of -p
      --system         모든 시스템 디렉토리의 값 읽기
  -r, --pattern <expression>
                       일치하는 패턴식 검색
  -q, --quiet          변수 세트를 표시하지 않음
  -w, --write          변수 값 설정
  -o                   아무것도 하지 않음 (지정되지 않은 옵션)
  -x                   아무것도 하지 않음 (지정되지 않은 옵션)
  -d                   alias of -h
  -h, --help           도움말 및 종료를 표시
  -V, --version        버전 정보 및 종료를 표시
For more details see sysctl(8).

sysctl 3.3.15 버전에서 확인함.




( 3 ) 일시적인 커널 매개변수 값 변경법


일시적으로 커널 매개변수 값을 변경할 때 vi 편집기를 이용하여 값을 변경하거나 echo 명령어를 이용하여 변경함.

예를 들어 ping 을 응답하지 않도록 설정한다고 가정하자.
먼저 ping 과 관련된 커널 매개변수 파일값 /proc/sys/net/ipv4/icmp_echo_ignore_all)을 확인함.
해당 커널 매개변수 파일값이 0 이면 icmp 패킷에 대한 응답을 전부 무시하지 않는다는 뜻으로 ping 응답을 하지 않을려면 1 로 변경해야 함.
echo 명령어를 이용하여 값을 변경함.
또한, sysctl 명령어를 변경할 수 있음.
여기서 주의사항은 디렉토리를 구분하는 '/' 는 sysctl 명령어 이용시 '.' 으로 대체한다는 점에 유의하길 바람.
해당 방법들은 일시적인 방법임.



( 4 ) 지속적인 커널 매개변수 값 변경법


지속적으로 커널 매개변수 값을 변경하려면 /etc/sysctl.conf 파일에 원하는 설정값을 추가하면 됨.

위 예를 들어 ping 을 지속적으로 응답하지 않도록 설정하려면 /etc/sysctl.conf 파일에 "net.ipv4.icmp_echo_ignore_all = 1" 행을 추가하면 됨.

또한, /etc/rc.d/rc.local 파일에 원하는 설정값을 추가하면 됨.

ping 을 지속적으로 응답하지 않도록 설정하려면 /etc/rc.d/rc.local 파일에 "echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all" 이나 "sysctl –w net.ipv4.icmp_echo_ignore_all=1" 행을 추가하면 됨.
테스트 환경인 Kali Linux 에서는 /etc/rc.d 위치에 rc.local 파일이 없어서 테스트를 못함.



============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기