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 |