'커넥션'에 해당되는 글 2건

  1. 2014.11.03 ‘푸들’ 취약점으로 본 웹 암호화 보안 위험성
  2. 2008.10.17 인커밍(incoming) MySQL 커넥션을 테이블에…
2014. 11. 3. 18:55

‘푸들’ 취약점으로 본 웹 암호화 보안 위험성

TLS 암호화기술, SSL과 하위 호환돼 푸들 공격 위험성 상존 

SSL 3.0 기술을 서버·브라우저에서 비활성화, 하위 호환 차단해야 

http://www.boannews.com/media/view.asp?idx=43838&kind=4


▲ ProxySGs의 기본 설정은 클라이언트에서 SSLv3 커넥션을 차단하도록 되어 있으며, SSL 구성 메뉴에서 관련 정책을 설정할 수 있다.


구글 소속 연구원들이 SSL 3.0 웹 암호화 기술의 취약점을 발견해 ‘푸들’(Padding Oracle On Downloaded Legacy Encryption, POODLE)이라 이름 짓고 보안관계자들에게 주의를 당부했다. SSL 3.0은 만들어진 지 18년이 다 된 기술로, 대부분의 브라우저와 웹사이트들이 사용하고 있다. 그러므로 이 기술의 보안취약점은 심각한 피해를 일으킬 수 있다.


▲ 클라이언트 SSLv3 해제 방법: ProxySG 사용자가 해당 프로토콜을 수용하는 서버에서 SSLv3 연결을 차단하기 위해서는 SSLv3 및 SSLv2를 거부하는 SSL 접근계층 (SSL Access Layer)을 생성하면 된다.


이 푸들 취약점은 암호화 통신 프로토콜 SSL 버전3에서만 존재한다. SSLv3는 1996년도에 SSLv2의 심각한 취약성을 해결하기 위해 처음 공개된 것으로 1999년 TLSv1로 대체됐다. 공식 최근 버전은 2008년 릴리즈 된 TLS 1.2이며, 현재 초안 작업이 이루어지고 있는 TLS 1.3 버전이 곧 공개될 예정이다. SSLv3는 15년의 기간을 거치며 복호화되었으나, 여전히 웹 서버의 98%는 이를 지원하고 있는 상황이다.


블루코트에서는 당분간 SSLv3 사용을 중지하라고 권고하고 있다. ProxySGs의 기본 설정은 클라이언트에서 SSLv3 커넥션을 차단하도록 되어 있으며, SSL 구성 메뉴에서 관련 정책을 설정할 수 있다.




출처 : 보안뉴스


Trackback 0 Comment 0
2008. 10. 17. 11:01

인커밍(incoming) MySQL 커넥션을 테이블에…

- 원문은 http://www.futhark.ch/mysql/143.html 에 있음

MySQL 5.1에서는 일반적인 쿼리 로그를 테이블에 저장할 수가 있다. 하지만 만약에 모든 단일 명령문을 로그하는 대신에 단지 로깅을 하는 사용자 및 접속을 하는 호스트만 로그 하고자 할 경우에는 어떻게 해야 하는가? 이번 컬럼에서는 위의 문제를 간단하게 해결할 수 있는 방법을 설명하기로 한다. 이 해법은 MySQL 5.0에서도 실행할 수 있으며, 약간의 변경만 하면 이전 버전에서도 실행 시킬 수가 있다.

이에 대한 해결책은 바로 로깅 루틴을 설치하는 도구로 init_connect 서버 변수를 사용하는 것이다. init_connect 변수는 커넥션되는 각 클라이언트(SUPER 사용자는 제외)를 위해 실행되는 SQL 명령문을 가지고 있다.

우선, 커넥션 로그(connecting log)를 보관하기 위한 데이터 베이스와 테이블을 하나씩 생성한다. 새로운 데이터 베이스 sys를 아래와 같이 생성한다.

CREATE DATABASE IF NOT EXISTS sys;

CREATE TABLE sys.connection_log (
log_id INT UNSIGNED NOT NULL auto_increment,
login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
connection_id INT(10) NOT NULL,
user_id VARCHAR(255) NOT NULL,
PRIMARY KEY (log_id),
KEY (user_id)
);

로그 엔트리를 주문(order)하기 위해서는 auto_increment 컬럼이 필요한데, 그 이유는 TIMESTAMP만으로는 불충분하고 CONNECTION_ID()는 서버가 재 시작(restart)되면 리셋(reset)되어 버리기 때문이다.

다음으로는, 커넥션 정보를 로그에 기록하는 간단한 루틴을 설치한다. CREATE 명령어는 루트(root)로 실행하거나 또는 sys.connection_log 테이블에 INSERT 권한을 가진 사용자로 실행하는 것이 좋다.

delimiter //

CREATE PROCEDURE sys.init_connect()
SQL SECURITY DEFINER
MODIFIES SQL DATA DETERMINISTIC
BEGIN
INSERT INTO connection_log
(connection_id, user_id)
VALUES (CONNECTION_ID(), USER());
END //

delimiter ;

SQL SECURITY를 DEFINER에 설정함으로써, 일반 사용자로부터 오는 로깅 시스템의 모든 내부 정보는 숨길 수가 있게 된다. 우리가 원하는 것은 단지 모든 사용자에게 새로운 데이터 베이스 sys상에서의 글로벌 실행 권한만을 주는 것이다.

REPLACE INTO mysql.db
(Host, Db, User, Execute_priv)
VALUES ('%', 'sys', '', 'Y');

FLUSH PRIVILEGES;

로깅을 활성화 시키기 위해서는, 우리가 사용한 루틴을 init_connect 변수에 연결(hook)하기만 하면 된다:

SET GLOBAL init_connect = 'CALL sys.init_connect()';

만일 서버가 리부팅(rebooting)될 때에도 커넥션 로깅 정보가 남아 있도록 하고자 한다면, 이 설정 내용을 my.cnf 파일에 추가하면 된다:

[mysqld]
init_connect = 'CALL sys.init_connect()'

이와 같이 하면, 모든 커넥션(connection)은 로그가 된다.
실무에 많은 도움이 되시길……….

Trackback 0 Comment 0