👨🏻‍💻Infra

    Apache client denied by server configuration

    error로그에 제목과같은 log가 찍히는 경우 접근 제한을 해제해야 한다. 이전 버전 최신버전 설정이 다르다. 이전버전 Order allow,deny Allow from all 최신버전 Require all granted

    iptables 로 DDOS 방어 하기

    # 동일IP가 http서비스에 1초동안 10회 이상 tcp 80포트로 접속하는 경우 drop iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 10 --name HTTP -j DROP 동일IP가 http서비스에 1초동안 5회 이상 tcp 80포트로 접속하는 경우 drop iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 5 --name HTTP -j DROP

    PHP7 SSH2

    PHP7 SSH2

    XE나 워드프레스 관리자 화면에서 sftp를 이용하기 위해서는 php 확장 모듈인 ssh2가 필요하다 필자는 소스를 직접 받아 컴파일 하였다. pecl.php.net/package/ssh2 위 URL에서 맞는 버전 설치 후 서버에 업로드 (필자는 1.2 다운로드하였음) tar xzvf ssh2-1.2.tgz cd ssh2-1.2 . . . vi /etc/php.ini 마지막으로 phpinfo에서 ssh2 모듈 확인해보면된다~ 끄읕

    PHP7 opcache 설정

    PHP7 opcache 설정

    php7 버전에서 Zend Opcache 가 포함되어 설치되므로 /etc/php.ini 에서 아래와같이 extension 으로 설정만 해주면된다. [opcache] zend_extension=/usr/local/php-7.3.23/lib/php/extensions/no-debug-zts-20180731/opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=10240 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=2400000 opcache.max_wasted_percentage=10 opcache.validate_timestamps=1 opcache.re..

    Apache 브라우저 캐시 설정

    우리가 사용하는 브라우저는 웹페이지 접근 시 캐시가 쌓인다. 캐시를 쌓는 이유는 동일 사이트 접속 시 미리 최근에 저장해놓은 파일들을 이용하면 웹페이지에 더 빠르게 접근이 가능하기 때문이다. Apache에서 제공하는 캐시모듈을 적용하면 지정한 기간동안 캐시로 보관한다. Apache에서는 mod_expire 모듈을 통해 설정할수있다. 아래 설정은 gif, png, jpg, jpeg 등 파일에 대하여 1달간 캐시를 설정을 하겠다는 뜻이다. 꼭 month와 같은 "달" 이 아닌 몇시간, 몇일, 몇주 도 설정가능하다 ex) years, months, weeks, days, hours, minutes, seconds vi httpd.conf ExpiresActive On ExpiresByType image/x-i..

    Apache gzip 압축전송

    Apache gzip 압축전송

    위 화면은 Chrome 개발자도구에서 확인할수 있는 내용이다 필자가 관리하고있는 사이트는 gzip 으로 압축 전송이 되고있다. 위 사진에 보듯이 서버에서 설정을 아직 안했다면 Response Headers 쪽에 Content-Encoding: gzip 이 없을것이다. 이를 사용하기 위해서는 2개의 조건이 있다. 1. 사이트에 접속하는 사용자의 브라우저에서 gzip 기능을 지원할것 2. 서버에서 gzip으로 전송 vi httpd.conf LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule filter_module modules/mod_filter.so 위 세개 모듈..

    Apache ModSecurity requires mod_unique_id to be installed.

    Apache ModSecurity requires mod_unique_id to be installed.

    위 주석을 해제한다 Modsecurity 를 설치하기전에는 위 라이브러리가 필요하다 주석을 풀어주고 apache restart를 해도되고 modules/ 쪽에 없다면 모듈 설치 후 진행해야한다.

    Apache2.4 mod_security

    기존환경 : Apache2.4, PHP7.3, MySQL5.7 컴파일설치되어있음 필자와 같이 컴파일설치로 되어있다는 가정으로 진행하겠다. rpm으로 설치되어있어도 웬만해서는 따라올수있다 #modsecurity 소스 다운로드 wget https://www.modsecurity.org/tarball/2.9.3/modsecurity-2.9.3.tar.gz https://www.modsecurity.org 공식홈페이지이며, 필자는 위 주소에서 2.x 버전을 다운 다른 버전을 원하는사람은 다른 버전을 다운받길 바란다. modsecurity 설치까지 완료하면 룰셋을 다운받는다 #modsecurity 룰셋 다운로드 git clone https://github.com/SpiderLabs/owasp-modsecurity..

    VMware 구동 시 바로 종료되는 증상

    이번에 포스팅할 주제는 VMware 설치창이 바로 꺼지는 증상에 대해 적는다. 필자는 VMware Workstation Pro 를 사용하였으며, 최근 노트북 변경으로 인한 재설치를 진행하였다. 그런데 이게 웬일? 설치파일(.exe) 구동을 시키면 바로 꺼지는 증상이 나타났다. 해당 내용 디팬더도 꺼보고.. 드라이버 재설치 등등 .. 다해봐도 안되었다.. 물론 eventvwr 에도 특이사항은 없었다. 이렇게 몇시간 고생한다음 다음과 같이 해결하였다. 해결은 Administrator 계정으로 들어가서 설치하면 된다. TIP 포맷하고 컴퓨터이름을 영어로 하면 바로 설치가 된다고하는데 나는 한글이여서 안된거같기도한다. Administrator 로 전환하는 방법 1. cmd (관리자 권한 실행) 2. net us..

    GPT 볼륨 LVM 설정

    GPT 볼륨 LVM 설정

    우리가 사용하는 Linux에서는 파티션 생성시 fdisk 를 이용한다. 하지만 fdisk 같은경우에는 Disk Size가 2TB 가 넘어가면 2TB까지 밖에 사용을 못한다. 예를들면 3TB Disk 가 있다고 가정하면 fdisk 로 파티셔닝시 2TB 까지밖에 사용을 못한다는것이다. 그 이유는 fdisk 는 MBR 방식이기 때문이다. 2TB 이상 Disk 를 사용할때는 MBR 방식 대신 GPT 방식을 사용해줘야한다. 그렇기에 fdisk 가 아닌 parted 명령어를 사용한다.

    Tomcat HTTP Header 배너 삭제

    Tomcat HTTP Header 배너 삭제

    Apache-Tomcat 연동사용자에게 HTTP Header를 가리는부분은 Tomcat 이 아닌 Apache 에서 변경해야한다. 이유는 HTTP Header 쪽을 보면 Apache 버전이 노출되기 때문이다. ------------------------------------------------------------------------ Apache-Tomcat 연동사용자는 HTTP Header 에 다음과 같이 나온다. 위 부분에 버전을 가리려면 다음과 같이 설정한다 vi httpd.conf ServerTokens Prod

    Tomcat 버전 노출

    Tomcat 버전 노출

    Apache-Tomcat 을쓰거나 Tomcat 단일로 쓰는 서버 모두 적용대상이다. 서버 버전이 노출되면 해당 버전의 취약점을 이용하여 공격당할수있다. 그러므로 버전 정보는 안보이게 하는것이 좋다 보통 web.xml 파일안에 404 error 페이지가 설정되어있지 않다면 아래사진과 같은 화면을 보게된다 처리방법 CATALINA_HOME/lib 쪽에 오면 catalina.jar 파일이 보인다. jar xvf catalina.jar 위 파일을 압축 풀면 org 와 META_INF 가 생김 그럼 이제 다음 경로로 들어간다 /usr/local/apache-tomcat-7.0.70/lib/org/apache/catalina/util 위 경로에서 ServerInfo.properties 파일을 열어서 위 사진과 같이..

    Linux dd 명령어

    Linux dd 명령어

    테스트를 할 때 파일의 크기에 관련된 테스트라면, 다양한 파일의 크기를 생성하기가 여간 귀찮은게 아니다. 파일의 내용은 상관없고 원하는 파일의 크기를 얻고싶을때 사용하면 좋다 아니면 의미없는 문자들로 채워넣고 복사 붙여넣기 를 반복해야되기때문이다. dd명령어를 사용하면 쉽게 원하는 파일의 크기를 생성 가능하다 [root@localhost] $ dd if=/dev/zero of=test.bin bs=1K count=100 이렇게 하면 100K 크기를 갖는 aa.bin 파일이 생성된다. dd : 블록단위로 파일을 복사하거나 파일변환을 할 수 있는 명령어 dd의 입출력시에 사용되는 단위들 c : Character, 1byte w : Word, 2bytes k : Kilo Bytes, 1024bytes b : ..

    APM configure 옵션 확인

    1. MySQL configure 옵션 확인 # 설치시사용한소스경로/config.log 2. 아파치 configure 옵션 확인 # 설치시사용한소스경로/config.nice OR # 설치경로/build/config.nice 3. php configure 옵션 확인 # 설치시사용한소스경로/config.nice OR # 설치경로/bin/php-config OR # php -i

    브리지와 스위치 차이점

    브리지와 스위치는 같은 데이터링크 계층이면서 하는일이 비슷하다 그렇다면 차이점은 없을까? 공통점 둘다 같은 데이터링크계층 차이점 1) 스위치는 처리방식이 하드웨어로 이루어지는 반면, 브리지는 소프트웨어적으로 프레임을 처리하여 브리지에 비해서 빠름 즉, 브리지의 경우는 프레임의 처리 방식이 소프트웨어적 프로그램에 의해서 처리되는 방식을 취하지만, 스위치의 경우는 처리 절차를 미리 칩에 구워서 하드웨어 방식으로 만드는 ASIC(에이직) 방식이기 때문에 프레임 처리 속도가 브리지에 비해서 훨씬 빠르다 2) 브리지는 포트들이 같은 속도를 지원하는 반면, 스위치는 서로 다른 속도를 연결해줄수 있는 기능을 제공한다 즉, 10메가 포트, 100메가 포트 가 한 장비에 같이 있게되며, 이는 서로 다른 속도를 연결해주는..

    브리지 (Bridge)

    허브에 한수 높은 브리지에 대해 알아보겠다. 스위치를 이해하기 위해서는 브리지를 먼저 알고 넘어가야한다. 브리지가 가지고 있는 모든 특성은 바로 스위치의 특성 이기도하며, 브리지는 말 그대로 "다리" 이다. 허브는 나누지 못하는 콜리전 도메인을 나누어주는 역할을 한다. 브리지는 목적지 주소를 보고 그 주소가 자신의 브리지 테이블(맥 어드레스 테이블)에 없거나, 멀티캐스트주소이거나, 브로드캐스트 주소인 경우에는 들어온 포트를 제외한 나머지 모든 포트로부터 뿌려주는 Flooding을 하게된다. 브리지는 출발지의 맥 어드레스를 외운 다음 이것을 브리지 테이블(맥 어드레스 테이블) 에 저장한다. 중간에 서서 브리지 맥 어드레스 테이블(브리지 테이블) 을 보면서 통신이 다리 한쪽에서만 일어나면 다리를 못건너가게하..

    스위치 (Switch)

    스위치의 모든 기능은 브리지에서 출발한다. 스위치는 포트별로 콜리전 도메인이 나뉘어져있다. 이 말은 즉 1번포트PC와 2번포트PC가 데이터를 주고받는 동안에도 3번포트PC와 4번포트PC 가 서로 데이터를 주고 받을수 있게 하는 장비다. 1, 2번 사이에서 통신이 일어나면 나머지 모든 PC들은 기다려야만 하는 허브와는 달리 다른 PC들도 동시에 통신이 가능하다. 이부분이 허브와의 가장 큰 차이점이다 또한 허브에 비해서 데이터를 처리하는 방법, 데이터 전송 에러 복구 기능도 있다. 그래서 스위치의 경우 각각의 포트에 연결된 PC가 독자적으로 10Mbps 또는 100Mbps의 속도를 갖는 다고 이야기한다 스위치는 포트별로 콜리전 도메인을 나누기때문에 허브와는 다르게 어느 한 순간에는 하나만이 통신이 가능해서 ..

    허브 (Hub)

    허브는 네트워크 구성에서 가장 기본적인 구성 요소이다. 이 허브는 연결된 모든 PC들이 서로 통신할수 있게 해주는 역할을 하며 10Mbps허브와 100Mbps(패스트 이더넷) 허브가 있다. 지금 설명하는 허브는 이더넷 허브인만큼 CSMA/CD 의 적용을 받는다 같은 허브에 연결되어 있는 모든 PC들은 모두 같은 콜리전도메인 상에 있으며, 같은 콜리전 도메인에 있다는 의미는 그 허브에 붙어있는 하나의 PC가 통신을 하게 되면 다른 모든 PC는 통신을 할수 없게 되고, 또 만약 이 허브에 붙어있는 하나의 PC에서 콜리전이 발생하면 모든 PC가 영향을 받는다 이러한 허브를 우리는 Shared 허브라고 하며, 허브에 연결된 모든 PC들이 속도를 공유한다 한마디로 10Mbps 의 허브에 20대의 PC를 연결해서 ..

    SSH key 생성하기

    SSH key 생성하기

    SSH는 암호화된 원격 접속 프로토콜이다. 가장 기본적인 방법은 패스워드를 사용하여 접속하는것이다. 위 방법 물론 암호화되어 서버로 보내지지만 반복적인 해커의 공격에 안전하지 않다. 패스워드가 복잡하지 않고 짧은 경우에는 더욱 그렇다. SSH key 는 가장 안정적이면서 검증된 인증방식이다 클라이언트가 가지는 Private 키는 절대 타인에게 공개되면 안된다. 이유는 Private 키가 있다면 서버에 아무 인증 없이 접속이 가능하기 때문이다. 물론 예방조치로 Private 키를 passphrase 로 암호화 하여 디스크에 저장도 가능하다 ----------------------------------------------------------------------------------------------..

    Apache LogFormat 정리

    Apache LogFormat 정리

    액세스 로그로 저장하는 데이터를 직접 커스텀마이징하여 형식을 지정할 수 있다. 로그 형식은 "LogFormat"으로 지정한다. LogFormat "포맷" 로그-형식-이름 기본적으로 로그 형식으로는 다음의 두 가지가 정의되어있으며, 로그 형식 이름으로 "common"과 "combined"의 두 가지가 있으며, 사용자가 만들수있다. %a 액세스한 IP 주소 %A 서버 (Apache)의 IP 주소 %B 전송된 바이트 수 (헤더는 제외) %b 전송된 바이트 수 (헤더는 제외), 0바이트인 경우는 '-'이 표시된다. %f 요청된 파일 이름 %h 원격 호스트 이름 %H 요청 프로토콜 이름 %l 클라이언트 식별자 %m 요청 메소드명 %q 요청에 포함된 쿼리 문자열, 공백 이외는 "?"가 붙는다. %r 요청의 첫 번째..