완전히 업데이트된 CentOS 7을 실행하고 있으며 Fail2Ban을 작동시키려고 하는데 문제가 발생했습니다.
특히 무차별 SSH 공격을 방지하려고 노력하고 있습니다. 나는 모든 것이 올바르게 설정되었다고 확신합니다. sshd는 감옥에서 활성화되고 비활성화 작업 jail.local
으로 사용되며 firewallcmd-ipset
SELinux가 아닌 Firewalld를 사용합니다.
하지만 Fail2Ban을 실행하면 다음과 같이 표시됩니다 /var/log/fail2ban.log
.
2017-06-21 06:11:44,186 fail2ban.server [3357]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
2017-06-21 06:11:44,186 fail2ban.database [3357]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2017-06-21 06:11:44,188 fail2ban.jail [3357]: INFO Creating new jail 'sshd'
2017-06-21 06:11:44,206 fail2ban.jail [3357]: INFO Jail 'sshd' uses systemd {}
2017-06-21 06:11:44,230 fail2ban.jail [3357]: INFO Initiated 'systemd' backend
2017-06-21 06:11:44,232 fail2ban.filter [3357]: INFO Set maxRetry = 3
2017-06-21 06:11:44,232 fail2ban.filter [3357]: INFO Set jail log file encoding to UTF-8
2017-06-21 06:11:44,233 fail2ban.actions [3357]: INFO Set banTime = 86400
2017-06-21 06:11:44,233 fail2ban.filter [3357]: INFO Set findtime = 3600
2017-06-21 06:11:44,234 fail2ban.filter [3357]: INFO Set maxlines = 10
2017-06-21 06:11:44,320 fail2ban.filtersystemd [3357]: INFO Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2017-06-21 06:11:44,335 fail2ban.jail [3357]: INFO Jail 'sshd' started
2017-06-21 06:11:44,864 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stdout: ''
2017-06-21 06:11:44,865 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stderr: '\x1b[91mError: COMMAND_FAILED\x1b[00m\n'
2017-06-21 06:11:44,865 fail2ban.action [3357]: ERROR ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- returned 13
2017-06-21 06:11:44,865 fail2ban.actions [3357]: ERROR Failed to start jail 'sshd' action 'firewallcmd-ipset': Error starting action
보시다시피, firewall-cmd
시도해 보기 전까지는 모든 것이 순조롭게 진행될 것입니다. 실행하려는 명령은 다음과 같습니다.
ipset create fail2ban-sshd hash:ip timeout 86400
이어서
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
이 명령을 직접 실행하려고 하면 ipset
명령은 제대로 작동하지만 firewall-cmd
명령이 반환됩니다 Error: COMMAND_FAILED
. 따라서 Fail2Ban이 보내려고 하는 명령에 문제가 있는 것 같습니다 firewall-cmd
. 하지만 Firewalld에 대해 충분히 알지 못합니다. 그것을 해결하기 위해.
(아, 그리고 SSH는 포트 44에 있습니다. 왜냐하면 드라이브 바이 공격을 크게 줄여주기 때문입니다. 따라서 장단점에 대해서는 다루지 않겠습니다!
또한 systemctl status fail2ban
보고된 문제 없이 모든 것이 원활하게 실행되는 것으로 보입니다. 저는 로그인할 때만 이 사실을 알았고 포트가 변경되었기 때문에 로그인 시도에 실패한 경우가 많았습니다.
반환 되었으므로 이것이 OpenVZ 문제가 아니라고 확신합니다. 이 문제의 원인은 다른 곳에서 언급한 것입니다 uname -r
. 3.10.0-229.14.1.el7.centos.plus.x86_64
)
답변1
faqforge.com에서:https://www.faqforge.com/linux/how-to-use-iptables-on-centos-7/
Centos 7은 Firewalld 서비스를 사용하여 기존 IPTables Linux 커널 방화벽을 대체합니다. IPTable을 사용해야 하는 스크립트가 여전히 많이 있습니다. 일반적인 예는 소프트웨어 Fail2ban입니다.
따라서 Firewalld( systemctl stop firewalld
)를 중지하고 iptables( yum install iptables-services
) 및 systemctl start iptables
.
그런 다음 다음과 같이 금지를 설정하십시오 jail.local
.
banaction = iptables-multiport
banaction_allports = iptables-allports
그런 다음 다시 시작하십시오.