동안 텔넷 접속을 계정 별로 막을 수 있는 방법이 딱히 없었다. 
그런 의미에서 아래 방법은 정말로 반가운 일이다. 
호스팅 업계에서는 유용하게 사용될 것으로 생각된다. 

Proftpd 보면 /etc/proftpd/conf/ftpusers 파일이 있을것이다. 

ftpusers 파일 안에 있는 계정은 FTP로 접근 못한다. 이걸 텔넷이나 ssh에 응용하면 된다. 

/etc/pam.d/ftp 에 보면 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/proftpd/conf/ftpusers onerr=succeed 
이렇게 있을 것이다. 위 라인이 없다면 추가한다. 

file=... 이 부부만 수정해 주면 된다. 

1.텔넷을 막고 싶으면 

/etc/pam.d/login 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/loginusers onerr=succeed 
위 라인이 없다면 추가한다. 
/etc/loginusers 파일을 만들어서 계정을 넣어주면 된다. 

2.ssh 도 할수 있다. 

/etc/pam.d/ssh 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed 

이렇게 설정해주고 계정을 집어 넣으면 된다..... 


'Server' 카테고리의 다른 글

ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06


R.U.D.Y DDoS


RUDY(R-U-DEAD-YET) 는 Post 메소드를 전송하여 서비스를 거부시기키는 DDoS 공격이다.
Content-Length를 매우 크게 설정하여 서버의 지연을 유발한다.

서버는 클라이언트의 HTTP Header에 Content-Length를 보고 그 길이만큼의 Content가 올 때까지 대기하고 있다. 이 점을 이용하여 초기에 길이를 크게 설정해놓고, Content는 일정한 간격으로 1byte씩 전송한다. 결국, 서버는 한 세션당 [Content-Length * Interval Seconds] 만큼의 지연시간이 발생한다.


아래는 실제 공격 패킷이다. Content-Length 가 매우 길게 설정되어 있고 연속된 A 문자를 찍고 있다.
이를 일정한 간격으로 1byte씩 보낸다고 생각해보자
서버는 표기된 전체 byte를 수신할때까지 계속 대기하게 된다.


:: 대응 방안

현재까지 알려진 차단 방법은 크게 두가지다.

- Content-Length 임계치를 두어 차단
- User-Agent 기준으로 차단 (특이값이 있을 경우)

'Security' 카테고리의 다른 글

FTP Active/Passive 정리  (0) 2017.01.06
ubuntu 환경에 SNORT & BASE & Metasploit 설치  (0) 2017.01.06
포트 스캐닝으로부터 OS 정보 숨기기  (0) 2017.01.06
slowloris 분석/대응방안  (0) 2017.01.05
윈도우 로그온 유형  (0) 2016.12.29

SlowLoris

GET 방식의 메소드는 헤더의 데이터 구분을 CRLF을 이용한다. 0D 0A 가 두번 들어가면 헤더의 끝을 나타내는데..
의도적으로 한번만 넣어서 헤더의 끝을 맺지 않음으로 서버는 헤더가 끝날때까지 지속적으로 기다리게 만든다.
익히 알려진 slowloris 공격 툴은 헤더에 X-a: b 를 전송하고 Content-Length가 42byte 라는 특징이 있다.

:: 공격에 취약한 서버
- Apache 1.x, 2.x, squid

:: 공격에 취약하지 않은 서버
- lighttpd, IIS6.0, IIS7.0, nginx, varnishd, J5K.

공격툴로 테스트를 해보면 아래와 같이 펜더가 나온다.


공격 진행중 패킷을 보면 CRLF(0d 0a) 를 한번만 보내 헤더의 끝을 맺지 않음을 알 수 있다.

slowloris의 특징인 Content_Length: 42 와 X-a: b 도 보인다.

이와 같이 공격을 수행하면 "X-a: b\r\n"의 불완전 헤더를 지속적으로 보내어 SYN->SYNACK를 반복하고 서버 측에서 FIN 패킷을 보내지 않아 계속 패킷을 기다리는 상태가 되어 결국 서비스 거부상태가 된다. 

apache의 경우 실제 공격시에는 로그가 남지 않으며 공격을 멈추면 아래와 같이 로그가 남는다.

# error_log

[error] server reached MaxClients setting, consider raising the MaxClients setting
failed: error reading the headers
failed: error reading the headers
failed: error reading the headers
failed: error reading the headers

# access_log

"GET / HTTP/1.1" 400 308
"GET / HTTP/1.1" 400 308
"GET / HTTP/1.1" 400 308
"GET / HTTP/1.1" 400 308 


:: 대응방안

-.  Timeout 설정 변경(가장 현실적인 방법)
     httpd.conf 에서  Timeout 300  ==> 5 이하로 변경 (5초동안 연속된 패킷이 오지 않을 경우 timeout시킴)

-. iptables의 connection limit(커넥션 제한) 설정
   # iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP




'Security' 카테고리의 다른 글

FTP Active/Passive 정리  (0) 2017.01.06
ubuntu 환경에 SNORT & BASE & Metasploit 설치  (0) 2017.01.06
포트 스캐닝으로부터 OS 정보 숨기기  (0) 2017.01.06
R.U.D.Y DDoS  (0) 2017.01.05
윈도우 로그온 유형  (0) 2016.12.29

+ Recent posts