나는 최근 보안 유지 관리를 하기로 결정했습니다. 내 로그를 보고 SSH 서버로 몇 가지 작업을 시도했습니다. 먼저 SSH 포트를 기본 22에서 옮겼습니다. 그 후 나는 다음과 같은 내용을 읽었습니다.실패 2 금지,블록 호스트그리고호스트 거부.
첫 번째 항목을 살펴보았습니다. 구성은 간단하고 모든 것이 이해하기 쉽습니다. 그러나 "보호 기능을 탐색"하려고 하면테스트 실패. 모든 것이 괜찮은 것 같지만 여전히 서버에 액세스할 수 있습니다.
또한 IPtables도 테스트했습니다. # iptables -I INPUT -j DROP
- 그 후 SSH 연결이 끊어졌습니다(그래서 제가 원했던 것입니다). 그러면 # iptables -I INPUT -s 84.x.y.z -j DROP
이것도 효과가 있었습니다.
하지만 Fail2ban이 만든 규칙은 작동하지 않습니다 :( $ sudo iptables -L
)
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-apache tcp -- anywhere anywhere multiport dports www,https
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
fail2ban-ssh-ddos tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-apache (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all -- 84.x.y.z anywhere
RETURN all -- anywhere anywhere
Chain fail2ban-ssh-ddos (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
로드된 커널 모듈: $ lsmod | grep ip
( )
iptable_nat 4680 0
nf_nat 15576 1 iptable_nat
nf_conntrack_ipv4 12268 3 iptable_nat,nf_nat
nf_conntrack 55540 4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport 2816 2
iptable_filter 2624 1
ip_tables 10160 2 iptable_nat,iptable_filter
x_tables 13284 5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6 235396 24
버전:
- 데비안 레니 5.06, 커널 2.6.26-2-686
- IP 테이블 1.4.2-6
- Fail2ban 0.8.3-2sid1
openssh-server
1:5.1p1-5
단계별 테스트 #1:
- 낮은 금지 시간에 대해 Fail2ban을 구성합니다. 60초. 그런 다음 다시 로드하세요.
- 잘못된 비밀번호로 직접 로그인해 보세요(SSH 사용).
- 6번째에 올바른 비밀번호를 입력하세요(최대 시도 횟수는 4회입니다). 로그인했습니다. 해당 서버에서 호스팅되는 웹페이지에 액세스할 수도 있습니다.
iptables -L
위에서 언급한 대로 보여주세요. 따라서 서버에 연결하고 명령을 내리면 금지가 적용됩니다.
단계별 테스트 #2:
- Fail2ban을 중지하십시오.
at
앞으로 아래에 작성된 금지 규칙을 제거하려면 스크립트를 작성하십시오 . (iptables -D INPUT 1
) - 차단 규칙을 만듭니다.
iptables -I INPUT 1 -s 84.x.y.z -j DROP
- 다른 것을 입력할 수 없고 SSH 연결이 작동하지 않습니다. 이 페이지에 접근할 수 없습니다. 그렇다면 iptables에서 내가 원하는 것은 무엇입니까?
- 스크립트가 완료되면
at
내 서버에 액세스할 수 있습니다.
해결책이 보이지 않습니다. IPtables 금지(Fail2ban에서 수행)를 작동시키려면 어떻게 해야 합니까?
답변1
Fail2ban을 설치하기 전에 문제를 발견했는데 어떻게 했나요? 시간을 잡아먹어서 죄송합니다.
보안상의 이유로 sshd를 포트 22에서 다른 포트로 옮겼습니다. 의 참조는 iptables
포트 22만 참조합니다. 제 생각에는 항상 현재 sshd 포트를 참조하는 변수인 것 같습니다. 하지만아니요.
정확한 해결 방법(데몬을 원래 포트에서 멀리 이동하는 경우):
- Jail.local(또는 .conf)을 엽니다.
- 귀하의 서비스를 찾으십시오(중괄호 안).
- 이
port
부분을 수정하여모두. 예:port = all
banaction
값이 있는 포트 줄 뒤에 기존 줄을 추가하거나 편집합니다.iptables-모든 포트. 예:banaction = iptables-allports
.- 데몬을 다시 시작하십시오. 예:
# service fail2ban restart
.
port ssh
지시문을 변경하거나 거기에 숫자를 쓰는 솔루션을 찾을 수 없습니다 . 완전히 포팅되지 않은 솔루션이 있다면 들어보겠습니다!
답변2
SSH 서버를 비표준 포트 12345(예:)로 옮긴 후 오류2반이 이를 금지하지 않는 것과 동일한 문제가 있었습니다.
여러 번의 인증 시도 실패 후 실패2반이 올바른 규칙을 생성하도록 하기 위해 /etc/fail2ban/jail.conf
.
port = ssh
입력하다
port = 12345
비표준 포트의 다른 서비스에도 비슷한 접근 방식이 작동할 것이라고 생각합니다.
답변3
Fail2ban에 대한 설정은 /etc/fail2ban/jail.local
기본 설치에 있는지 확실하지 않습니다. 그런 다음 당신이 해야 할 일은 복사하여 jail.conf
두 jail.local
개의 파일을 갖게 되는 것입니다 /etc/fail2ban/
. 편집하고 jail.local
이를 포함하는 줄로 이동하여 [ssh]
다음과 같이 활성화합니다.
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
그 후, fall2ban을 다시 시작하세요:
sudo /etc/init.d/fail2ban restart
지금은 작동할 수도 있습니다. 이렇게 설정했는데 작동합니다.
답변4
"Fail2ban 0.8.3-2sid1"이 설치된 것으로 나열됩니다. 이는 지원되지 않는 구성입니다. Sid 패키지는 안정적인 환경에 설치하면 안 됩니다.
저는 홈 SSH 서버 역할을 하기 위해 특별히 Lenny에서 업그레이드한 가상 머신에서 Debian 6(Squeeze)을 실행하고 있습니다. 저도 Fail2ban을 사용하고 있습니다. 테스트 #1을 실행했는데 모든 것이 예상대로 작동했습니다. 최대 시도 횟수 내에 로그인에 실패하여 60초 동안 로그인 요청이 중단되었습니다.
내 버전 목록:
- /etc/debian_version=6.0.1
- 실패 2 금지됨 = 08..4-3
- iptables = 1.4.8
- openssh-서버=1:5.5p1-6