ssh, ftp, smtp 등 무작위로 로그인 시도를 할 경우 서비스를 보호하기 위하여 fail2ban 을 사용하여 접속을 차단합니다.
#yum install fail2ban-firewalld fail2ban-systemd
설치 후 설정 파일을 생성합니다.
#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.local 파일의 경우 jail.conf 설정의 내용 중 중복되는 부분을 overwrite 하는 역할을 합니다. 하지만 yum 등의 패키지 매니저를 통한 업데이트가 발생할 경우 conf 파일은 교체되니 복사하여 local 파일을 생성합니다. DEFAULT 에 기본 설정을 지정하고 적용하고자하는 서비스에 enabled = true 를 추가하면 됩니다.
[DEFAULT]
bantime = 3600 # 1시간 동안 차단
findtime = 600 # 10분 이내의 로그 데이터로 검사
maxretry = 5 # 5회 이상 로그인 실패시
backend = polling
destemail = 이메일주소
mta = mail
banaction = firewallcmd-multiport
banaction_allports = firewallcmd-allports
[sshd]
enabled = true[sshd-ddos]enabled = true
[postfix]
enabled = true[postfix-rbl]enabled = true
[dovecot]
enabled = true
[postfix-sasl]
enabled = true
fail2ban 을 재실행하고 확인합니다.
#systemctl restart fail2ban
#fail2ban-client status
차단된 IP 를 풀어줄 경우,
(dovecot 에서 x.x.x.x IP를 차단해제)
#fail2ban-client set dovecot unbanip x.x.x.x
특정 IP를 항상 차단 하지 않을 경우,
vi /etc/fail2ban/jail.local 에 추가함
ignoreip = 127.0.0.1/8 x.x.x.x
SMTP 인증을 계속 시도하는 경우...
vi /etc/fail2ban/filter.d/posfix-sasl.conf 을 생성합니다. 이때 [postfix-sasl] 에서 enabled = true 여야 합니다.
[INCLUDES]
before = common.conf
[Definition] _daemon = postfix/smtpd
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
nginx-req-limit 필터가 존재합니다.
[nginx-limit-req]
enabled = true
nginx 의 설정은 다음과 같이 합니다.( /aaa/bbb 경로의 경우 1초에 1회만 200 응답하고 그 이상은 403 반환합니다.)
limit_req_zone $binary_remote_addr zone=protect:10m rate=1r/s;
....
location /aaa/bbb {
limit_req zone=protect
limit_req_status 403;
...
}
limit_conn 의 경우 대용량 파일을 전송하는 도중에 또 다른 대용량 파일을 동시에 요청할 경우 사용하면 됩니다.
반응형
'서버 > 리눅스' 카테고리의 다른 글
zsh 사용하기 (0) | 2020.03.10 |
---|---|
CentOS 7 SELinux 사용 (0) | 2020.03.04 |
CentOS 7 방화벽 설정 (1) | 2019.06.04 |
간단한 보안 검사하기 (0) | 2019.05.30 |
CentOS7, 아마존 리눅스 Let's Encrypt 무료 인증서 사용하기 (0) | 2018.06.18 |
댓글