QA 환경에서 사용해야 합니다 iptables
. 원격으로 변경해야 합니다. 일부 변경 사항에는 SSH
소수의 네트워크 비활성화도 포함됩니다.
SSH
어떤 이유로 서비스가 차단된 경우 호스트를 재부팅하지 않고 액세스를 복원할 수 있도록 따라야 할 모범 사례는 무엇입니까 ?
제가 계획하고 있는 몇 가지 사항은 다음과 같습니다.
chkconfig iptables off
이는 호스트를 재부팅할 필요가 없어 iptables
부팅이 실패하는 것을 방지하기 위한 것입니다.
그런데 이건 호스트를 재부팅할 때 호스트를 재부팅하지 않고도 복구가 가능하도록 뭔가를 찾고 있는 중입니다. 그런데 console
서버에서는 작동하지 않습니다.
어떤 제안이 있으십니까?
답변1
그것이 iptables-apply
목적입니다. ~에서매뉴얼 페이지:
iptables-apply will try to apply a new rulesfile (as output by
iptables-save, read by iptables-restore) or run a command to configure
iptables and then prompt the user whether the changes are okay. If the
new iptables rules cut the existing connection, the user will not be
able to answer affirmatively. In this case, the script rolls back to
the previous working iptables rules after the timeout expires.
기본 시간 제한은 10초입니다. 이 시간이 너무 짧은 경우 --timeout 30
30초 후에도 확인이 수신되지 않으면 규칙을 재설정 하도록 변경할 수 있습니다 .
답변2
INPUT
이와 같은 작업에 대해 제가 일반적으로 취하는 접근 방식은 기존 관리 연결을 명시적으로 허용하는 체인의 시작 부분에 안전 장치 규칙이 있는지 확인하는 것입니다 . 이렇게 하면 연결을 차단할 수 있는 후속 규칙이 현재 규칙에 영향을 미치지 않게 됩니다. 모든 규칙을 마련한 후 허용되어야 하는 두 번째 연결로 테스트했지만 이는 안전 장치 규칙과 일치하지 않습니다. 작동한다면 원래 세션의 연결을 안전하게 끊고 비상 안전 규칙을 제거할 수 있다는 것을 알고 있습니다.
예를 들어, 192.168.0.0/16(192.168.2.0/24 제외)에서 SSH를 허용하려고 하고 현재 192.168.22.22에서 서버에 연결하고 있다고 가정해 보겠습니다. 오타를 방지하려면 다음과 같이 규칙을 설정할 수 있습니다.
iptables -I INPUT -p tcp -s 192.168.22.22 --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j LOG
iptables -A INPUT -p tcp -s 192.168.2.0/24 --dport 22 -j DROP
iptables -A INPUT -p tcp -s 192.168.0.0/16 --dport 22 -j ACCEPT
이 경우 첫 번째 규칙을 -I
체인의 맨 처음에 삽입하고, 다른 규칙을 -A
체인 끝에 추가하도록 추가합니다. 귀하의 규칙은 이보다 더 복잡할 수 있지만 중요한 점은 안전 장치 규칙이 최우선인지 확인하는 것입니다. 이렇게 하면 실수로 두 번째 줄에 192.168.22.0/24를 입력하더라도 안전 장치 줄이 먼저 일치하므로 액세스가 유지됩니다.
192.168.0.0/16과 192.168.22.22 또는 192.168.2.0/24 사이에서 연결을 시도하여 규칙을 테스트합니다. 결과가 무엇이든 기록되어야 합니다 /var/log/kern.log
. 연결이 실패하면 추가 작업이 필요하다는 것을 알 수 있습니다. 또한 로그는 실패의 원인을 파악하는 데 도움이 될 수 있습니다.
테스트가 성공하면 비상 안전 규칙을 안전하게 삭제할 수 있습니다.
iptables -D INPUT -p tcp -s 192.168.22.22 --dport 22 -j ACCEPT