Apache 2.4 에서 mod_deflate 설정 에 대한 문서 입니다. Apache 2.2 에비해서 Apache 2.4 에서의 설정이 새롭게 바뀌었습니다. 1. Requirement Apache 2.4 에서 mod_deflate 를 사용하기 위해서는 다음과 같은 모듈들도 활성화되어야 합니다. mod_setenvif : 환경변수를 정의한다. mod_headers : HTTP 요청 헤더와 응답 헤더를 조절하고 수정하는 지시어를 제공한다. mod_deflate : 서버의 출력을 네트웍으로 클라이언트에 보내기 전에 압축하는 기능 제공 위 모듈들이 Apache 2.4.10 에 활성화 되어 있어야 합니다. 2. 설정 mod_deflate 의 설정은 Apache 2.2 와 2.4 가 차이가 […]
Apache 설정
Apache 설정이 필요 합니다. 그대로 쓰더라도 아무 문제가 없기는 하지만 아주 조금만 설정을 해주면 보안도 높아지고 성능도 좋아집니다. 이 문서의 내용은 Apache 2.4.10 기준으로 작성 되었습니다. 1. Default Character Set 아파치의 기본 문자셋을 지정해 줍니다.
1 2 |
# Specify a Default Charset AddDefaultCharset utf-8 |
2. Server Signature 서버의 자세한 정보를 숨깁니다. 이는 컴파일 설치를 했다면 conf/extra/httpd-default.conf 파일에 정의되어 있으며 httpd.conf 에서 extra/httpd-default.conf 파일을 Include 해주면 활성화됩니다.
1 2 |
ServerSignature Off ServerTokens Prod |
3. 디렉토리 리스팅 비활성화 컴파일 설치를 했다면 httpd.conf 파일에서 extra/httpd-autoindex.html 파일을 활성화 하지 않습니다. 그리고 다음과 같이 디렉토리 리스팅을 비활성화 해줍니다. […]
iptable 의 hashlimit 를 이용한 접속 제한
보통 DDOS 공격과 같은 경우에 초당 몇 십개에서 몇백번건의 접속을 시도 합니다. 이러한 초당 수백건의 접속을 이용해서 iptables 의 hashlimit 를 이용한 접속 제한을 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
hashlimit match options --hashlimit-upto max average match rate [Packets per second unless followed by /sec /minute /hour /day postfixes] –hashlimit-above min average match rate –hashlimit-mode mode is a comma-separated list of dstip,srcip,dstport,srcport (or none) –hashlimit-srcmask source address grouping prefix length –hashlimit-dstmask destination address grouping prefix length –hashlimit-name name for /proc/net/ipt_hashlimit –hashlimit-burst number to match in a burst, default 5 –hashlimit-htable-size number of hashtable buckets –hashlimit-htable-max number of hashtable entries –hashlimit-htable-gcinterval interval between garbage collection runs –hashlimit-htable-expire after which time are idle entries expired? |
예를들어 초당 20번 이상 접속을 시도하는 것을 차단하고 싶다면 다음과 같이 지정하면 됩니다.
1 |
-m hashlimit --hashlimit-name dnsudplimit --hashlimit-above 20/second --hashlimit-mode srcip --hashlimit-burst 100 --hashlimit-srcmask 24 --hashlimit-htable-expire 3600 -j DROP |
이 차단은 약 1시간 동안 유지됩니다.
[번역] 리눅스 커널 튜닝 – swappiness and overcommit_memory
이 문서는 다음 주소의 내용을 발 번역한 것입니다. http://tonylixu.blogspot.kr/2014/01/linux-kernel-tuning-swappiness-and.html 리눅스 커널 튜닝 – swappiness and overcommit_memory 리눅스 커널 튜닝가능한 파라메터 vm.swappiness (/proc/sys/vm/swappiness) 는 어떻게 메모리 페이지들이(memory pages) 적극적으로 디스크에 스왑(swap)되어질 수 있는지를 정의하는데 사용되어질 수 있습니다. 리눅스는 활용할 수 있는 free 메모리양이 충분하더라도 오랫동안 메모리 페이지에 접근하지 않는 것들을 스왑 공간으로 이동시킵니다. 이러한 동작은 “swappiness” 커널 파라메터 값을 /proc/sys/vm/swappiness 에서 변경할 수 있습니다. 높은 swappiness 값은 커널은 매핑된 페이지를 좀 더 해제하라는 의미 입니다. 낮은 swappiness 값은 반대의 의미로 […]
CentOS IPv6 비활성화
IPv4 의 부족분을 대체하기 위해서 IPv6 가 개발되었지만 아직까지 사용빈도가 높지않아 리눅스 IPv6 비활성화 시켜서 자원을 아낄 수 있습니다. 기본적으로 CentOS 6, 7 에서는 IPv6 가 활성화 되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 소켓 리스닝 상태 netstat -lpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1550/rpcbind tcp 0 0 0.0.0.0:39698 0.0.0.0:* LISTEN 1568/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1622/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1698/master tcp 0 0 :::111 :::* LISTEN 1550/rpcbind tcp 0 0 :::22 :::* LISTEN 1622/sshd tcp 0 0 ::1:25 :::* LISTEN 1698/master tcp 0 0 :::57468 :::* LISTEN 1568/rpc.statd udp 0 0 0.0.0.0:877 0.0.0.0:* 1550/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 1550/rpcbind udp 0 0 0.0.0.0:896 0.0.0.0:* 1568/rpc.statd udp 0 0 0.0.0.0:46387 0.0.0.0:* 1568/rpc.statd udp 0 0 0.0.0.0:68 0.0.0.0:* 1462/dhclient udp 0 0 :::877 :::* 1550/rpcbind udp 0 0 :::111 :::* 1550/rpcbind udp 0 0 :::46198 :::* 1568/rpc.statd # 커널 모듈 상태 lsmod | grep ipv6 nf_conntrack_ipv6 8337 2 nf_defrag_ipv6 11156 1 nf_conntrack_ipv6 nf_conntrack 79758 7 xt_conntrack,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state ipv6 318183 153 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6 |
위와같이 IPv6 가 사용 됩니다. CentOS 6 1. IPv6 커널 모듈 비활성화 다음과 같이 IPv6 커널 모듈이 로딩되지 않도록 해줍니다.
1 |
echo "install ipv6 /bin/true" > /etc/modprobe.d/disable_ipv6.conf |
2. 커널 파라메터 추가 다음과 같이 IPv6 커널 파라메터를 추가해 줍니다.
1 2 |
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf |
이제 재부팅을 해주면 IPv6 가 비활성화 됩니다. CentOS 7 1. Grub2 IPv6 비활성화 옵션 추가
1 2 3 4 5 6 7 8 |
# vim /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="ipv6.disable=1 vconsole.font=latarcyrheb-sun16 vconsole.keymap=ko crashkernel=auto rhgb quiet" GRUB_DISABLE_RECOVERY="true" |
이와같이 […]
Apache 2.4 새로운 기능
이 문서는 Apache 2.4 새로운 기능에 대해 기술한 문서 입니다. 1. 개요 Apache 2.2 는 2005년 후반기에 발표되고 지금까지 큰 버전의 변화가 없이 사용되고 있습니다. 그러다 최근 고용량의 정적 파일 및 큰 규모의 싸이트가 많아짐에 따라서 대량 접속에도 적은 리소스를 사용하면서 빠르게 서비스 할 수 있는 웹서버가 절실해졌습니다. 이에 러시아에 한 업체가 자사 싸이트 운영을 위해서 웹 서버를 제작했고 이것을 공개했는데 그것이 바로 Nginx 입니다. Nginx 의 빠른 응답속도와 적은 리소스 사용은 그동안 Apache 서버에 답답해했던 많은 사용자들을 […]
Apache HTTP SERVER Project 개요
Apache HTTP SERVER Project 는 아파치 소프트웨어 재단(Apache Software Foundation)이 운영하는 수많은 프로젝트중에 톱(Top) 프로젝트 입니다. 유닉스(Unix)와 윈도우즈 NT 계열의 운영체제를 위한 오픈소스(Open Source) HTTP 서버를 개발하는 프로젝트 입니다. 이 프로젝트의 목적은 HTTP 표준을 준수하면서도 안정적, 효율적, 확장가능한 HTTP 서비스를 제공하는데에 있습니다. 현재 가능 널리쓰이고 인기 있는 이 프로젝트는 1996년에 시작되었으며 올해(2014)년 2월에 18년째를 맞이했습니다. 1. 역사 1995년 2월즘에 웹에서 운영되어지는 HTTD 데몬으로 일리노이 대학의 슈퍼컴퓨팅 애플리케이션 국립센터의 Rob McCool씨가 만든 것을 대부분 사용했었습니다. 그런데 1994년 중반즘에 Bob McCool이 NCSA를 떠난 이후에 개발이 정체되었습니다. […]
RabbitMQ 설정
RabbitMQ 는 기본적으로 효율적으로 RabbitMQ 서버을 운영하기에 충분할만큼 내장된 설정으로 가지고 있습니다. 만약에 이 설정을 변경하고자 한다면 설정을 해야 합니다. RabbitMQ 설정은 기본적으로 다음과 같이 3가지 방법을 제공 합니다. 환경변수들(environment variables) : 포트(port), 파일 위치(file location), 파일 이름(file name)들을 정의. 이것은 쉘 환경변수로부터 가지고 올수 있으며 rabbitmq-env.conf 파일에 설정할 수 있다. 설정파일 : 허가권(permission), 제한과 클러스터, 플러그인 세팅과 같은 서버 컨포넌트들을 정의. 런타임 파라미터와 정책들 : 클러스터 전체 세팅을 런타임에서 변경할 수 있다. 설정파일의 위치는 배포판의 경우에 /etc/rabbitmq 를 루트하며, […]
리눅스 아파치 설치
Apache 는 전세계 웹 서버로 가장 많이 쓰이는 HTTP 서버 입니다. Apache 는 최신 2.4 으로 넘어오면서 많은 변화를 겪었습니다. 이 문서는 리눅스 아파치 설치 하는 방법을 설명한 것입니다. 1. 개요 CentOS 7 배포판은 RHEL 7 을 재컴파일해서 만들어진 배포판 입니다. 이전 버전과 달리 서비스 데몬 관리로 Systemd 를 채용했고 기본 파일 시스템으로 XFS 를 채용하는등 많은 변화를 겪었습니다. CentOS 7 에 서버 프로그램을 설치하게 될 경우에 이 Systemd 와 결합을 시키는 것도 중요한 일로 떠올랐습니다. Systemd 는 단순하게 서비스 […]